Excel VBA質問箱 IV

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

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


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

【66424】数字か文字かを確認 しま 10/9/3(金) 20:55 質問[未読]
【66425】Re:数字か文字かを確認 kanabun 10/9/3(金) 21:12 発言[未読]
【66427】Re:数字か文字かを確認 しま 10/9/3(金) 22:19 質問[未読]
【66430】Re:数字か文字かを確認 kanabun 10/9/3(金) 23:40 発言[未読]

【66424】数字か文字かを確認
質問  しま  - 10/9/3(金) 20:55 -

引用なし
パスワード
   A1〜D30のセルの各セルが数字か文字かを確認して、文字が入っていれば、そのセル位置をメッセージボックスに出力したいと思うのですが、どのようにすればよろしいでしょう?

【66425】Re:数字か文字かを確認
発言  kanabun  - 10/9/3(金) 21:12 -

引用なし
パスワード
   ▼しま さん:

>A1〜D30のセルの各セル
> 文字が入っていれば、そのセル位置をメッセージボックスに出力

こんなのどうですか?

 MsgBox [A1:D30].SpecialCells(xlConstants, _
        xlTextValues).Address(0, 0)

【66427】Re:数字か文字かを確認
質問  しま  - 10/9/3(金) 22:19 -

引用なし
パスワード
   kanabun さん、回答くださりありがとうございます。
もし、範囲内に文字があれば、文字が入っているセルをメッセージボックスとして表示し、文字がなければ、メッセージボックスが出ないようにしたいと考えています。
ただ、IF文において、範囲内に文字がなければというのが書けませんでした。

IF Range("D12:V62").SpecialCells(xlConstants, xlTextValues).Address(0, 0) <> "" Then
msgbox (Range("D12:V62").SpecialCells(xlConstants, xlTextValues).Address(0, 0) & "に文字が入っています")
END IF

と書いたのですが、どこがまずいのでしょうか?

【66430】Re:数字か文字かを確認
発言  kanabun  - 10/9/3(金) 23:40 -

引用なし
パスワード
   ▼しま さん:

>もし、範囲内に文字があれば、文字が入っているセルをメッセージボックスとして表示し、文字がなければ、メッセージボックスが出ないようにしたいと考えています。


>と書いたのですが、どこがまずいのでしょうか?

SpecialCellsメソッドは Excelで [F5]キーを押すと出てくる
Goto(ジャンプ)機能のなかにある【セル選択】ボタンのことです。
[セル選択...](SpecialCells) ボタンを押すと 何を選択するか
オプションボタンがたくさん出てきますね
 その中で ●定数セル
       レ 文字列
にチェックを入れて [OK] を押したときの動作と同じことを
VBAでしているわけです。

たとえば 下の例では 現在選択されているセル範囲(Selection)に対して
> Set r = Selection.SpecialCells(xlConstants, xlTextValues)
とSpecialCellsメソッドを発行していますが、
これは 該当するセルが見つかると 左辺の変数r にセルがセットされます。
ところが 該当セルがひとつもないと SpecialCellsメソッドはエラーを
返します。
だから、該当セルがなかったときもエラーで中断しないように

On Error Resume Next
 Set r = ..........
On error goto 0

としています。こうしておくと、該当セルがなかったばあいは
変数r が nothing のままなので、このときは実行を Exit します。
範囲が決まっているなら、
そこの Selectionのところを Range("D12:V62") に置き換えてください。

'------------------------------------
Sub 文字のセル発見()
 Dim r As Range

 On Error Resume Next
  Set r = Selection.SpecialCells(xlConstants, xlTextValues)
 On Error GoTo 0
 If r Is Nothing Then Exit Sub
 
 MsgBox r.Address(0, 0)
End Sub

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