2017-10-22 6 views
0

「Sheet1」の列「A」に動的行があり、10から60行に時々変化しています。私はこのコードをオプションの選択(「シート2」で作業しているとき)でユーザフォームリストボックスに挿入します。私はどこに問題があるのか​​分からないのですか? :リストボックスに動的行を割り当てる

2)私には分かりますが、私には分かります。どうすれば "シート2"の行 "B"にあるコラムが私のリストボックスから選択されたアイテムを共有していますか?意味をなさない

Q1Q2

希望: は、下のスクリーンショットです。それらが使用されている場合 おかげでデザインモードで

Option Explicit 

Private Sub UserForm_Initialize() 
    Dim ColCnt As Long 
    Dim rng As Range 
    Dim ColWidths As String 
    Dim i As Long 


    With ThisWorkbook.Sheets("Sheet1") 
    Set rng = Range("A1", .Range("A2").End(xlDown)) 
    End With 

     With Me.lbxRange 
     .ColumnCount = 1 
     .RowSource = rng.Offset(5).Resize(rng.Rows.Count - 1).Address 
    End With 
End Sub 
+0

Q1:セルが実際には空でないことを意味します。どちらかに空白文字または数式があります。これを確認して確認できますか? –

答えて

0

明確のListBoxの値集合ソース財産と...次のコードに

Private Sub UserForm_Initialize() 
    Dim i As Long, j As Long, LR As Long 
    Dim x() 
    With ThisWorkbook.Sheets("Sheet1") 
     LR = .Cells(Rows.Count, 1).End(xlUp).Row 
     For i = 2 To LR 
      If VBA.Trim(.Cells(i, 1)) Like "?*" Then 
       j = j + 1 
       ReDim Preserve x(1 To j) 
       x(j) = .Cells(i, 1) 
      End If 
     Next i 
     If j > 0 Then 
     Me.lbxRange.List = x 
     Else 
     Me.lbxRange.Clear 
     End If 
    End With 
End Sub 

削除された未使用の変数を試してみるには、それらを追加します後で同じイベントで。

+0

ここから私はここから私の必要性に迅速に対応しようとしたコードです。コードが示すように、値を持つすべての行と列を選択します。私はシート1のColum Aが私のリストボックスを埋めるようにしてからコラムを隠すだけです。レンジ 薄暗いColWidthsプロパティ限り 薄暗いRNGとして – Matt

+0

ます。Private Sub UserForm_Initialize() 薄暗いColCnt文字列 として暗い私としてロング ColCnt = ActiveSheet.UsedRange.Columns.Count セットRNG = ActiveSheet.UsedRange Me.lbxRange 付き .ColumnCount = ColCnt .RowSource = _ rng.Offset(1).Resize(rng.Rows.Count - 1).Address I = 1の場合.ColumnCount ColWidthsプロパティ= ColWidthsプロパティ&rng.Columns(I)に.Width& ";" 次のI End Subの – Matt

+0

@stkneerで .ColumnWidths = ColWidthsプロパティ .ListIndex = 0 終了:私はあなたのマクロを実行すると、私は実行時エラーを取得 '9' ...インデックスが有効範囲にありません – Matt

0

@stkneer:正直なところ、デバッグにはうまくいかなかった。ここでは、私が最初の質問を出して正しく働くコードを示します。 2番目のクエリ(列を非表示)私は新しいスレッドで投稿します。もう一度ありがとう

Private Sub UserForm_Initialize() 

    Dim r As Range 
    Dim DataArea As Range 
     Application.ScreenUpdating = False 

    Sheets("Sheet1").Select 
    Range("a2").Select 
    Set DataArea = Range("a2", Range("a2").End(xlDown)) 

    For Each r In DataArea 
     lstBox1.AddItem r.Value 
    Next r 

    lstBox1.MultiSelect = fmMultiSelectMulti 
    lstBox1.ListStyle = fmListStyleOption 

    Sheets("Sheet2").Select 
    Application.ScreenUpdating = True 
End Sub 
関連する問題