こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelVBAコンボボックスの値の入力

ExcelVBAでマルチページでユーザーフォームを作っています。

マルチページを作製しているシートのシート2とシート3にそれぞれコンボボックスに当てはめる値を入れてあります。

コンボボックス1には「シート2のA2から最後」まで。
コンボボックス2には「シート3のA1から最後」まで。

というように設定してあります。

コードの記述としてはこんな感じでしました。

Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Dim lastRow As Integer
lastRow = Cells(Row.Count, 1).End(xlUp).Row
With ComboBox1
For i = 2 To lastRow
If ComboBox1 = "" Then
.AddItem Worksheets("Sheet2").Cells(i, 1).Value
End If
Next i
End With
End Sub

これはコンボボックス1の場合なのですが、2は一部を変えています。

コンボボックスを選択時にシートに記載してある内容は表示されるのですが、行が多い方に引っ張られる感じになっています。

コンボボックス1の方は今のところ30行ちょっとなので、その分のデータが表示されます。コンボボックス2の方は今のところ10行程度なので、全てを表示した後に空白が表示されています。見た感じで、シート3のデータと空白分を合わせて、シート2つまりは、コンボボックス1と同じ分だけ表示しようとしているみたいなのです。

よく分からないエラーなのですが、これを回避する方法はありますでしょうか?

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2014-01-23 11:40:53

QNo.8442756

すぐに回答ほしいです

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

ComboBox1は巧く動いてComboBox2に問題が発生してるんですよね
問題の起きているComboBox2の方のコードを提示しないのはなぜでしょうか?

lastRow = Cells(Row.Count, 1).End(xlUp).Row

lastRowを得るのにWorksheetsを指定していないので現在Activeなシートの情報を得てしまいます。
情報を得るWorksheetsを指定しましょう。たぶんComboBox1とComboBox2で同じWorksheetからlastRow得てるのだと思います。

For~Nextループに入る前にComboBoxをクリアしましょう、そうしないとイベントが発生するごとにドンドン追加されていきます。

投稿日時 - 2014-01-23 17:38:39

お礼

ありがとうございました。解決しました。

投稿日時 - 2014-01-24 11:01:25

ANo.1

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問