![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ワークシートのコンボボックス(Active X コントロール)で選択されたデータがあるかどうか
チェックしたいのです。セルならば、うまくいくのですが、コンボボックスの場合はうまくいきません。
クライアント名と品名は、コンボボックスから選択するようにしています。(下記のスクリプトは、わから
ないのでセル番地を任意に入れています。)
金額は、セル入力ですのでうまくチェックできています。
どうしたらいいのでしょうか?ご指導お願いいたします。
Private Sub cmd_登録_Click()
Dim chkStr As String '入力チェックのメッセージ文
'---------入力データのチェック-------------
'初期値を代入する。
chkStr = ""
'クライアント名が未入力の場合
If IsEmpty(ActiveSheet.cboクライアント.ListIndex) Then
chkStr = "クライアント名を選択してください"
Range("B5").Select
'品名が未入力の場合
ElseIf IsEmpty(Range("E5")) Then
chkStr = "品名を選択してください"
Range("E5").Select
'売上金額が未入力の場合
ElseIf IsEmpty(Range("W14")) Then
chkStr = "売上金額を入力してください。"
Range("W14").Select
Else
MsgBox "登録を行います"
End If
'入力漏れがある場合は、プロシージャを抜ける
If chkStr <> "" Then
MsgBox chkStr, vbCritical, "登録エラーです。"
Exit Sub
End If
No.2ベストアンサー
- 回答日時:
>セルならば、うまくいくのですが
何のことかな?あるいは下記のことか。
エクセル(VBA)でのコンボはLinkedCellをプロパティで設定するのが、本則(使うことを期待されている)。
この場合はそのセルの値が空白かどうかで判団するほかない。1セルと対応しているので、消さない限り保持されるので、選択していない状態(空白)に戻すのもコードの記述が要る。
仕組み的に難しい。
受胎を取るタイミングを決めるコマンドボタンなどが、別途要るのかなと思う。
参考
Sub test01()
MsgBox Range(Worksheets("Sheet1").ComboBox1.LinkedCell).Value
End Sub
で選択されている値が取れる。
No.1
- 回答日時:
mimimam77さん こんにちは。
「ListIndex」は選択されたインデックス番号なので必ず数値です。
よってEmpty値はありません。
選択されていなければ「-1」になります。
以下のように変更すれば良いかと思います。
If IsEmpty(ActiveSheet.cboクライアント.ListIndex) Then
↓
If ActiveSheet.cboクライアント.ListIndex < 0 Then
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージを1度だけ表示したい。
-
データが入力されている隣のセ...
-
ダブルクリックすると現在の時...
-
Excelのセル内にある図形を削除...
-
EXCELマクロ 保護されているシ...
-
Jtableの特定のセルの背景色や...
-
VBAで丸をつけたいです。
-
VBAで、貼り付け禁止命令を実現...
-
エクセルテキストボックスの文...
-
エクセルVBA(実行時エラー438...
-
エクセルVBA セル選択後にカレ...
-
VBA セルに合わせて移動するが...
-
[ExcelVBA] For Inputを使って...
-
【VBA】参照値を1ずつ増やして...
-
Excel VBA ダブルクリックで入...
-
ハイパーリンクされているファ...
-
GrapeCityのSpreadの複数セルの...
-
Excel VBA セルを指定個数ラン...
-
(VBA)アクティブセルを起点に...
-
エクセルのVBAでダブルクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELマクロ 保護されているシ...
-
VBAで、貼り付け禁止命令を実現...
-
エクセルテキストボックスの文...
-
データが入力されている隣のセ...
-
VBAで丸をつけたいです。
-
ダブルクリックすると現在の時...
-
メッセージを1度だけ表示したい。
-
エクセルVBA セル選択後にカレ...
-
ハイパーリンクされているファ...
-
Excelについて
-
エクセルVBA(実行時エラー438...
-
Windowsで動くVBAがmacOSで動か...
-
Jtableの特定のセルの背景色や...
-
(VBA)アクティブセルを起点に...
-
VBAについて教えてください。 E...
-
VBA セルに合わせて移動するが...
-
セル色を5秒間隔で変える
-
Excel VBA ダブルクリックで入...
-
Excelのセル内にある図形を削除...
-
Excel VBA セルを指定個数ラン...
おすすめ情報