dポイントプレゼントキャンペーン実施中!

お世話になります。Excel2013を使用しています。
VBAで動作を繰り返す際に、最終行までではなく
特定の文字~特定の文字が入ってる行まで繰り返すことは可能でしょうか?

行  a列           b列
1               チョコレート
2  ★ ’行数可変 始まり   チーズ
3                マドレーヌ
.
99               ショコラ
100 ★★ ’行数可変 終わり  ミルクショコラ
.
200              フィナンシェ

例えばa列を基準とした場合、最終行はa200になりますが、実際には2行目[★]~100行目[★★]マークが入ってる行まで行いたいです。

Dim i As Long
For i = [★] to [★★]が入力されている行まで
マクロ実行

アドバイスよろしくお願いします。

A 回答 (3件)

まず、特定の文字がその行以外に出てくるのかが問題になります



始まり、終了の文字列が唯一無二、かつ逆転しないという条件であれば

i = 0
Do
i = i + 1
Loop until cells( i , "a" ).value = "★"

Do
処理
i = i + 1
Loop until cells( i , "a").value = "★★"

とすればよい
    • good
    • 0
この回答へのお礼

ありがとう

ママちゃりさんとすごく迷ったのですが
いち早くお答えいただいたのでHypnomaticさんをベストアンサーにしたいと思います。
ありがとうございました!

お礼日時:2019/04/12 00:16
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2019/04/16 12:02

こんな変数名でもちゃんと動きますね~。


"★"、"★★"が見つからないとエラーになりますので、必要であればエラー処理を組み込んでください。

Sub sample()
Dim ★ As Long
Dim ★★ As Long
Dim i As Long
★ = WorksheetFunction.Match("★", Range("A:A"), 0)
★★ = WorksheetFunction.Match("★★", Range("A:A"), 0)
For i = ★ To ★★
'マクロ実行
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます!

お礼日時:2019/04/12 00:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A