初心者です。エクセルのマクロで次のようなコードを書いたとき(2)のif文のところで
「コンパイルエラー:メソッドまたはデータメンバが見つかりません」
と表示されます。
Dim A As Worksheet
Set A = Worksheets(1)
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If A.CheckBox1 = True Then '(2)
Range("B1") = 1
End If
どちらも同じ意味だと思っているのですが、なぜ(2)ではエラーと
なるのかわかりません。詳しい方、ご教示願います。
No.2ベストアンサー
- 回答日時:
Sheetsコレクションと Worksheetsコレクションで扱うオブジェクトが違うからです
WorksheetsはWorksheetオブジェクトですよね
Sheetsは Sheet1やSheet2などWorksheetを継承したオブジェクトです
ワークシートに貼り付けたチェックボックスなどは Sheet1オブジェクトのメンバーとして認識されます
しかし Worksheetオブジェクトのメンバーとしては認識されないため
A.CheckBox1といった記述が出来ないのです
Sheet1オブジェクトのメンバーであってWorksheetオブジェクトのメンバーではない、ということで何となく理解できました。ありがとうございました!
No.3
- 回答日時:
今まで質問の現象に出くわしたことがなかったですが
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi? …
と似た質問ではないでしょうか。
自己流解釈の項が参考になりませんか
下記Test07()がその不思議さを再現したように思いました。
ーー
以下は私がテストでやってみたものです。参考に
Sub test01()
Dim A As Worksheet
Set A = Worksheets(1)
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If Worksheets(1).CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
Sub test02()
Dim wA As Worksheet
Set wA = Worksheets("Sheet1")
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If Worksheets("Sheet1").CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
Sub test03()
Dim wA As Object
Set wA = Worksheets("Sheet1")
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
Sub test04()
Dim wA As Object
Set wA = Worksheets("Sheet1")
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If wA.CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
Sub test05()
Dim wA As Object
Set wA = Worksheets("Sheet1")
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If wA.Range("A1") = 1 Then '(2)
Range("B1") = 1
End If
End Sub
Sub test06()
Dim wA As Object
Set wA = Worksheets("Sheet1")
MsgBox wA.Name
End Sub
Sub test07()
Dim A As Worksheet
Set A = Worksheets(1)
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
A.Activate
If ActiveSheet.CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
No.1
- 回答日時:
Sub 回答_1()
Dim A As Object
Set A = Sheets(1)
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If A.CheckBox1 = True Then '(2)
Range("B1") = 1
End If
End Sub
Sub 回答_2()
Dim A As Boolean
A = Sheets(1).CheckBox1
If Sheets(1).CheckBox1 = True Then '(1)
Range("A1") = 1
End If
If A = True Then '(2)
Range("B1") = 1
End If
End Sub
シートをオブジェクト型にするか、チェックボックスごとブール型にすればいいんですね。ブール型の方が若干ですが使用メモリが少ないみたいなので、こちらで検討したいと思います。どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 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についての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
[VBA]CDOメッセージ送信エラー
-
実行時エラー 3265「要求された...
-
(初心者です)VBAについて。「実...
-
VBA オブジェクトが空かどうか...
-
VBAで作成するメール(開封確認...
-
VBAで Set wb = Sheets(1).Cop...
-
EXCEL VBA オートシェイプナン...
-
Word2007数式でIMEオン/オフを...
-
エクセルのVBAの標準モジュール...
-
オブジェクトが見つかりません
-
PowerPointVBAでスライドマスタ...
-
[C#]static void 関数内でthis
-
コンパイルエラーの対処がわか...
-
ある文字列が全て数字であるか...
-
Visual Basic.NETのエラー("オ...
-
Excel VBA Collection.add で R...
-
Excelでフィルタをかけると警告...
-
ExcelのVBAについて(グラフ操作)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
エクセルのVBAの標準モジュール...
-
エクセルマクロエラー「'Cells'...
-
Excelでフィルタをかけると警告...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAからPDFファイルにパスワー...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
EXCEL VBA オートシェイプナン...
-
VBAで作成するメール(開封確認...
-
PowerPointVBAでスライドマスタ...
-
ある文字列が全て数字であるか...
-
エクセルVBAで配列内に空白デー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
-
UserForm1.Showでエラーになり...
-
上下の位置揃えについて
おすすめ情報