親愛なるstackoverflowのコミュニティ、私は列の数値に基づいて行を非表示にすることができるはずマクロを記述する必要があり、作業時エクセルVBA、ネストされたループ/非表示の行
。それらは1つのセルで複数のものになることができ、入力は一度に複数の数値を表示できるようにする必要があります。
for example:
row 1: 20, 30, 15
row 2: 20
row 3: 13, 76
私は20、30を入力してあれば、それは行1 & 2にのみ表示されるはずです)
I VBAに新しいJava/C#とイムと通常のコード、Idは本当に助けに感謝して:
私の計画は、入力ボックスを表示し、それらの数字を配列に分割することでした。 次に、for-Loopを使って各行を調べたいと思います。そこでは、各ループが2つずつ追加され、数字が等しいかどうかがチェックされます。そうでない場合は、行を非表示にします。そうであれば、showを実行してから、ループごとに両方を終了して次の行に移動します。ネストされたループを終了するには、私はブール値の間にdoを使ってみましたが、うまくいきません。
今のところ、すべての入力番号(例ではrow1のみ)の行のみが表示されます。それを分割することにより
Sub SortingTest()
Dim numbers() As String
myNum = Application.InputBox("Enter BKPS (separate multiples by ,)")
numbers = Split(myNum, ",", -1, compare)
'Userinput Vars
Dim row As Integer
row = 1
Dim saveNumber As String
'Looping Vars
Dim existingNum As String
Dim existingNumsArray() As String
Dim checkRows As Long
Dim saveElement As String
Dim done As Boolean
done = False
' Range("B3").Value = 10
' Saves the Input as Array:
For Each Element In numbers
saveNumber = Element
Cells(2, row).Value = saveNumber
row = row + 1
Next Element
Dim b As Integer
Do While done = False
For b = 1 To 100 'hardcoded, should be length of document. b == row;
existingNum = Cells(b, 3).Value
existingNumsArray = Split(existingNum, ",", -1, compare)
' loop thru input numbers
For Each Element In numbers
saveElement = Element
'loop thru given numbers
For Each inputElement In existingNumsArray
If saveElement <> inputElement Then
Rows(b).Hidden = True
ElseIf saveElement = inputElement Then
Rows(b).Hidden = False
done = True
Exit For
End If
Next
Next
Next
Loop
End Sub
Excelにインデックス付きの行がありません。だから 'row = 1'で始まります。 – Fratyx
ありがとうございます!しかし、同じ行でランタイムエラーが発生しています。 – Betci
Hmm。問題は解決しませんが、行番号は 'Cells'関数の**最初の**パラメータでなければなりません。 – Fratyx