• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbaの繰り返し処理について)

VBAで繰り返し処理を行いたい場合の方法

このQ&Aのポイント
  • VBAを使用して、A1セルから下にURLが入っているセルまで同じ処理を繰り返す方法について教えてください。
  • VBAのサブルーチンTest1で、Strという変数にA1セルの値を代入し、Pnt1とPnt2という変数を利用して処理を行っています。
  • Pnt1には「重 http://」という文字列が最初に現れる位置を、Pnt2にはその後に現れる「要」という文字列が最初に現れる位置を代入しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.4

> str=のところで引数は省略できませんとでてしまいました。 元の宣言の所は省略していますので追加してください。 StrはMyStrとかにした方がいいと思いますよ。 Dim Str As String Dim Pnt1 As Long Dim Pnt2 As Long

noname#258770
質問者

お礼

ありがとうございました。途中で訂正などしたり、追加での質問にも答えていただいたりとても助かりました。 ありがとうございます。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

No1の追加です。 Range("B2") は Range("B1")に変わったんですね。 同じ行のB列だとしたら Range("B1") を Cells(i, "B").Value に変更してください。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

No1の訂正です。 Debug.Print Pnt1 は不要です。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

以下のどちらかで試してみてください。 Dim i As Long For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Str = Cells(i, "A").Value 'Range("A1") Pnt1 = InStr(Str, "重 http://") Debug.Print Pnt1 If Pnt1 <= 0 Then Exit Sub Pnt2 = InStr(Pnt1, Str, "要") If Pnt2 <= 0 Then Range("B2") = Mid(Str, Pnt1 + 2) Else Range("B2") = Mid(Str, Pnt1 + 2, Pnt2 - (Pnt1 + 2)) End If Next Dim i As Long: i = 1 Do While Cells(i, "A").Value <> "" Str = Cells(i, "A").Value 'Range("A1") Pnt1 = InStr(Str, "重 http://") Debug.Print Pnt1 If Pnt1 <= 0 Then Exit Sub Pnt2 = InStr(Pnt1, Str, "要") If Pnt2 <= 0 Then Range("B2") = Mid(Str, Pnt1 + 2) Else Range("B2") = Mid(Str, Pnt1 + 2, Pnt2 - (Pnt1 + 2)) End If i = i + 1 Loop

noname#258770
質問者

補足

ありがとうございました。str=のところで引数は省略できませんとでてしまいました。原因は分かりますでしょうか?

関連するQ&A