|
▼さる さん:
こんばんは。
>お久しぶりにお世話になります。
>
>UserFormにListBoxが1つだけあります。
>Sheeet1のボタンをクリックすると、UserFormが表示され、
>ListBoxにSheet2のA列とC列のデータを表示したいのですが、
>うまくいきません。
>
>Sheet1のボタンをクリックしたときのコードはこんな感じです。
>1列分のデータならうまくいったのですが・・・。
列が連続していると簡単なのですが・・・。
方法はいくつかあると思いますが、
作業列を設置したらどうでしょうか?
例では、D列を作業列としました(作業列はどこでもいいです)。
Sub 摘要参照()
Dim maxlen As Long
Application.ScreenUpdating = False
行 = ActiveCell.Row: 列 = ActiveCell.Column
If 行 > 2 And 列 = 3 Then
Sheets("摘要・科目").Select
レコード数 = Range("A1").CurrentRegion.Rows.Count
With UserForm1.ListBox1
.MultiSelect = fmMultiSelectSingle
.Font.Name = "MS ゴシック"
' 全角:半角が2:1になるようなフォント選択
maxlen = Application.Evaluate("max(lenb(" & Range(Cells(2, 1), _
Cells(レコード数, 1)).Address & "))") + 5
' ↑(A列の文字列の長さの最大)+5を取得
Range(Cells(2, 4), Cells(レコード数, 4)).Formula = _
"=a2&rept("" ""," & maxlen & "-lenb(a2))&c2"
' ↑作業列のD列に連結数式を入れる
.List = Range(Cells(2, 4), Cells(レコード数, 4)).Value
' ↑リストボックスにセット
Range(Cells(2, 4), Cells(レコード数, 4)).Value = ""
' ↑作業列の初期化
End With
Sheets("出納帳").Select
UserForm1.Show
End If
Application.ScreenUpdating = True
End Sub
|
|