Excel VBA質問箱 IV

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

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


3587 / 13644 ツリー ←次へ | 前へ→

【61238】Combobox一覧更新 HAM 09/4/18(土) 18:09 質問[未読]
【61239】Re:Combobox一覧更新 つん 09/4/18(土) 19:12 発言[未読]
【61283】Re:Combobox一覧更新 HAM 09/4/22(水) 12:08 お礼[未読]

【61238】Combobox一覧更新
質問  HAM  - 09/4/18(土) 18:09 -

引用なし
パスワード
   ユーザーフォームに
COMBOBOX1と2を設置し
起動時にComboBox1に現在開いているファイルの一覧を取得し
Combobox1が選択された際に
選択されたファイルの存在するシートの一覧を取得するMacroを用意しました。

通常起動には問題が無かったのですが
UserFromを起動した後に
このMacroが記載されている以外のファイルを消し
その消したファイルを選択した際に当然エラーになりました

この場合に
対処しようと思い
下記のようにしたところ
エラーメッセージが2回出て
ボックス内に一覧が2重に取得されてしまいました

回避策をご教授願えませんでしょうか

Private Sub UserForm_Initialize()
Dim Wb As Workbook
Dim CMB1 As String
  ComboBox1.Clear
  For Each Wb In Workbooks
    ComboBox1.AddItem Wb.Name
  Next
End Sub
Private Sub ComboBox1_Change()
On Error GoTo エラー
  Dim Ws As Worksheet
  CMB1 = ComboBox1
  Me.ComboBox2.Clear
  For Each Ws In Workbooks(Me.ComboBox1.Value).Worksheets
    Me.ComboBox2.AddItem Ws.Name
  Next
   Workbooks(CMB1).Activate
Exit Sub
エラー:
  MsgBox CMB1 & "が見つから無い為ファイル一覧を更新します"
  Me.ComboBox2.Clear
  For Each Ws In Workbooks(Me.ComboBox1.Value).Worksheets
    Me.ComboBox2.AddItem Ws.Name
  Next
End Sub

【61239】Re:Combobox一覧更新
発言  つん  - 09/4/18(土) 19:12 -

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

こんばんは^^

提示されいるコードそのままで検証されてるのかな?
こちらで、実行してみると、

まずいきなり、「変数が定義されていません」のエラーになります。
「UserForm_Initializ」で宣言されている
Dim CMB1 As Stringは、「ComboBox1_Change」内でないとだめかと・・・

>エラーメッセージが2回出て
>ボックス内に一覧が2重に取得されてしまいました

これも、こちらでは、
ブックを一つ消してから、それを選択すると、
「MsgBox CMB1 & "が見つから無い為ファイル一覧を更新します"」
のメッセージが出てから
「インデックスは有効範囲に・・云々」のエラーが出ます。

エラー処理の中で、

 For Each Ws In Workbooks(Me.ComboBox1.Value).Worksheets

を再びしてるので、当然かと・・・
イマイチ提示されているコードと、おっしゃってることがそぐわないような感じがします。

リスとされているブックが一つなくなって、
一覧を更新します・・・にしたかったら、ComboBox1のリスト更新しないと駄目なんじゃ????

【61283】Re:Combobox一覧更新
お礼  HAM  - 09/4/22(水) 12:08 -

引用なし
パスワード
   ▼つん さん
大変遅くなり申し訳ございません。
何とか解決にこぎつけました。
指摘いただきありがとうございました。

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