- ベストアンサー
Excel VBAで指定場所の検索と文字の入力を繰り返す方法
- Excel VBAを使用して、指定された場所(B2からE2)を検索し、入力されている文字があれば一段下に移動して同じ列を検索します。
- その後、2行目から9行目までを繰り返し処理し、空白の場合はC列の検索した行に文字を入力します。
- ExcelのVBAを使用して、指定された場所の検索と文字の入力を繰り返す方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答No1です。 Cells(i,3)="空白の行" の次にExit ForまたはExit Sub を入れることで最初の空白の行だけで操作は終了します。 For i = 2 To 9 If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), ">*") = 0 Then '文字列が入力されているかどうかを調べます '文字列及び数値が入力されているかどうかを調べるとしたら 'If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), ">*") + WorksheetFunction.Count(Range(Cells(i, 2), Cells(i, 5))) = 0 Then Cells(i, 3) = "空白の行" Exit For End If Next
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答1です。 If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), "*") = 0 Then ここで"*"では式が入力されて空白の場合にもカウントされますので、">*"とするのがよいでしょう。
補足
返答が遅れてすみません 質問に対する完璧な回答ありがとうございました しかし私の伝え損ねで想像していたものと少し違う仕様となってしまいました こちらの不備を修正すべく手を加えようとしたのですが完成させられませんでした もしよろしければ 「上から順に検索し、書き込みをしたらそこで処理を終了。」 (例えば4行目が空白であればそこに書き込み、5行目以降の空白には書き込まない) を付け加えてはいただけないでしょうか よろしくお願いします
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようなマクロでどうでしょう。 For i = 2 To 9 If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), "*") = 0 Then '文字列が入力されているかどうかを調べます '文字列及び数値が入力されているかどうかを調べるとしたら 'If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), "*") + WorksheetFunction.Count(Range(Cells(i, 2), Cells(i, 5))) = 0 Then Cells(i, 3) = "空白の行" End If Next
お礼
一言付け加えれば出来たんですね Exit For を知らず Do ~ loop Until を用い試行錯誤してました こちらの方がずっとスマートなので教えていただいたものを利用させていただきます 度々ありがとうございました