gooで初めて質問します、VBAのエラーについて。
エクセルのシートにActiveXのチェックボックスを挿入しマクロを
作ろうと試みています。VBAの知識がないので、サンプルを
ダウンロードして作ろうと思っています。ところが、ダウンロードした
サンプルを動作させると、”実行時エラー424オブジェクトが必要です”
というメッセージがでます。どこを修正すればよろしいでしょうか?
エクセル2007を使用しています。よろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub checkbox()
Dim コントロール As Control
Dim チェック状態 As Boolean
チェック状態 = False
For Each コントロール In Controls '質問者記入:エラーメッセージがでる。
If TypeName(コントロール) = "CheckBox" Then
If コントロール.Value = True Then
チェック状態 = True
Exit For
End If
End If
Next
If チェック状態 = False Then
MsgBox "選択されていません。"
Exit Sub
End If
End Sub
No.2ベストアンサー
- 回答日時:
私も大して分かってないのですみませんが、ご提示されたWebのサンプルコードは、「ユーザーフォーム」の上に作ったチェックボックス用かなにかのコードのようです。
シート上に作った「「ActiveXコントロールのチェックボックス」の場合は、同じチェックボックスでも少し勝手が異なるみたいです。
a:変数「コントロール」の宣言が、「Dim コントロール As OLEObject」になる。
(=「Control」型ではなく、「OLEObject型」になるみたいです。)
b:「Cntrols」が「Worksheets("sheet1").OLEObjects」になる。
c:「コントロール」や「コントロール.Value」に「Object.」がくっつく。
・・・という感じで・・・。
少し作り変えてしまいましたが、以下のコードを試すとどうなりますでしょうか?
「Sheet1」の上に作ったチェックボックスを調べていくコードです。
(たぶん、動くと思うんですけど・・・。動かなかったらごめんなさい!)
※もし「Shhet1」が作ってなければ、「Sheet1」を作って、その上に、ActiveXコントロールの「チェックボックスを2、3個、作って、実行してみてください。
'#################################################################
'チェックボックスが「ActiveXコントロール」の場合
'#################################################################
Sub checkbox02()
Dim コントロール As OLEObject
Dim チェック状態 As Boolean
Dim s_CtlName As String
チェック状態 = False
For Each コントロール In Worksheets("sheet1").OLEObjects
If TypeName(コントロール.Object) = "CheckBox" Then
If コントロール.Object.Value = True Then
チェック状態 = True
s_CtlName = コントロール.Name
Exit For
End If
End If
Next
If チェック状態 = True Then
MsgBox s_CtlName & "にチェックが入っているっぽいです。"
ElseIf チェック状態 = False Then
MsgBox "選択されていません。"
Exit Sub
End If
End Sub
ちなみにですが、チェックボックスが「フォームコントロール」のほうで作られていると、以下のような感じのようです。
d:変数「コントロール」の宣言が、「Dim コントロール As checkbox」になる。
(=「Control」型ではなく、「checkbox型」になるみたいです。)
e:「Cntrols」が「Worksheets("sheet1").CheckBoxes」になる。
f:「コントロール.Value = True」が「コントロール.Value = 1」など、数値での判別になる。
・・・という感じで・・・。
※「Sheet1」上に、「フォームコントロール」の「チェックボックスを2、3個、作って、実行してみてください。
'#################################################################
'チェックボックスが「フォームコントロール」の場合
'#################################################################
Sub checkbox03()
Dim コントロール As checkbox
Dim チェック状態 As Boolean
Dim s_CtlName As String
チェック状態 = False
For Each コントロール In Worksheets("sheet1").CheckBoxes
If TypeName(コントロール) = "CheckBox" Then
If コントロール.Value = 1 Then 'チェックONだと「1」、OFFだと「-4146」です。
チェック状態 = True
s_CtlName = コントロール.Name
Exit For
End If
End If
Next
If チェック状態 = True Then
MsgBox s_CtlName & "にチェックが入っているっぽいです。"
ElseIf チェック状態 = False Then
MsgBox "選択されていません。"
Exit Sub
End If
End Sub
No.3
- 回答日時:
あ、私が書いているあいだにもう回答ついていましたね。
私の回答は無視してください。
No.1
- 回答日時:
元のコードは、UserForm 上のものですから、シート上の場合は、ActiveX コントロールと、Form コントロールと2つあって、その書き方が変わります。
一応、2バイト文字は、使わないことにしています。
なるべく、元のコードを壊さないようにしています。
Sub checkbox_Checking()
Dim Ctrl As Object
Dim bln As Boolean
bln = False
For Each Ctrl In ActiveSheet.OLEObjects
If TypeName(Ctrl.Object) = "CheckBox" Then
If Ctrl.Object.Value = True Then
bln = True
Exit For
End If
End If
Next
If bln = False Then
MsgBox "選択されていません。"
Exit Sub
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
UserForm1.Showでエラーになります。
工学
-
UserForm1.Showでエラーになります。1
工学
-
実行エラー'424' ????
Excel(エクセル)
-
-
4
Excel2007 でのチェックボックスの名称
Visual Basic(VBA)
-
5
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
6
Excel VBAでCheckboxの名前を変数にとって値を調べたい
Visual Basic(VBA)
-
7
「オブジェクトが必要です。」エラーになります。
Visual Basic(VBA)
-
8
別のシートから値を取得するとき
Visual Basic(VBA)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
エクセルのチェックボックスを保護対象から外すには
Windows Vista・XP
-
11
Excel VBA オプションボタンについての質問です。
その他(プログラミング・Web制作)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
14
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
15
【Excel VBA】マクロをボタンに登録したがエラーで実行できない
Visual Basic(VBA)
-
16
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
17
EXCEL VBA コントロールのコピー&ペースト
Excel(エクセル)
-
18
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel(エクセル)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
(VBA)スピンボタンの大量...
-
変数をコントロール型で使用す...
-
With~EndWithの省略部分と引数...
-
VBAのエラーについて、”実行時...
-
コンボボックスの文字によるif...
-
ACCESS2010のVBAでフォーム内ク...
-
vb.netで画面のコントロールId...
-
VB6でシリアルポートの制御
-
シート上のコントロール(TextB...
-
[MFC]コントロールに合わせてフ...
-
行方不明のボタンを消したい
-
ユーザーフォームで動的(Me.Con...
-
'ckbl' コントロールは作成され...
-
ElementHostタスクにWPFが表示...
-
VB.NET 動的コントロールの存在...
-
WIN32でOCXを利用する方法を教...
-
Groupboxの配下のコントロール...
-
ListViewのチェックボックスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
excelのリストボックスで選択し...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
C#で自分のウインド・ハンド...
-
変数をコントロール型で使用す...
-
VBAのフォームでTextBoxがいっ...
-
コントロールを移動できない
-
Groupboxの配下のコントロール...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
間違えて配置してしまったコン...
-
エクセル コントロールツール...
-
'ckbl' コントロールは作成され...
-
OCXって何ですか?
おすすめ情報
初めてのgooの質問で要領がわかりませんでした。
リクエストの 男性・60歳以上はわたくしのことです。
リクエストの制限は全くしておりません。
よろしくお願いします。補足しました。