| 
    
     |  | こんばんは。 >テキストボックスの表示方法について悩んでおります。
 ↑これがご質問の主題だと思っていました。
 よって、そのプログラムは、ユーザーフォームというオブジェクトのモジュール内に
 SetTXt1というインターフェース(プロパティ)を追加してテキストボックスにデータを設定すればよい という投稿でした。インターフェースも
 
 >With userform1
 >  .SetTxt1=Worksheets("シート2").range("a1").value
 >  .Show
 >End with
 
 ↑このような使用方法で と記述しました。
 
 >【プロパティ名】とは【オブジェクト名】のことでよろしいのでしょうか。
 違います。Excel/VBAは、主にExcelをオブジェクトというユニットに分けられ、
 そのオブジェクトを操作することでプログラムを作成します。
 それぞれのオブジェクトは、プロパティとメソッドという手続き(インターフェース)を
 使って、操作します。
 
 例えば、
 Range(“A1”).Value=123
 は、RangeオブジェクトのValueプロパティを使って、セルA1に値123を設定しています。
 
 又、
 Range("A1").Copy Range("B1")
 は、RangeオブジェクトのCopyメソッドを使って、セルA1をコピーし、セルB1に貼り付けています。
 
 プロパティは、主にオブジェクトの性質を指定したり、取得するインターフェース、
 メソッドは、オブジェクトの動作を指定するインターフェースですが、実際には、プログラムの書式の指定によるところはあり、プロパティとメソッドの位置付けがあいまいなものもあります。
 
 で、今回の対象のオブジェクトは、テキストボックス(仮にTextBox1)を貼り付けたユーザーフォーム(仮にUserForm1)ですね。つまり、taroさんは、UserForm1という独自オブジェクトを作成していることになります。そして、前回の投稿では、そのUserForm1という独自オブジェクトにSetTxt1 というプロパティを
 独自に設定してみてはいかがですか? という提案でした。
 
 例えば・・・・、新規ブックにユーザーフォーム(UserForm1)を作成してください。
 
 このUserForm1には、テキストボックス(TextBox1)を一つ貼り付けてください。
 
 このUserformのモジュール(この場所は、自分で調べてください)に
 
 Option Explicit
 Property Let SetTxt1(ByVal myvalue As Variant)
 TextBox1.Value = myvalue
 End Property
 
 
 次に標準モジュール(Module1)に
 
 Option Explicit
 Sub test()
 Range("a1").Value = "ichinose"
 With UserForm1
 .SetTxt1 = Range("a1").Value
 .Show
 End With
 End Sub
 
 標準モジュールの作成は、VBEにて、「挿入」----「標準モジュール」とクリックすれば作成されます。
 
 以上ですが、UserForm1のモジュールに
 
 Property Let SetTxt1(ByVal myvalue As Variant)
 TextBox1.Value = myvalue
 End Property
 
 というインターフェースを追加すれば、どのプログラムからも
 With UserForm1
 .SetTxt1 = Range("a1").Value
 .Show
 End With
 
 という呼び出しを行えば、UserForm1のテキストボックスに指定されたデータを設定できるということです
 
 分からないところは、ここだと思ったので上記の記述をしたのです。
 
 
 >シート2上に入力した数値 仮にA1セルに1、B2セルに2が入力してあるとします。
 >
 >それをシート1のA2をクリックしたときに【1】を、C1をクリックしたときに【2】を作成したユーザーフォーム上のテキストボックスを出現させ表示させたいのですがどうすればいいでしょうか
 
 この質問を二つのポイントに分けると、
 
 1 シートをクリックしたときにプログラムを起動させる方法
 
 2 テキストボックスに指定したデータを表示させる方法
 
 です。
 
 2については、記述した通りです。
 
 
 1は・・・、
 
 Excelのオブジェクトの中には、オペレータの操作をきっかけに作動するプログラムが用意されているものがあります。この操作をイベントと呼び、実行されるプログラムをイベントプロシジャーと呼んでいます。
 
 セルをクリックした時のイベントはないので、セルをダブルクリックした時のイベントを利用してみてはいかがですか?
 
 シート1のモジュールに以下のコードを記述してみてください
 (シート1のモジュールは、シート1のタブにマウスを合わせ、その状態で右クリック---コードの表示 とクリックし、表示されたモジュールです)。
 
 
 Option Explicit
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Address = Range("A1").Address Then
 MsgBox "A1がダブルクリックされました"
 Cancel = True
 ElseIf Target.Address = Range("C1").Address Then
 MsgBox "C1がダブルクリックされました"
 Cancel = True
 End If
 End Sub
 
 上記のコードは、セルA1をダブルクリックすれば、
 
 「A1がダブルクリックされました」と表示し、C1をダブルクリックすれば、
 「C1がダブルクリックされました」と表示するコードです。
 
 
 これで1も解決ですよね!!
 
 
 方法が分かれば、仕様に合わせて
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 というプロシジャーを修正してください。
 
 
 |  |