| 
    
     |  | ▼年寄り さん: こんにちは。
 
 >久しぶりに訪れました。いつもお世話になっております。今回もよろしくお願いいたします。
 >
 >UserForm上でなく、Sheet上にあるコントロールを取得したい。例えばCommandButtonのCaptionを変更するとか、そのCommandButtonにSetFocusするとか。
 
 これは、ツールバー「コントロールツールボックス」にあるボタンのことだと
 思ってよろしいですね!!
 
 例えば、Sheet1というシートにCommandButton1というコマンドボタン配置した場合、
 
 標準モジュールに
 
 '==============================================
 Sub test()
 With Worksheets("sheet1")
 With .CommandButton1
 .Caption = "時刻  " & Format(Now(), "hh:mm:ss")
 .Activate
 End With
 End With
 End Sub
 
 というコードで
 
 >Captionを変更するとか、そのCommandButtonにSetFocusするとか。
 
 は実現できます。
 
 でも同じ標準モジュールでも
 
 Sub test2()
 Dim sht As Worksheet
 Set sht = Worksheets("Sheet1")
 With sht
 With .CommandButton1
 .Caption = "時刻  " & Format(Now(), "hh:mm:ss")
 .Activate
 End With
 End With
 End Sub
 
 というようにワークシートオブジェクトを変数に置き換えると、
 「データメンバーが見つかりません」というエラーになります。
 でも、このように変数で扱う場合ってよくありますよね?
 
 
 Sub test3()
 Dim sht As Worksheet
 Set sht = Worksheets("Sheet1")
 With sht
 With .OLEObjects("CommandButton1")
 .Object.Caption = "時刻  " & Format(Now(), "hh:mm:ss")
 .Activate
 End With
 End With
 End Sub
 
 このようにOleobject ととして、処理するとオブジェクト変数でも処理できます。
 
 両方とも覚えて置いてください。
 
 |  |