あなたは検索が何も返さない場合は、このエラーを与えるようあなたがFind
でSelect
を使うべきではありませんので、シートは、空白になる場合があり、コード
- にこれらの改造を行う必要があります。代わりに、範囲オブジェクト
Is Not Nothing
Find
が行と列で検索できることをテストしてください。あなたが最初のセル(A1)から2 Find
で決定あなたのセルの範囲を設定するために、真の最後のセル使用Range
を決定したら、あなたは本当の最後に使用されたセル
- を決定するために両方最後の行と列を決定する必要があります
Find
は、値を取得し、2つのFind
Sによって識別最後に使用セルにA1から範囲rng3
を行った場合範囲
PLSが
以下のコードを参照してください。使用された最後のセルにA1を選択するには
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Select
:列Aの(間にブランクを含む)を使用し、最後のセルにA1を選択
Sub GetRange()
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Set rng1 = Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious)
Set rng2 = Cells.Find("*", [a1], xlFormulas, , xlByColumns, xlPrevious)
If Not rng1 Is Nothing Then
Set rng3 = Range([a1], Cells(rng1.Row, rng2.Column))
MsgBox "Range is " & rng3.Address(0, 0)
'if you need to actual select the range (which is rare in VBA)
Application.Goto rng3
Else
MsgBox "sheet is blank", vbCritical
End If
End Sub
エクセレント! :) – AME
さて、それは範囲関数を実行するためのかなりkewl kewl方法です。私は手順の使用と、その違いだけのために再帰よりも反復の使用を見ています。 – JackOrangeLantern
よく説明されています: –