Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3368 / 13644 ツリー ←次へ | 前へ→

【62670】空白セルの有無を調べるには にしもり 09/8/20(木) 18:52 質問[未読]
【62671】Re:空白セルの有無を調べるには kanabun 09/8/20(木) 19:15 発言[未読]
【62672】Re:空白セルの有無を調べるには kanabun 09/8/20(木) 19:17 発言[未読]
【62673】Re:空白セルの有無を調べるには にしもり 09/8/21(金) 9:59 お礼[未読]

【62670】空白セルの有無を調べるには
質問  にしもり  - 09/8/20(木) 18:52 -

引用なし
パスワード
   こんにちは。
店別のファイルの「R3:S列の最終行」の範囲に空白セルが少なくとも1個あるときMsgを出したいです。
A列の最終行がS列の最終行であります。
以下のロジックをくみましたがエラーがでます。
また、或る範囲に空白セルが少なくとも1個あるか無いかを調べる関数があるでしょうか?
ご教示よろしくお願いいたします。

なお空白セルがあったら手入力するので、当該ファイルは閉じません。

Sub Macro1()

 Dim MyBranch(1) As String
 Dim i As Long
 Dim r As Long
 
  MyBranch(0) = "北海道店.xls"
  MyBranch(1) = "東北店.xls"
 '実際は店はもっとあります

For i = 0 To 1

  Workbooks.Open Filename:="U:\" & MyBranch(i)

  Range("A3").Select
  r = .Row.Count
  '↑ここでエラーがでます。

  If Range("R3:S" & r) = Empty Then
    MsgBox (MyBranch(i) & "には空白セルが" & Chr(13) & "少なくとも1個あります")
    vbOKOnly

  Else
    
    ActiveWorkbook.Close True

  End If

Next i
   
End Sub

【62671】Re:空白セルの有無を調べるには
発言  kanabun  - 09/8/20(木) 19:15 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

>  Range("A3").Select
>  r = .Row.Count
>  '↑ここでエラーがでます。

う〜ん、、ドットの前のオブジェクトが指定されてないから、
Excelは何の.Row.Count か分からないからです。
また、
Rangeオブジェクトの.Rowプロパティは行番号を返すもので、
そこには .Countというプロパティもありませんから、2重の構文
エラーとなってます。


> 範囲に空白セルが少なくとも1個あるか無いかを

  Dim myRange As Range
  Dim n As Long

  With ActiveSheet
    Set myRange = Intersect(.UsedRange, _
           .UsedRange.Offset(2), .Columns("R:S"))
    MsgBox myRange.Address(0, 0)
    n = WorksheetFunction.CountBlank(myRange)
    If n > 0 Then
      MsgBox "空白セルが " & n & "個あります"
    Else

    End If
  End With

のように書いたらどうでしょう?

【62672】Re:空白セルの有無を調べるには
発言  kanabun  - 09/8/20(木) 19:17 -

引用なし
パスワード
   ▼にしもり さん:

>    MsgBox myRange.Address(0, 0)

はデバッグ用ですので、運用時には不要です。

【62673】Re:空白セルの有無を調べるには
お礼  にしもり  - 09/8/21(金) 9:59 -

引用なし
パスワード
   ▼kanabun さん:
Rangeオブジェクトのつかいかたが解っていませんで失礼しました。
また、わたしの持っているレベルの教本にはIntersectは載っていませんでした。
大変助かりました。ネットでIntersectの使い方を確かめておきます。
最終的に以下のようにさせていただきました。
ありがとうございました。

Sub Macro1()

Dim MyBranch(1) As String
Dim myRange As Range
Dim n As Long

MyBranch(0) = "北海道店.xls"
MyBranch(1) = "東北店.xls"
 
For i = 0 To 1

  Workbooks.Open Filename:="U:\" & MyBranch(i)

  With ActiveSheet
    Set myRange = Intersect(.UsedRange, _
           .UsedRange.Offset(2), .Columns("R:S"))
    'MsgBox myRange.Address(0, 0)
    n = WorksheetFunction.CountBlank(myRange)
    If n > 0 Then
      MsgBox MyBranch(i) & " に空白セルが " & n & "個あります"
    Else
      ActiveWorkbook.Close True
    End If
  End With

Next i

End Sub

3368 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free