Excel VBA質問箱 IV

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

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


6560 / 13646 ツリー ←次へ | 前へ→

【44562】複数セルの一括処理について ご教授ください 06/11/21(火) 21:54 質問[未読]
【44564】Re:複数セルの一括処理について りん 06/11/21(火) 22:07 回答[未読]
【44565】Re:複数セルの一括処理について ToShiYo 06/11/21(火) 22:10 発言[未読]
【44567】Re:複数セルの一括処理について ご教授ください 06/11/21(火) 22:45 お礼[未読]

【44562】複数セルの一括処理について
質問  ご教授ください  - 06/11/21(火) 21:54 -

引用なし
パスワード
   色々調べたのですがわからなくて、ここへたどり着きました。どなたかご教授いただけると幸いです。

Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3")の複数のセルが全て空白の際に
ある一定の処理をするIf構文を作成したいです。
素人である私が考えた構文は以下の通りです。

Sub テスト()
  Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3").Select
  
  If Selection.Cells = Empty Then
    MsgBox ("全て空白")
  Else
    MsgBox ("一部埋まっている")
  End If
End Sub

上記の構文を実行すると、Activecellである、Range("C3")のみで判断されてしまうようです。私が求めているのは、
Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3") の10個のセル全てが空白の際に、Trueの処理を行い、10個のセルのうち一つでもセルが空白でなければElseの処理をしてほしいというものです。
このような時はどのような構文をかけばいいのでしょうか?どなたか教えてくださいませ。

【44564】Re:複数セルの一括処理について
回答  りん E-MAIL  - 06/11/21(火) 22:07 -

引用なし
パスワード
   ご教授ください さん、こんばんわ。


>Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3") の10個のセル全てが空白の際に、Trueの処理を行い、10個のセルのうち一つでもセルが空白でなければElseの処理をしてほしいというものです。

スペースが入っている見た目空白セルではなく、何も入ってないセルだけを数えます。
Sub テスト()
  Dim CC As Integer, r As Range
  'COUNTAワークシート関数を使って数える
  Set r = Application.ActiveSheet.Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3")
  CC = Application.WorksheetFunction.CountA(r)
  '結果
  If CC = 0 Then
    MsgBox "全て空白", vbInformation
  Else
    MsgBox "一部埋まっている", vbExclamation
  End If
End Sub

こんな感じです。

【44565】Re:複数セルの一括処理について
発言  ToShiYo  - 06/11/21(火) 22:10 -

引用なし
パスワード
   ▼ご教授ください さん:

今晩は。こんな感じでは如何ですか

Sub テスト()
  Dim R As Range
  For Each R In Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3")
 
  If R.Value <> Empty Then
    MsgBox ("一部埋まっている")
   Exit Sub
  End If
  Next
    MsgBox ("全て空白")
End Sub

【44567】Re:複数セルの一括処理について
お礼  ご教授ください  - 06/11/21(火) 22:45 -

引用なし
パスワード
   ありがとうございました。お二人様からの内容を早速試してみたらうまくいきました。
3日間ほど悩んでいたのがあっというまに解決しました。
またご指導お願いします。
感謝です。

>色々調べたのですがわからなくて、ここへたどり着きました。どなたかご教授いただけると幸いです。
>
>Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3")の複数のセルが全て空白の際に
>ある一定の処理をするIf構文を作成したいです。
>素人である私が考えた構文は以下の通りです。
>
>Sub テスト()
>  Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3").Select
>  
>  If Selection.Cells = Empty Then
>    MsgBox ("全て空白")
>  Else
>    MsgBox ("一部埋まっている")
>  End If
>End Sub
>
>上記の構文を実行すると、Activecellである、Range("C3")のみで判断されてしまうようです。私が求めているのは、
>Range("C3,J3,Q3,X3,AE3,AL3,AS3,AZ3,BG3,BN3") の10個のセル全てが空白の際に、Trueの処理を行い、10個のセルのうち一つでもセルが空白でなければElseの処理をしてほしいというものです。
>このような時はどのような構文をかけばいいのでしょうか?どなたか教えてくださいませ。

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