プロが教える店舗&オフィスのセキュリティ対策術

エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。


Sub example()

ActiveSheet.Range("D3").Select

Do Until ActiveCell = 23
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell <> "" Then
ActiveCell.Offset(1, -3).Select
ElseIf ActiveCell <> "" Then
ActiveCell.Offset(1, -6).Select
Else: ActiveCell.EntireRow.Select
Selection.EntireRow.Hidden = True
ActiveCell.Offset(0, -6).Select
End If
Loop

End Sub

一番下のActiveCell.Offset(0, -6).Select
にエラーが出るのですが、どうすればセルを移動できるでしょうか?

A 回答 (1件)

うーん、どうしようとしているコードかわからないが、


エラーが出るのはわかる。
ActiveCell.Offset(0, -6).Select
で、
列位置を -6 できないからだ。
もともとActiveCellがD3だから列は4だ。
ActiveCell.Offset(0, -6).Select
にくるまでに、たぶん
ActiveCell.Offset(1, -3).Select
で、-3しているから
ActiveCell.Offset(0, -6).Selectにきたときは列は1だろう。
もうあとがない。

>どうすればセルを移動できるでしょうか?
移動はできないよ。

それから、こういう書き方もあるのかもしれないが、ちょっと変えたほうがいいんじゃないか。
if,elseifで、みんな同じ条件を取っている。ActiveCellは変わっていくとしてもね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
説明不足 申し訳ございませんでした
ご指摘の通り(0、-3)(0、-6)はあとがなくなっていました
またよく見直したら、全然だめなことに気がつきました。

Sub 非表示()
行 = 3
列 = 4
While Cells(行, 列 - 2) <> ""
If Cells(行, 列) = "" And Cells(行, 列 + 3) = "" And Cells(行, 列 + 6) = "" Then
Rows(行).EntireRow.Hidden = True
End If
行 = 行 + 1
Wend
End Sub

で解決しました

ありがとうございます

お礼日時:2008/03/07 20:33

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