- ベストアンサー
VBAでのfor文について
5行のデータがあるとして、先頭の文字がaで始まる行を削除して 上に詰めたいと考えています。 しかし、Range("i:i")のところに可変の数字iをうまく指定できて いないようで、うまく実行されません。 どこがまずいのでしょうか? Sub sample() Dim i As Integer For i = 1 To 5 activeworksheet.Cells(i, 2) = Mid(Cells(i, 1), 1, 1) If Cells(i, 2) = "a" Then ActiveSheet.Range("i:i").Delete shift:=xlshiftUp End If Next End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> どこがまずいのでしょうか? × activeworksheet →ActiveSheet × Range("i:i") 変数を””でくくったらただの文字列です。 Sub sample01() Dim i As Integer With ActiveSheet For i = 1 To 5 .Cells(i, 2) = Mid(.Cells(i, 1), 1, 1) If .Cells(i, 2) = "a" Then .Rows(i).Delete shift:=xlShiftUp End If Next End With End Sub
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
ANo.2です。 ちょっとミスりました。スル~して下さい。
- n-jun
- ベストアンサー率33% (959/2873)
For i = 1 To 5 下からの方がいいと言われてますが。 For i = 5 To 1 Step - 1 ActiveSheet.Range("i:i").Delete shift:=xlshiftUp は ActiveSheet.Range( i & ":" & i).Delete shift:=xlshiftUp でしょうか。
お礼
ありがとうございます。 ActiveSheet.Range( i & ":" & i).Delete shift:=xlshiftUp が思いつかなくて苦しんでました。 非常に助かりました。 今後ともよろしくお願いいたします。
お礼
ありがとうございます。 .Rows(i) というのが勉強になりました。 また質問させていただくこともございますが、 その節はよろしくお願いいたします。