dポイントプレゼントキャンペーン実施中!

ワークシートのコンボボックス(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

A 回答 (2件)

>セルならば、うまくいくのですが


何のことかな?あるいは下記のことか。
エクセル(VBA)でのコンボはLinkedCellをプロパティで設定するのが、本則(使うことを期待されている)。
この場合はそのセルの値が空白かどうかで判団するほかない。1セルと対応しているので、消さない限り保持されるので、選択していない状態(空白)に戻すのもコードの記述が要る。
仕組み的に難しい。
受胎を取るタイミングを決めるコマンドボタンなどが、別途要るのかなと思う。
参考
Sub test01()
MsgBox Range(Worksheets("Sheet1").ComboBox1.LinkedCell).Value
End Sub
で選択されている値が取れる。
    • good
    • 0

mimimam77さん こんにちは。



「ListIndex」は選択されたインデックス番号なので必ず数値です。
よってEmpty値はありません。
選択されていなければ「-1」になります。

以下のように変更すれば良いかと思います。
If IsEmpty(ActiveSheet.cboクライアント.ListIndex) Then
        ↓
If ActiveSheet.cboクライアント.ListIndex < 0 Then
    • good
    • 0
この回答へのお礼

ありがとうございます!!jcctairaさん。

できました!!わかりやすい文章なので、理解できました!!

お礼日時:2011/03/10 15:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!