2017-05-21 5 views
1

サイズが変更される範囲があり、サイズ変更をより具体的にする方法があるかどうかを知りたいと思っています。すなわち.Resize(,7)はB-Gの列になるだろうが、私はB、F、Gの列しか望んでいない。Resize()をより具体的にしますか?

これは私が作業している行です。

a = .Range("b2", .Range("b" & Rows.Count).End(xlUp)).Resize(, 7).Value 

Private Sub TextBox_Search_Change() 
    Select Case True 
     Case OptionButton_User_Name.Value 
      Dim a, i As Long, ii As Long, n As Long, temp As String 
      If Len(Me.TextBox_Search.Value) Then 
       temp = UCase(Me.TextBox_Search.Value) 
       With Sheets("ToolData") 
        a = Union(.Range("B:B"), .Range("F:F"), .Range("G:G")).Value 
       End With 
       a = Application.Transpose(a) 
       For i = 1 To UBound(a, 2) 
        If UCase(a(1, i)) Like "*" & temp & "*" Or _ 
        UCase(a(2, i)) Like "*" & temp & "*" Then 
         n = n + 1 
         For ii = 1 To UBound(a, 1) 
          a(ii, n) = a(ii, i) 
         Next 
        End If 
       Next 
       If n > 0 Then 
        ReDim Preserve a(1 To UBound(a, 1), 1 To n) 
        Me.ListBox_History.Column = a 
       End If 
      Else 
       With Sheets("ToolData") 
        Me.ListBox_History.List = .Range("b2", .Range("b" & Rows.Count).End(xlUp)).Resize(, 7).Value 
       End With 
      End If 
      Case Else 
    End Select 
End Sub 

答えて

4

Union開始するには良い場所かもしれません。簡単な例では、このようにあなたのために働くことができます:

Dim r as Range 
With ThisWorkbook.Worksheets("Sheet1") 
    Set r = Union(.Range("B:B"),.Range("F:F"),.Range("G:G")) 
End With 
+0

神、私はあなたが大好きです。常にあなたからすべてのことをする新しい方法を学ぶ。私はあなたが私に与えたものを私のニーズに合わせて、それがどのようになっているかをあなたに知らせるつもりです。 – Quint

+0

あなたのソリューションは動作しますが動作しますが、実装すると "タイプの不一致"エラーが発生します。 – Quint

+1

@WilliamSmithあなたが本当にそれを動作させることができない場合は、あなたが持っているコードであなたの質問を更新してください。一つのことは、私の変数 'r'は範囲であり、変数' a'はそうではないことに注意してください。それは問題を引き起こすかもしれません。あなたは変形として減量し、 'Union 'の後に' .Value'を追加することができます – CallumDA

関連する問題