特定のシートのデータを抽出し別シートに一覧を書き込むマクロです。
下記コードでエラーの箇所がわからず困っています。
ご教授願えないでしょうか?
追記
質問の説明が不足して申し訳ありません。
ステップ実行してもエラーの場所は表示されず
コンパイルエラー:
修正候補:式
とだけ表示されます。
データ挿入先↓
データ元↓
VBA
1Sub test() 2 Dim aObj As Range 3 Dim bObj As Range 4 Dim cObj As Range 5 Dim dObj As Range 6 Dim myObj As Range 7 Dim iNum As Integer 8 Dim keyWord As String 9 Set aObj = Worksheets("a").Range("B3:B53") 10 Set bObj = Worksheets("b").Range("B3:B53") 11 Set cObj = Worksheets("d").Range("B3:B53") 12 Set dObj = Worksheets("c").Range("B3:B53") 13 Dim count As Integer 14 For iNum = 0 To 9 15 '---対象の行の名前取得---' 16 count = iNum * 8 17 If Range("E25").Offset(count, 0).Value <> "" Then 18 keyWord = Range("E25").Offset(count, 0).Value 19 '---対象名のシート検索---' 20 Set myObj = aObj.Find(keyWord, LookAt:=xlWhole) '---aのシート検索---' 21 If myObj Is Nothing Then Set myObj = bObj.Find(keyWord, LookAt:=xlWhole) '---bのシート検索---' 22 If myObj Is Nothing Then Set myObj = cObj.Find(keyWord, LookAt:=xlWhole) '---cのシート検索---' 23 If myObj Is Nothing Then Set myObj = dObj.Find(keyWord, LookAt:=xlWhole) '---dのシート検索---' 24 '---対象名がヒットすればデータ代入、無ければメッセージボックス通知---' 25 If myObj Is Nothing Then 26 MsgBox "'" & keyWord & "'の名簿はありません。" 27 Else 28 '---データ代入開始---' 29 If Cells(myObj.Row, 3).Value <> "" Then 30 Range("E23").Offset(count, 0).Select 31 ActiveCell.Value = Cells(myObj.Row, 3).Value 32 End If 33 34 End If 35 End If 36 Next iNum 37End Sub
どういうエラーが出ているのでしょうか?
testメソッド内でF8キーを押してステップ実行を行ってはどうでしょうか?
ステップ実行の方法については下記のサイトなどを見てください。
https://www.239-programing.com/excel-vba/basic/basic023.html
どんなシートか可能であればスクリーンショットをください。
エラーはどの行で起きてますか。エラーが起きているならアラートが表示されたと思いますがその内容はなんですか。
F8キーでデバッグしてみましたか。
> 下記コードでエラーの箇所がわからず困っています。
エラー内容が不明です。
コンパイルエラー:
修正候補:式
とだけ表示されます。
質問は編集できますので。
実行時はどのシートが表示されてますか。他のExcelシートは開いてませんか。
適当な値を入れてF8でスキップ実行してみて下さい。
下記の手順でデバッグプリントを入れてみた場合どうなるでしょうか?
1. `Dim aObj As Range`の前に`Debug.Print (Now & "--start")`を入れる。
```
Sub test()
Debug.Print (Now & "--start")
Dim aObj As Range
```
2. `count = iNum * 8`の下に`Debug.Print (Now & "--" & iNum)`を入れる。
```
For iNum = 0 To 9
'---対象の行の名前取得---'
count = iNum * 8
Debug.Print (Now & "--" & iNum)
```
3.testメソッドを実行する。
4.VBAコードを書く画面で Ctrl + G を押して「イミディエイト」という画面を表示する。
このイミディエイトという画面に何か表示されますでしょうか?
ありがとうございます。
やってみましたが何も表示されません。
念のため確認です。
1. VBAコードを書く画面の「デバッグ」メニューにある「〇〇のコンパイル」(〇〇はプロジェクト名)を押してみて何か起こりますか?
2. testメソッド以外に記載されているコードはありますか?(SheetやThisWorkbook、標準モジュールなどに)
自分の提案はエラーを表示させるものではなく、正常に動くかどうかテストするためのものです。そこで思い通りにならないならば、いわゆるバグが存在することになります。何も表示されないのであれば正常終了したということです。結果は予想通りでしたか?
回答1件
あなたの回答
tips
プレビュー