我目前正在嘗試製作一個程序,它接受用戶輸入並將這些值存儲在名爲FastenerNumbers的數組中。基於這些值,程序然後用綠色填充特定的單元格,以便用戶知道在那裏輸入值。問題是如果數組中的值是0我想刪除該列,以便工作表更清晰。根據條件刪除特定的列
我遇到的問題是,當在for循環中刪除列時,單元格向左移動。由於這一些細胞基本上被跳過。爲了抵消這一點,我基本上不得不暴力強制該程序,以便循環多次來解決任何跳過的列。
下面的代碼:
'Make cells green for user to put inputs into
For i = 0 To UBound(FastenerNumbers)
If FastenerNumbers(i) <> 0 Then
With Range(Range("A14").Offset(0, 2 * i), Range("A14").Offset(FastenerNumbers(i) - 1, (2 * i) + 1))
.Borders.LineStyle = xlContinuous
.Interior.ColorIndex = 4
End With
End If
Next
'Define initial counter variable
j = 1
' Do Until j = 5
' For i = 0 To UBound(FastenerNumbers)
' If FastenerNumbers(i) = 0 Then
' Range(Range("A14").Offset(0, 2 * i), Range("A14").Offset(FastenerNumbers(i) - 1, (2 * i) + 1)).EntireColumn.Delete
' End If
' Next
' Loop
'
Do
For Each cell In Range("A14", Range("A14").Offset(, (UBound(FastenerNumbers) + 1) * 2))
If cell.Interior.ColorIndex <> 4 Then
cell.EntireColumn.Delete
End If
j = j + 1
If j >= (5 * (UBound(FastenerNumbers) + 1) * 2) Then
Exit Do
End If
Next
Loop
中的僞是另一種方法,我打算用。我不認爲任何一種方法都比另一種更好。我希望循環更清潔,更高效。
代替刪除列,只是隱藏它?編輯:或向後循環? – findwindow