- ベストアンサー
Excel UserForm ListBoxの表示についての質問
- Excel UserForm ListBoxの表示についての質問です。Sheets('加工').Range('A44')からRange('G' & LastRow)のセルの値をForm_receipt.ListBox1に表示させたいのですが、C~E列は数値なので桁数区切りで表示したくてマクロを作ったのですが、A列1列しか表示されないマクロになってしまいました。どこが悪いのかご教示願えませんか?あわせてC~E列を右揃えでリスト表示する方法も教えてください。
- Excel UserForm ListBoxの表示方法についての質問です。Sheets('加工').Range('A44')からRange('G' & LastRow)のセルの値をForm_receipt.ListBox1に表示したいのですが、現在のマクロではA列1列しか表示されません。どう修正すればよいでしょうか?また、C~E列を右揃えでリスト表示する方法も教えてください。
- Excel UserForm ListBoxの表示についての問題です。Sheets('加工').Range('A44')からRange('G' & LastRow)のセルの値をForm_receipt.ListBox1に表示しようとしていますが、現在のマクロではA列1列しか表示されません。どの部分が間違っているのでしょうか?また、C~E列を桁数区切りで表示し、右揃えでリスト表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
columncountがどこにも指定されていません。プロパティシートで指定しているのでしょうか。 シートに7列ぶんのデータが入っていますか。 数値の桁区切りは"###,0"のようなのでいいです。 文字に区切り・・・"@@@,@@@,@@@"だと桁と文字数があっていないとずれます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
コードをそのまま質問にコピペして、コードにコメントも入れてなくて、何をして居るかの説明も無く、読者回答者に読み解かしているとは、読むのにも苦労するよ。 多分こんな例だろうと、コードを書いてみた。 だいぶん、範囲など変えているところがあるのでこれをマナスルなら注意。 例データ A-G列 a aa 2345 2345 2345 a1 b1<==第5行から始まり11行の例 b bb 3456 3456 3456 a2 b2 c cc 4567 4567 4567 a3 b3 d dd 8912 8912 8912 a4 b4 e ee 2345 2345 2345 a5 b5 f ff 5678 5678 5678 a6 b6 g gg 4567 4567 4567 a7 b7 h hh 3456 3456 3456 a8 b8 i ii 2345 2345 2345 a9 b9 j jj 2345 2345 2345 a10 b10 k kk 2456 2456 2456 a11 b11 ーーー コード Sub Macro48() Dim myRng As Range Dim myList(30, 7) '<==質問の場合と変えている Dim c As Variant Dim i As Integer Dim j As Integer Dim LastRow As Integer '-- UserForm1.ListBox1.Clear ' Set Rng = Sheets("Sheet1").Range("A5:A15") '<==質問の場合と変えている MsgBox WorksheetFunction.CountBlank(Rng) If WorksheetFunction.CountBlank(Rng) <> 0 Then Exit Sub '<==ブランクがあると処理止め LastRow = Worksheets("Sheet1").Range("A65536").End(xlUp).Row '最終行 MsgBox LastRow Set myRng = Worksheets("Sheet1").Range("A5:A15") With Worksheets("Sheet1") For i = 5 To LastRow '5行目から15行目まで<==質問と変えている For j = 1 To 7 'A-G列繰り返し If j = 3 Or j = 4 Or j = 5 Then 'C,D,E列は数なので、表示形式設定 myList(i - 4, j - 1) = Format$(.Cells(i, j), "###,##0") Else myList(i - 4, j - 1) = .Cells(i, j) 'セルの値=文字列はそのまま End If Next j Next i End With '-- UserForm1.ListBox1.List() = myList Set Rng = Nothing Set myRng = Nothing '--- 'リスト表示幅設定 With UserForm1.ListBox1 .ColumnWidths = "30,30,60,60,60,60,50" '<==質問の場合と変えている 'リスト表示列数設定 .ColumnCount = 7 '<==追加した End With UserForm1.Show End Sub ーーー 結果(フォームのリストボックスのアイテム)はここに出せないが実際やってもらえればわかる。 コードを参考にしてください。 十分にフォームとリストボックスの縦横幅を広げてやってください。
お礼
ご指摘の通り 'リスト表示列数設定 .ColumnCount = 7 の設定わすれでした。お騒がせしました。 また、自分が作成したマクロですから質問に添付する場合はコメントを つけないと解読の手間をかけてしまうことに気付かず申し訳ありませんでした 今後の質問時に気をつけます
「ListBox」のプロパティ「ColumnCount」に正しい値を入れていますか。 デフォルトでは「1」なので、最初の列しか表示されません。 右詰めはプロパティの「TextAlign」で可能ですが、一部の列のみ指定することは出来ないと思います。
お礼
'リスト表示列数設定 .ColumnCount = 7 を忘れていました 回答の通り、一部の列に右詰め設定できないのであきらめます。 ありがとうございました。
お礼
columncountを設定忘れしていたので1列しか表示されないはずですね。 お騒がせしました。 数値の桁区切りも適切な回答ありがとうございました