2

ユーザーモジュールのコードのセクションでExcelの範囲が空かどうかを確認したかったのです。以下のコードを使用しました

Worksheets(yearsheet).Range("N" & rownum & ":DI").Select
If Application.WorksheetFunction.CountA(Selection) = 0 Then
    Exit Sub
End If

ランタイムエラー1004が発生します。誰かが私の間違いを教えてもらえますか?

前もって感謝します。PS:rownumは整数変数で、yearsheetは文字列変数です。これらの変数は両方とも、コードの上記のセクションの前にコードで適切に更新されました

4

2 に答える 2

2

"N" & rownum & ":DI"アドレスの後半の行番号が欠落しているため、実際のアドレスには評価されません。また、可能な限りSelectステートメントの使用は避けてください。

範囲全体が1行にあると仮定すると、これは機能します。

Sub test()
Dim yearsheet As String
Dim rownum As Integer

yearsheet = "Sheet2"
rownum = 2
If Application.WorksheetFunction.CountA(Worksheets(yearsheet) _
        .Range("N" & rownum & ":DI" & rownum)) = 0 Then
    Exit Sub
End If
End Sub
于 2013-02-09T19:57:51.693 に答える
0

VBAで選択範囲が空であるかどうかをテストする最良の方法は次のとおりです。

'選択したセルが存在するかどうかをテストします。
'@returntrueまたはfalse
関数isCellSelection()As Boolean
    Dim r As range
    isCellSelection = False
    r=Selection.Cellsに設定します
    IsEmpty(r)の場合
        isCellSelection = True
    終了する場合
関数の終了'isCellSelection
于 2013-10-21T07:13:31.670 に答える