いつもお世話になっております
下記のコードのListBoxへの読み込み
早くやる方法おしえてくれませんでしょうか
50行5列ですが、ユーザーフォーム開いた時
リストボックスに表示させるのですが、
瞬時ではなくてもいいのですが
おしえてくれませんでしょうか
Application.ScreenUpdateingとか
検索してみたら、listbox 非表示にしてから
読み込んでから表示にする方法も確認しましたが、
イマイチおそいんです。
With Me.ListBox2
Dim i As Long
For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
.AddItem ""
.List(.ListCount - 1, 0) = Cells(i, 2).Value
.List(.ListCount - 1, 1) = Cells(i, 3).Value
.List(.ListCount - 1, 2) = Cells(i, 4).Value
.List(.ListCount - 1, 3) = Cells(i, 5).Value
.List(.ListCount - 1, 4) = Cells(i, 6).Value
Next
End With
No.5ベストアンサー
- 回答日時:
#4です
>.List(.ListCount - 1, 0) = myData2(ii, 2).Value
の追記です。不具合のところだけ書いてしまったのですが、
.List(.ListCount - 1, 0) = myData2(ii, 2)方法も分かりますが、
配列やレンジで登録するなら、
(たぶんRange(Cells(4,4)がタイプミスとして想定)
Dim myData
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
myData = Range(Cells(4, "B"), Cells(LastRow, "G")).Value
With Me.ListBox2
.ColumnCount = UBound(myData, 2)
ListBox2.List = myData
End With
一度しかアクセスしないので配列を使う必要があるかは、分かりませんが、
こんな感じでどうでしょう。
Dim myData
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
myData = Range(Cells(4, "B"), Cells(LastRow, "G")).Value
With Me.ListBox2
.ColumnCount = UBound(myData, 2)
ListBox2.List = myData
End With
思い通りです
しかも列が多いとかの方が良いです
ありがとうございます
No.4
- 回答日時:
こんばんは、
どの位のタイムラグか分かりませんが、
ListBoxへ50行5列データの読み込みがインスタンス遅延の原因になる可能性は低いのではないかと思いますが、
UserFormを含むすべてのオブジェクトのデフォルト(プロパティウインドウで設定されている)設定を
検証してみてはいかがでしょう。(フォントやカラー、表示、、などなど)
ListBoxへのデータ登録については、
.RowSourceも良いとは思いますが、後に内容を変更する時に不具合が発生する可能性があったような記憶をしています。
>下記のコードでObjectがないとエラーでます。
これの原因は、配列に対して.Valueを使用している為です。
ただ、示されているコードを見ると?がいくつかあります。(表組みが見えないのであくまでロジックで)
例えば、LastRow = Cells(Rows.Count, "B").End(xlUp).Row これは、B列を対象にしていますが、
使われる場所がD~G列となっていますので、不具合を防ぐ為対象列範囲の確実な列を指定するべきかと思います。
ReDim myData2(1 To LastRow, 1 To 6)でmyData2はリセットされます。
また、2つの配列がありますが、myData2に値が入るコードがない様な?
実際には、1つのmyDataで良いように思います。
myData2(ii, 2)なぜmyData2(ii, 1)が無いのか?必要が無ければ元々作成する必要がなくなるのでは、、、と
さらに列方向の数も合わないような、、、この辺りは、他にロジックがあるのかも知れませんね。
参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) リストポックスへの抽出方法 1 2022/08/10 17:58
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBAチェックボックスで有効無効切り替えできるように 5 2022/10/21 16:13
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
Excel オートフィルタのリスト...
-
Excelのセルの色指定をVBAから...
-
SUMPRODUCT関数を用いた最小値
-
VBA listBoxについて
-
ExcelのINDEXとMATCH関数でスピ...
-
配列がとびとびである場合の書き方
-
【VBA】ユーザーフォーム リス...
-
配列の受け渡しについて
-
【VBScript】Dictionaryの項目(...
-
読み込みで一行おきに配列に格納
-
ノーツのデータをVBScriptで取...
-
Access VBA Split利用方法
-
[エクセル]連続する指定範囲か...
-
ExcelVBAの配列変数で一括でセ...
-
エクセルでエラーを無視して一...
-
エクセルの行の削除を配列で高...
-
エクセルVBAで変数をセルに一行...
-
[VBA]改行入りのセルの値を配列...
-
C#で配列のフィールドを取得したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
VBA listBoxについて
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
VBA 配列に格納した値の平均の...
-
配列のSession格納、及び取得方...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
Excelのオートフィルタで抽出し...
-
VB6.0 ファイルの一括読込み
-
Excel オートフィルタのリスト...
-
VBAで指定期間の範囲を抽出し、...
おすすめ情報
いつも有難うございます。
いろいろ入っています。
With ListBox5
.AddItem "男"
.AddItem "女"
.ListIndex = -1
End With
UFが開いた時のコードは上記だけです。
いろいろサイト拝見しましたら、
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim myData2(1 To lastRow, 1 To 3)
For i = LBound(myData) To UBound(myData)
If myData(i, 2) Like "*" & ListBox5.Value Then
myData2(cn, 1) = myData(i, 1)
myData2(cn, 2) = myData(i, 2)
End If
Next i
これをListboxにアレンジできるのでしょぅか。
下記のコードでObjectがないとエラーでます。
Private Sub UserForm_Initialize()
ListBox2.Visible = False
Dim i As Long, LastRow As Long
Dim myData2
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
myData = Range(Cells(4, 4), Cells(LastRow, 7)).Value
ReDim myData2(1 To LastRow, 1 To 6)
For ii = LBound(myData) To UBound(myData)
2回にわけます。
With Me.ListBox2
.AddItem ""
.List(.ListCount - 1, 0) = myData2(ii, 2).Value
.List(.ListCount - 1, 1) = myData2(ii, 3).Value
.List(.ListCount - 1, 2) = myData2(ii, 4).Value
.List(.ListCount - 1, 3) = myData2(ii, 5).Value
.List(.ListCount - 1, 4) = myData2(ii, 6).Value
ListBox2.Visible = True
End With
Next
どこが間違っているところおしえてくれませんでしょうか