こんばんは。
これは、VBAというよりも、ワークシートの関数をフルに使っているだけです。後は、それをVBAで埋めていくだけです。
>表の2行目に行くと「プロシージャの呼び出し、または引数が不正です」とエラーになってしまいました。
それは、空のデータを読んでいるからで、おそらく、右端に、間の開いたデータがあるからだと思います。
正しく、長方形のデータを読んでいません。
'-------------------------------------------
'データ: A1から下,右3列
Set Rng = .Range("A1", .Cells(Rows.Count, 1).End(xlUp).Resize(, 3))
'列の項目
Srch1 = .Range("E2", .Cells(Rows.Count, 5).End(xlUp)).Value
'行の項目
Srch2 = .Range("F1", .Cells(1, Columns.Count).End(xlToLeft)).Value '←ここを交換
'表のスタート
Set startR = Range("F2")
'-------------------------------------------
'検査用コード
MsgBox .Range("E2", .Cells(Rows.Count, 5).End(xlUp)).Address
MsgBox .Range("F1", .Cells(1, Columns.Count).End(xlToLeft)).Address
Stop 'ここで再び止まる。
'-------------------------------------------
簡単に、チェックする方法は、列の項目、行の項目が、「検査用コード」を加えてください。また、項目が、実際は、A/B でなく、1文字や2文字と変化するようでしたら、現在のマクロでは上手くいきません。検査後は、不要ですから、コメントブロックか、削除してしまってください。
こちらとしては、想定外ですが、Srch2 の部分を、これに置き換えてみても良いかもしれません。
Srch2 = .Range("F1", .Cells(1, 6).End(xlToRight)).Value
という方法もあります。
なぜ、このような書き方をするかというと、実際の大きさが分からないからで、決まっているものなら、End プロパティを使わずに、.Range("F1:L1").Value などとしてもよいです。
お礼
回答して頂きありがとうございます。 早速VBAを実行してみたのですが、思っていた通りに表の1行目に数字が入りました。 が、表の2行目に行くと「プロシージャの呼び出し、または引数が不正です」とエラーになってしまいました。 まだ初歩しか勉強していないので、自分ではどうしてそうなってしまうのかよく分かりませんが、もっと勉強して調べてみようと思います。 本当にありがとうございました。