人に聞けない痔の悩み、これでスッキリ >>

数日前、このカテゴリで相談した事の続きです。
以前の相談は、次の通りです。
http://oshiete.goo.ne.jp/qa/8892460.html

この相談の中で出来たことは

1 ユーザーフォームを保存終了
2 Worksheet上にボタンを作成、そのボタンをクリックでユーザーフォームを表示

以上のことはできました。

作成したコードは次のとおりです。

 
'//
Private Sub UserForm_Initialize()
With Worksheets("Sheet1")
 TextBox1 = .Cells(1, 1).Value
 TextBox2 = .Cells(2, 1).Value
TextBox3 = .Cells(3, 1).Value
TextBox4 = .Cells(4, 1).Value
TextBox5 = .Cells(5, 1).Value

).Value
End With
End Sub

Private Sub UserForm_Terminate()
With Worksheets("Sheet1")
 .Cells(1, 1).Value = TextBox1
 .Cells(2, 1).Value = TextBox2
.Cells(3, 1).Value = TextBox3
.Cells(4, 1).Value = TextBox4
.Cells(5, 1).Value = TextBox5

End With
End Sub
'//


Private Sub cmdsyuuryo_Click()
Unload Me
End Sub


Private Sub UserForm_Click()
Myform.Show vbModeless
End Sub


そこで質問です。
現在Worksheet上にボタンを作成、クリックしてユーザーフォームを表示しているの
を、WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォー
ムを表示する方法はありませんか?
ユーザーフォームの保存先は「Sheet1」のA1からA5までです。
できれば、この設定で具体的なコードの記述をお願いします。
Excel2013です。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。


言葉で伝えるのは難しいですね。

>シート・タブを右クリックして、メニューの中の「コードの表示」で表示されるモジュールの中に
>
>Private Sub UserForm_Click()
> Myform.Show vbModeless
> End Sub

少なくとも、このプログラムは、生きていないはずです。
このプログラムは、UserFormモジュール上で動くものですが、UserFormが二つないと、コードの論理的な矛盾があります。

>これは、UserForm1 の部分を Myform に変更すればいいということでしょうか?
違います。

Myformが、UserFormのオブジェクト名なら、以下のようにするということです。

以下が、イベント・ドリブン型のプログラムです。
これを、シートモジュールに貼り付けてください、ということです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
 Myform.Show vbModeless 
End If
End Sub
    • good
    • 0

こんにちは。



>自分が設定しているオブジェクト名に変更してシートモジュールに貼り付けて、WorksheetのA1をクリックしてもユーザーフォームが表示されません。

その場合は、起動していたコマンド・ボタンがありますよね。
その起動した中のコードをそっくり、*の部分に置き換えればよいです。

If Target.Address(0, 0) = "A1" Then
 '*UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。
End If

他に思い当たる所というと、「'//シートモジュールに貼り付けてください。」というのは、
そのデータのあるシートのシート・タブを右クリックして、メニューの中の「コードの表示」で出てきたモジュールのことです。今の所、コマンド・ボタンで起動できるかぎりは、思い当たる場所がありません。

試してみてください。

この回答への補足

再度の回答ありがとうございます。
確認のためお聞きします。

>その場合は、起動していたコマンド・ボタンがありますよね。

このコマンドボタンというのは、今使っている、ボタンからユーザーフォームを表示させるボタンの事ですね。
このボタンのマクロは、「開発」→「マクロ」の画面で表示される マクロ名は ShowUserForm で、「編集」クリックで表示されるのは

Sub ShowUserForm()
Myform.Show vbModeless
End Sub

となっています。
また、シート・タブを右クリックして、メニューの中の「コードの表示」で表示されるモジュールの中に

Private Sub UserForm_Click()
Myform.Show vbModeless
End Sub

という記述があります。

>'*UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。

これは、UserForm1 の部分を Myform に変更すればいいということでしょうか?

Myform と変更してもA1のクリックでユーザーフォームは表示しません。
また、「コードの表示」で表示される記述の順番、削除しなければならない記述はありますか?
よろしくお願いします。

補足日時:2015/01/20 13:16
    • good
    • 0

こんにちは。



>WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォームを表示する

こういうことでしょうか?

'//シートモジュールに貼り付けてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
 UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。
End If
End Sub

'おまけ。A1右クリックで、ユーザーフォームをアンロード
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 Cancel = True
 If Target.Address(0, 0) = "A1" Then
  If UserForms.Count > 0 Then
   Unload UserForm1 '必要に応じて、UserFormのオブジェクト名を換えてください。
  End If
 End If
End Sub
'//

この回答への補足

回答ありがとうございます。

>UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。

自分が設定しているオブジェクト名に変更してシートモジュールに貼り付けて、WorksheetのA1をクリックしてもユーザーフォームが表示されません。
私の設定の仕方が間違っているのでしょうか?
よろしくお願いします。

補足日時:2015/01/19 19:10
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング