ユーザーがExcelで列を指定して選択するように要求していますが、値をVBAで参照できる文字列に変換します。選択列の列がA、E、D、Sの場合、VBAで列を選択する方法
私はユーザーがA:A、E:E、D:D、S:Sを入力するのを避け、セルにA、E、D、Sを入力するだけです。私は答えが正しいと確信していますが、現時点では私は逃げ出しています。助言がありますか?
ユーザーがExcelで列を指定して選択するように要求していますが、値をVBAで参照できる文字列に変換します。選択列の列がA、E、D、Sの場合、VBAで列を選択する方法
私はユーザーがA:A、E:E、D:D、S:Sを入力するのを避け、セルにA、E、D、Sを入力するだけです。私は答えが正しいと確信していますが、現時点では私は逃げ出しています。助言がありますか?
私が言ったように、,
上
分割し、得られた配列を反復処理し、範囲を構築:
Sub fooooo()
Dim str As String
Dim rng As Range
Dim strArr() As String
str = "A,E,D,S" 'you can change this to the cell reference you want.
strArr = Split(str, ",")
With Worksheets("Sheet1") ' change to your sheet
Set rng = .Range(strArr(0) & ":" & strArr(0))
For i = 1 To UBound(strArr)
Set rng = Union(rng, .Range(strArr(i) & ":" & strArr(i)))
Next i
End With
Debug.Print rng.Address
End Sub
あなたは常に範囲を返す関数にこれを回すことができます。
Function fooooo(str As String, ws As Worksheet) As Range
Dim rng As Range
Dim strArr() As String
strArr = Split(str, ",")
With ws ' change to your sheet
Set rng = .Range(strArr(0) & ":" & strArr(0))
For i = 1 To UBound(strArr)
Set rng = Union(rng, .Range(strArr(i) & ":" & strArr(i)))
Next i
End With
Set fooooo = rng
End Function
次に、必要なすべてのサブステップからこのように呼び出します。
Sub foofind()
Dim rng As Range
Dim str As String
str = "A,E,D,S"
Set rng = fooooo(str, Worksheets("Sheet1"))
Debug.Print rng.Address
こんにちはスコット、提案していただきありがとうございます。私はあなたの最初の投稿、謝罪を完全に逃した。残念ながら、私は実際にこれを達成するためにルーチンを書く必要を避けようとしていましたが、私がしようとしていることに対して魔法の弾丸がないように聞こえます。ありがとうございました。私はこれを撃つだろう。 –
@JonRoseこれは非常に簡単です。メモリ配列を解析するとき、ループはほぼ瞬間的になります。 –
これは動作します。早速のご返事ありがとうございます。今、私はそれがどのように動作するかを理解するためにそれをdisectする必要があります。私はVBAでArrayの作業に精通していないので、後で使用するためにいくつかの値を追加する必要があります。再度、感謝します。 –
何を試しましたか?コードを投稿してください。 – SJR
さて、私はさまざまなプロパティを使用しようとしましたが、それについてです: 'Columns(1,5,4,19).select' –
あなたが試みたものを投稿した場合は、あなたのためのコードを一から書くように人々に依頼してください。 – SJR