Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40506 / 76732 ←次へ | 前へ→

【41324】Re:シート上のコントロール
発言  ichinose  - 06/8/5(土) 16:21 -

引用なし
パスワード
   ▼年寄り さん:
こんにちは。

>久しぶりに訪れました。いつもお世話になっております。今回もよろしくお願いいたします。
>
>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 ととして、処理するとオブジェクト変数でも処理できます。

両方とも覚えて置いてください。
1 hits

【41323】シート上のコントロール 年寄り 06/8/5(土) 15:10 質問
【41324】Re:シート上のコントロール ichinose 06/8/5(土) 16:21 発言
【41325】Re:シート上のコントロール 年寄り 06/8/5(土) 16:48 お礼

40506 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free