痔になりやすい生活習慣とは?

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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます。
.Rows(i)
というのが勉強になりました。
また質問させていただくこともございますが、
その節はよろしくお願いいたします。

お礼日時:2008/09/02 23:17

ANo.2です。



ちょっとミスりました。スル~して下さい。
    • good
    • 0

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
でしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

ActiveSheet.Range( i & ":" & i).Delete shift:=xlshiftUp

が思いつかなくて苦しんでました。
非常に助かりました。
今後ともよろしくお願いいたします。

お礼日時:2008/09/02 23:19

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


人気Q&Aランキング