- ベストアンサー
VBAで繰り返し処理を行いたい場合の方法
- VBAを使用して、A1セルから下にURLが入っているセルまで同じ処理を繰り返す方法について教えてください。
- VBAのサブルーチンTest1で、Strという変数にA1セルの値を代入し、Pnt1とPnt2という変数を利用して処理を行っています。
- Pnt1には「重 http://」という文字列が最初に現れる位置を、Pnt2にはその後に現れる「要」という文字列が最初に現れる位置を代入しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> str=のところで引数は省略できませんとでてしまいました。 元の宣言の所は省略していますので追加してください。 StrはMyStrとかにした方がいいと思いますよ。 Dim Str As String Dim Pnt1 As Long Dim Pnt2 As Long
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1742/2617)
No1の追加です。 Range("B2") は Range("B1")に変わったんですね。 同じ行のB列だとしたら Range("B1") を Cells(i, "B").Value に変更してください。
- kkkkkm
- ベストアンサー率66% (1742/2617)
No1の訂正です。 Debug.Print Pnt1 は不要です。
- kkkkkm
- ベストアンサー率66% (1742/2617)
以下のどちらかで試してみてください。 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
補足
ありがとうございました。str=のところで引数は省略できませんとでてしまいました。原因は分かりますでしょうか?
お礼
ありがとうございました。途中で訂正などしたり、追加での質問にも答えていただいたりとても助かりました。 ありがとうございます。