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

A1~D8まで数式が入っていて、if関数によって条件に合わない場合は、空白にしています。
条件に合わない場合は行すべてが空白になり、1つのセルだけが空白になることはありません。
(画像参考)

A1~D3までは数式によって数値や文字列が表示されています(A列・B列は文字列です)
A4~D8まではif関数による空白(””)の状態です。

この状態で、最終行の次のセルをアクティブにするマクロ
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
を実行すると、A9が選択されます。

これを、A4を選択するマクロを教えていただけないでしょうか。

説明が分かり難かったらすみません。

よろしくお願いします。

「数式による空白を無視して最終行を取得する」の質問画像

A 回答 (3件)

No.1です。


たびたびごめんなさい。

もう少し短くできました。

Sub Sample2()
Dim i As Long
On Error Resume Next '//←念のため
For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
If Cells(i, "A") <> "" Then Exit For
Next i
Cells(i, "A").Offset(1).Select
End Sub

にしてみてください。m(_ _)m
    • good
    • 15
この回答へのお礼

教えていただいたマクロで上手くできました。
ありがとうございます!

有名な方に回答をもらえて嬉しいです。

お礼日時:2015/04/24 13:44

こんばんは。



Match関数を使ったものを、邪道だというのはやめてくださいね。(^^;
こんな便利な関数を使わない手はありません。
ただし、どちらの変数も、Variant型ですから、お間違えなく。

'//
Sub TestMacro1()
 'No.8968394
 Dim i '(As Variant)
 i = Application.Match("", Columns(1), 0)
 If IsNumeric(i) Then
  Cells(i, 1).Select
 Else
  MsgBox "セルが見つかりません", vbExclamation
 End If
End Sub

'VBAマクロらしくするなら、こんな風にもできますね。

Sub TestMacro2()
 'No.8968394
 Dim r
  Set r = Columns(1).Find("", , xlValues, 1)
 If TypeName(r) = "Range" Then r.Select
End Sub
'///
    • good
    • 0
この回答へのお礼

こちらでも上手くいきました。
色々と勉強になります。
ありがとうございます!

お礼日時:2015/04/27 18:43

こんばんは!


安直な方法ですが・・・

Sub Sample1()
Dim i As Long
On Error Resume Next '//←念のため
For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
If Cells(i, "A") = "" Then
i = i - 1
End If
If Cells(i, "A") <> "" Then Exit For
Next i
Cells(i, "A").Offset(1).Select
End Sub

もっとスマートな方法があるかもしれませんが、
こんな感じではどうでしょうか?m(_ _)m
    • good
    • 3

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A