[英]Excel VBA isn't Validating integer values correctly for comparison
基本上,我試圖遍歷一列(R:R)中的值小於50的單元格
這是代碼:
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets("Pyxis Inventory 6North1 and 6No").Select
Cells(1).EntireRow.Copy (Sheets("Sheet1").Range("A1").EntireRow)
Cells(1).EntireRow.Copy (Sheets("Sheet2").Range("A1").EntireRow)
Dim val1, val2 As String
Dim i, j, x As Integer
Dim colCount As Integer
Dim daysUnused As Boolean
Dim daysVal As Integer
colCount = Sheets("Pyxis Inventory 6North1 and 6No").Range("A1").CurrentRegion.Rows.Count
daysUnused = IsEmpty(Sheets("Settings").Range("B2"))
If daysUnused = True Then
'do nothing yet
ElseIf daysUnused = False Then
daysVal = Sheets("Settings").Range("B2").Value
For x = 2 To colCount
If Cells(x, 18).Value <= daysVal Then
Cells(x, 18).EntireRow.Copy (Sheets("Sheet4").Range("A1").Offset(x, 0))
Cells(x, 18).EntireRow.Delete
End If
Next x
End If
End Sub
我的問題是它不會刪除數字少於50的行。
我已經將第18列中的單元格的格式也設置為僅數字。
我想做的基本上是排序,但不是要保留值,而是要刪除小於50的任何內容或用戶為daysVal變量輸入的內容。
謝謝
首先,最佳做法是刪除行從底部開始並進行處理。 例如, For x = colCount to 2 step -1
。
If daysUnused = True
和ElseIf daysUnused = False Then
則對一個簡單的布爾值進行了過度評估。 后者可以簡化為“ Else
。 根據嚴格的定義,如果在True時不打算做任何事情,那么Not
綽綽有余。
daysUnused = IsEmpty(Sheets("Settings").Range("B2"))
If Not daysUnused Then
daysVal = Sheets("Settings").Range("B2").Value
For x = colCount to 2 step -1
If Cells(x, 18).Value <= daysVal Then
Cells(x, 18).EntireRow.Copy Sheets("Sheet4").Range("A1").Offset(x, 0)
Cells(x, 18).EntireRow.Delete
End If
Next x
End If
聽起來您好像陷入了行跳過陷阱,使從上到下(刪除列時從右到左)成為一種規范做法。 希望以上內容可以幫助您收緊代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.