
No.8ベストアンサー
- 回答日時:
こんばんは。
ここのサイトは、他人の書いた内容については触れてはいけないのがルールですが、#6 さんのコードのエラーは、そのままになっているようですから、失礼させていただきます。
理由は、CommandButton も OleObjects も、親オブジェクトが省略されています。本来、CommandButton など、コントロールツールもフォームツールも省略してはいけないのですね。もし、コードが通るとしたら、それは、Option Explicit を入れていないからです。
With ActiveSheet
On Error GoTo ErrMsg
.CommandButton1.Activate '最初に「.」を付けてください。
MsgBox "CommandButtonをActivate しました", vbInformation
End With
Exit Sub
ErrMsg:
MsgBox Err.Description
No.5
- 回答日時:
こんにちは。
通常、特定のオブジェクトを探すわけでないときには、このように、TypeOf を使います。
なお、Excel VBAの場合は、Null値は、特別な値で、Variant 型に特別に入れないと存在しません。オブジェクト型には、Null値は存在しません。Access のコントロール・オブジェクトの一部のプロパティに、値がない場合に、Null値がありますが、Excel VBAには、そのような仕様はありません。
'-----------------------------------------
Sub Test1()
Dim shp As Object
Dim flg As Boolean
For Each shp In ActiveSheet.OLEObjects
If TypeOf shp.Object Is MsForms.CommandButton Then
flg = True
Exit For
End If
Next shp
If flg Then
MsgBox "CommandButton はありました。", vbInformation
Else
MsgBox "CommandButton は見当たりません。", vbExclamation
End If
End Sub
No.4
- 回答日時:
#3ですが、補足いたします。
CommandButton1,2,3...というのは、エクセルお仕着せの名前ですが、これは任意に変更できます。「実行ボタン」なんて名前にも変更可能です。ですから、他人が作ったブックや、過去の自分が作ったブックに、コマンドボタンがあるかどうかの判断に、Nameを使うのは確実ではないと思います。という訳で、下記を提案します。(これはシートモジュールに書いたコードです。標準モジュールの場合は、Meの所を適当なシートに変更して下さい)
Sub test3()
Dim shp As Shape
Dim findFlag As Boolean
For Each shp In Me.Shapes
If shp.Type = msoOLEControlObject Then
If shp.DrawingObject.ProgId = "Forms.CommandButton.1" Then
findFlag = True
MsgBox "コマンドボタン" & vbCrLf & shp.Name & vbCrLf & "がありました"
End If
End If
Next shp
End Sub
No.3
- 回答日時:
ワークシートにコマンドボタンを1個設置して、シートモジュールに、
Sub test()
Stop
End Sub
なんてコードを記述して実行し、ローカルウィンドウを表示させて眺めていると、色々分かってきます。
Sub test2()
Dim shp As Shape
For Each shp In Me.Shapes
Debug.Print shp.Type '-> 12 : msoOLEControlObject
Debug.Print shp.Name '->CommandButton1 但し、任意に変更できる
Debug.Print shp.DrawingObject.ProgId '->Forms.CommandButton.1
Next shp
End Sub
shp.DrawingObject.ProgIdが使えそうですがいかがでしょうか。ただし、普通のシェイプだとエラーになりますので、shp.typeが12で無いときはアクセスしない様なコードにする必要があります。
当方XL2000です。
No.2
- 回答日時:
ある事態が有るかどうかの判定は、VBAの並みの経験では難しい。
何処かで1つ1つ経験を積みマネをするよりほか無い。いっぱい有るし。例 条件付貴所式が有るか、非表示のシートがあるか、フィルターモードかなど色々。
普通は表の勉強から入るし。
例コマンドボタンの貼り付け方から勉強する。
本件は貼り付けて有るかどうかの判定
表と裏のような関係だが、1つ1つ判定のコードの型が違うように思う。
ーー
ツールバーのコントロールのコマンドボタンの例です。
1方法として
Sub test01()
n = Worksheets("Sheet1").OLEObjects.Count
MsgBox n
If n <> 0 Then
For i = 1 To n
MsgBox TypeName(Worksheets("Sheet1").OLEObjects(i))
MsgBox Worksheets("Sheet1").OLEObjects(i).OLEType
MsgBox Worksheets("Sheet1").OLEObjects(i).Name
Next i
Else
MsgBox "在りません"
End If
End Sub
ーー
上記ののWorksheets("Sheet1").OLEObjects(i).Name
の左から13文字がCommandButtonであるか判定する。
最終・肝心のIF文は省略しているので入れてください.
IF Left(Worksheets("Sheet1").OLEObjects(i).Name,13)=
"CommandButton" Then
MsgBox "在ります"
End If
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) Excel ファイルを指定し、指定されたファイル内にシートを統合するVBA 8 2023/07/10 10:09
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- レトロゲーム ↓アケコンのレバーとボタンを交換してネオジオ(MVS)カラーにしてみました。 どうですか?どう思いま 2 2022/11/21 18:51
- Android(アンドロイド) AQUOS sense6sの物理ボタン(アシスタントキー)に再生・一時停止を割り当てる方法 2 2022/08/09 00:37
- その他(プログラミング・Web制作) bashコマンドの最後の引数 2 2022/06/24 11:57
このQ&Aを見た人はこんなQ&Aも見ています
-
コントロールの存在確認
Visual Basic(VBA)
-
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
押したボタンの位置取得(共通のマクロ)
Excel(エクセル)
-
-
4
オブジェクト名をVBAで指定する方法を教えてくださ
PowerPoint(パワーポイント)
-
5
Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには
その他(プログラミング・Web制作)
-
6
VBAでオプションボタンなどそれぞれの数を調べたい
Excel(エクセル)
-
7
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
8
Excel 全シート上のボタンを削除 VBA
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
11
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
15
コマンドボタンがデザインモードになったまま
Excel(エクセル)
-
16
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
フォーム上の現在アクティブなコントロールの取得
Access(アクセス)
-
19
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
20
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
コマンドボタンを押すたびに大...
-
Accessのコマンドボタンの立体...
-
Excel:コマンドボタンの移動
-
PPTのコマンドボタンがクリック...
-
スクロールしてもボタンを常に...
-
ワードにタイマーを設定したい
-
Accessユーザーフォームでコマ...
-
EXCELでNo.を変えて印刷したい
-
エクセルでマクロを使わずに複...
-
VBAの印刷について教えてください
-
[ExcelVBA] コマンドボタンを押...
-
CyberLinkPowerDirectorでDVD作...
-
Wordでドラッグした文字列を括...
-
エクセル:マクロのコマンドボ...
-
エクセルVBAでOptionButtonのオ...
-
エクセルVBA
-
アクセス2000:アクセスからワ...
-
EXCELのシート上に埋め込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
スクロールしてもボタンを常に...
-
Excel VBA --- コマンドボタ...
-
PPTのコマンドボタンがクリック...
-
押したボタンの位置取得(共通の...
-
Accessのコマンドボタンの立体...
-
コマンドボタンがあるかどうか...
-
エクセルVBAでOptionButtonのオ...
-
コマンドボタンで「終了ボタン...
-
エクセルVBA
-
ShowAllDataのエラーを回避したい
-
EXCELでNo.を変えて印刷したい
-
エクセルのコマンドボタンの位...
-
Wordでドラッグした文字列を括...
-
エクセルでマクロボタンを動か...
-
チェックボックスで「いずれか1...
-
エクセルVBA シート上にあるコ...
-
Excel VBA 複数のコマンドボ...
-
InDesignには「1段階戻る」の...
おすすめ情報