コンボボックス選択時にコマンドボタンを使用不可にする方法

このQ&Aのポイント
  • コンボボックスの選択時に特定のコマンドボタンを使用不可にする方法について教えてください。
  • コンボボックスのListとItemdataを使って処理を実装してみましたが上手くいきません。
  • どのようにすれば正しく動作させることができるのでしょうか?
回答を見る
  • ベストアンサー

あるコンボボックス名を選択時に、コマンドボタンを使用不可にする

あるコンボボックス名を選択時に、コマンドボタンを 使用不可にするソースを書いてみたのですが、ダメでした。 コンボボックスのListは処理1~4、Itemdataは1~4とListに 対応した形になっています。 Private Sub ドロップダウン_Change() If SyoriKubun.Itemdata = コード Then コマンドボタン.Enabled = False End If End Sub 判定部分Itemdataをlistにして、 表示名を判定に使おうとしてもダメでした。 もしかしたら、根本的(使い方)に間違っていますか? 書き込みをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.1

イベントが違うと思います。 正しくは「Private Sub ドロップダウン_Click()」ですよ。 試して見て下さい。 補足で、もし他のを選択した場合のために、「.Enable」プロパティを「True」にしてあげるのも忘れていますよ。

usi-iti
質問者

お礼

ありがとうございました。 イベントそのものが違っていました(^^;

関連するQ&A

  • オプションボタン選択でコンボボックス有効

    ExcelVBAでユーザーフォームを作成しているのですが、昨日までうまく動作していたことが、突然動かなくなりました。 オプション1を選択 ↓ コンボボックス1有効  ※他のコンボボックスは無効 ↓ オプション2を選択 ↓ コンボボックス2有効  ※コンボボックス1も含め他のコンボボックスは無効 という感じで動作させたいです。 書いたコードはこんな感じです。 Private Sub OptionButton1_Click () Dim i As Long Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row If OptionButton1.Value = True Then OptionButton1.Enabled = True With ComboBox1 If ComboBox1 = "" Then For i = 2 To lastRow .AddItem Worksheets("sheet1").Cells(i, 1).Value Next i End If End With ComboBox1.ListIndex = 0 ComboBox2.Enabled = False ComboBox3.Enabled = False End If End Sub コードの間違いや改善点などありましたら教えて下さい。 よろしくお願いします。

  • Cmd Cmb コマンドボタン コンボボックス

    他人が作ったVBAコードを見てるのですが、 コンボボックスかコマンドボタンに ・Cmd_オブジェクト名 ・Cmb_オブジェクト名 があるのですが、 どちらがコマンドボタンで どちらがコンボボックスなのでしょうか? オブジェクト名だけじゃ判断できません。

  • コンボボックスについて

    コンボボックスでドロップダウンメニューが押された場合の処理は Private Sub ComboBox1_DropButtonClick() 処理 End Sub リスト項目がクリックされた時は Private Sub ComboBox1_Click() 処理 End Sub 上記の関数を組み合わせるにはどうすればよいでしょうか?用はComboBoxのドロップダウンメニューが押されて さらにリストの項目が選択してクリックした時はなんらかの処理を行うようにしたいのですがうまくいきません。よろしくお願い致します。

  • 同じコンボボックス、リストボックスを使うには?

    よろしくお願いします。 今、ユーザーフォームを使って製造計画表を作っています。 コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。 1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。 ユーザーフォームの形的にはこのような感じですが。 1. コンボボックス  リストボックス 2. コンボボックス  リストボックス 3. コンボボックス  リストボックス 今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。 Private Sub UserForm_initialize() 'ComboBox1セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("Sheet1") Do While .Cells(1, ico) <> "" Me.ComboBox1.AddItem .Cells(1, ico).Value ico = ico + 1 Loop End With Me.ComboBox1.SetFocus End Sub Private Sub ComboBox1_Change() 'ListBox1セット Dim ico As Long 'Me.ListBox1.Clear ico = Me.ComboBox1.ListIndex + 1 With ThisWorkbook.Worksheets("Sheet1") Me.ListBox1.List = .Range(.Cells(2, ico), _ .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value End With End Sub VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。

  • ExcelVBAコンボボックス選択時の処理

    ExcelVBAで教えて下さい。 ユーザーフォームを作成しているのですがその中の機能の一部で、「コンボボックスを選択した内容に応じてラベルに表示させる」ということをしたいのですがうまくいきません。 コンボボックスにはSheet2の内容を表示するようにさせています。 Private Sub ComboBox_DropButtonClick() Dim i As Integer Dim LastRow As Integer With ComboBox LastRow = Cells(Row.Count, 1).End(xlUp).Row For i = 3 To LastRow .AddItem Worksheets("Sheet2").Cells(i, 1).Value Next i End With End Sub Sheet2の1列目には「2002年_H14」「2003年_H15」という書式で「2012年_H24」まで入力されています。 For i = 3 To LastRow としたのは、コンボボックスから選択した結果をラベルに表示させるとき、選択した年の前後2年を合わせた合計五年間を「2002~2006年」と表示したいためです。 <例> ・コンボボックスで「2004年_H16」選択   ↓ ・ラベルに「2002~2006年」と表示 コンボボックスのChangeコードはコンボボックスに入っている値が数字だったのみしか書けませんでした。 Private Sub ComboBox_Change() Dim i As Integer With ComboBox If .ListIndex = 0 Then i = .List(ListIndex, 0) Label.Caption = (i - 2) & "~" & (i + 2) & "年" End If End With End Sub もしくは Label.Caption = ComboBox.Value - 2 & "~" & ComboBox + 2 & "年" これだと「2002年_H14」というようにコンボボックスに入っていた場合はえらいになってしまい、どうにもなりません。うまくいったとしても「_H14」の取り除き方が分かりません。 実際に実現している画面を見せてもらったのですがコードまでは見てなく、仕組みが分からないのと、作成者不明という感じのものなので聞くに聞けずここに頼った次第です。 ご存じの方いらっしゃいましたらお知恵を拝借したく、何卒よろしくお願い致します。

  • コンボボックス 印刷ボタンについて

    アクセス勉強中です。 フォームで見ている画面だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにて印刷ボタンを作成したのですが、 すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャは下記です。 どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • コマンドボタンを使用不可にしても淡色にならない

    access2003です。 コマンドボタンをEnabledで使用不可にした時に、見た目は変わらず、淡色にならないのですが ひとめで使用不可ってわかる方法はないですか? テキストボックスやコンボボックスは使用不可って言うのが一目でわかります。 それになぜかaccess2007だと、コマンドボタンを使用不可にすると、淡色になります。 2003は使用不可にしても淡色にならない設定なのでしょうか?

  • エクセルVBA コンボボックス

    今データ入力用のフォームmainがあります。 そこで複数のデータを入力していくのですが、そこでわからなくなりました。 入力用コンボボックスがひとつだけのときは Private Sub userform_Initialize() Dim 配列(2) 配列(0) = "データ1" 配列(1) = "データ2" 配列(2) = "データ3" 入力用コンボ.List = 配列 End Sub Private Sub 入力用コンボ_Change() MsgBox 入力用コンボ.ListIndex End Sub としていたのですが、複数になった場合の理屈を含めわかりません。 一つの入力用フォームにコンボボックスが複数あった場合はどうすればよいのですか?

  • 複数のコンボボックスのドロップダウン表示

    ユーザーフォームにテキストボックス2個の後にコンボボックス2個を縦に配置し、上から入力していき一つ目のコンボボックスはEnterイベントでドロップダウン表示できるのですが 項目をクリックし選択した後 次のコンボボックスに移り同じようにドロップダウン表示したいのです。 コードは簡単に書くと以下のような感じです Private Sub ComboBox1_Enter() ComboBox1.DropDown End Sub Private Sub ComboBox1_Change() ComboBox2.SetFocus End Sub Private Sub ComboBox2_Enter() ComboBox2.DropDown End Sub で処理しようとするとフォーカスは移っている様なのですが、ドロップダウン表示されずカーソルのみ表示された状態になるのですが。 どうにか出来ないものでしょうか? お願いします。 Excel2003 使用しています。

  • VBA起動時のコンボボックスについて

    度々、お世話になっており、今回もご教授お願いしたいです。 VBAの“Sheet1”に2つのコンボボックスのプログラムを作成しました。 Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() どちらも選択(fmStyleDropDownList)のみです。 しかし、Excel起動時にコンボボックスの内容が登録されないため、 ThisWorkbookの【Private Sub Workbook_Open()】 で Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() ↑この2つを実行したいのですが、、、、 なんと記述したらよいかわからず、行き詰っています。。。 Private Sub Workbook_Open() ComboBox1_Change() = ture End Sub ↑こんな感じであれやこれや試してはいますが・・・ 記述方法をご教授ください。よろしくお願いします。

専門家に質問してみよう