[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAユーザーフォーム リストボックス』(こっこ)
何度もすみません><あと少しでユーザーフォームの完成に近づいているのですが
6つあるリストボックスのうち下記の1つだけ
セルの2行目以降を表示してくれません;
お分かりになられましたら教えてください・・・
lastrow = Sheets("年").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox3
.ColumnHeads = True '花
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年!" & Range("M8", "R" & lastrow).Address
End With
< 使用 Excel:Office365、使用 OS:Windows10 >
Private Sub ComboBox1_Change()
Dim lastrow As Long
astrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox1
.ColumnHeads = True
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("A8", "F" & lastrow).Address
End With
lastrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox2
.ColumnHeads = True
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("G8", "L" & lastrow).Address
End With
(こっこ) 2020/05/26(火) 14:57
>Private Sub ComboBox1_Change() プロシージャ名が不正です。 コマンドボタンクリックにしてみたら? (く) 2020/05/26(火) 15:31
そして、コンボボックスの方は、選択できる項目が入っていますか? データなしだと選択できないので、イベント発生しませんよ?
あと、6列分のデータを5列に詰めようとしているので、6列目が表示されませんが、これも意味不明です。
(???) 2020/05/26(火) 15:53
???さん
!そーですよねcomboボックス・・最初は無表示になってました;
6列のデーターの件忘れてました;ご指摘ありがとうございます。
(こっこ) 2020/05/26(火) 16:25
Private Sub ComboBox1_Change()
Sheets("入力").Range("M1").Value = ComboBox1.Value
Label14.Caption = Sheets("年表").Range("A4").Value
Label17.Caption = Sheets("年表").Range("H5").Value
Label15.Caption = Sheets("年表").Range("O5").Value
Label18.Caption = Sheets("年表").Range("V5").Value
lastrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox1
.ColumnHeads = True '
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("A8", "E" & lastrow).Address
End With
lastrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox2
.ColumnHeads = True '
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("H8", "L" & lastrow).Address
End With
lastrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox3
.ColumnHeads = True '
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("O8", "S" & lastrow).Address
End With
lastrow = Sheets("年表").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox4
.ColumnHeads = True '
.ColumnCount = 5
.ColumnWidths = "50;50;80;60;70"
.RowSource = "年表!" & Range("V8", "Z" & lastrow).Address
End With
End Sub
(そら) 2020/05/27(水) 12:10
(試してないですが↓みたいは感じではないでしょうか?)
Private Sub ComboBox1_Change() Dim lastrow As Long Dim SH As Worksheet Set SH = Worksheets("年表")
Sheets("入力").Range("M1").Value = ComboBox1.Value Label14.Caption = SH.Range("A4").Value Label17.Caption = SH.Range("H5").Value Label15.Caption = SH.Range("O5").Value Label18.Caption = SH.Range("V5").Value
lastrow = SH.Cells(SH.Rows.Count, 1).End(xlUp).Row If lastrow < 8 Then Exit Sub
For i = 1 To 4 With Controls("ListBox" & i) .ColumnHeads = True ' .ColumnCount = 5 .ColumnWidths = "50;50;80;60;70" .RowSource = Split(SH.Range("A8:E" & lastrow).Offset(, (i - 1) * 7).Address(External:=True), "]")(1) End With
End Sub
ちなみに、ニックネームは1つにしたほうが良いと思いますよ。
(もこな2) 2020/05/27(水) 15:08
お返事ありがとうございます。
一度試してみます><
ニックネームですよね・・しまったとあとあと気づきました。・。・
気を付けます;
(そら) 2020/05/27(水) 16:28
ちなみに、 2020/05/27(水) 15:08 にレスした方のニックネームは 「もこな2」さんです。 (OK) 2020/05/27(水) 16:51
ループは難しいです;下記の部分でエラーになり;rowsourceプロパティエラーになります。
.RowSource = Split(SH.Range("A8:E" & lastrow).Offset(, (i - 1) *
Private Sub ComboBox1_Change()
Dim lastrow As Long Dim SH As Worksheet Set SH = Worksheets("年表") Sheets("入力").Range("M1").Value = ComboBox1.Value Label14.Caption = SH.Range("A4").Value Label17.Caption = SH.Range("H5").Value Label15.Caption = SH.Range("O5").Value Label18.Caption = SH.Range("V5").Value lastrow = SH.Cells(SH.Rows.Count, 1).End(xlUp).Row If lastrow < 8 Then Exit Sub For i = 1 To 4 With Controls("ListBox" & i) .ColumnHeads = True ' .ColumnCount = 5 .ColumnWidths = "50;50;80;60;70" .RowSource = Split(SH.Range("A8:E" & lastrow).Offset(, (i - 1) * 7).Address(External:=True), "]")(1) End With
Next i
End Sub
(そら) 2020/05/27(水) 17:15
Private Sub テストボタン_Click()
Dim lastrow As Long, i As Long Dim SH As Worksheet: Set SH = Worksheets("年表")
Stop
lastrow = SH.Cells(SH.Rows.Count, 1).End(xlUp).Row If lastrow < 8 Then Exit Sub For i = 1 To 4 With Controls("ListBox" & i) .ColumnHeads = True ' .ColumnCount = 5 .ColumnWidths = "50;50;80;60;70" .RowSource = Split(SH.Range("A8:E" & lastrow).Offset(, (i - 1) * 7).Address(External:=True), "]")(1) End With Next i
End Sub
↑で問題がなければ、ステップ実行してなにをやっているか調べてみてください。
(もこな2) 2020/05/27(水) 18:12
ありがとうございます。
早速試してみます。
(そら) 2020/05/28(木) 10:28
ご回答ありがとうございました。無事動くようになりました。
(こっこ) 2020/05/29(金) 17:20
私は整理しただけなので、"動いた"のであれば、元のコードでも動いたはずですよ。
何がまずかったのかは、ご自身で検証してください。
(こちらには同じ環境がないので、原因分析のお手伝いはできません)
(もこな2 ) 2020/05/29(金) 17:33
Private Sub ComboBox1_Change() Dim MyRNG As Range Dim i As Long '行番号とコントロールの番号の両方で使用
Sheets("入力").Range("M1").Value = ComboBox1.Value 'Label14,Label17,Label15,Label18のCaptionは、固定されているので削除
'▼年表シートのA列最終行を調べて8行目以下なら、最初の表範囲を「MyRNG」にセットする With Sheets("年表") i = .Cells(.Rows.Count, "A").End(xlUp).Row
If i < 8 Then MsgBox "データなし" Exit Sub Else Set MyRNG = .Range("A8:E" & i) End If End With
'▼ListBox1〜4をループ処理 For i = 1 To 4 With Controls("ListBox" & i) .ColumnHeads = True .ColumnCount = 5 .ColumnWidths = "50;50;80;60;70" .RowSource = Split(MyRNG.Offset(, (i - 1) * 7).Address(External:=True), "]")(1) End With Next i
End Sub
改めてみると、「ComboBox1_Change」で変わってくるのって↓だけですよね?
Sheets("入力").Range("M1").Value = ComboBox1.Value
(もこな2 ) 2020/05/30(土) 11:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.