2014-02-19 100 views
2

我使用下面的代碼刪除行,如果第一個單元格不是數字(文本或空白單元格)刪除行,如果第一個單元格不是數字VBA的Excel

Dim LR3 As Long, i3 As Long 
With Sheets("Productos") 
LR3 = Range("A" & Rows.Count).End(xlUp).Row 
For i3 = LR3 To 2 Step -1 
    If IsNumeric(Sheets("Productos").Range("A" & i3).Value) Then 
    Else 
    Rows(i3).Delete 
    End If 
Next i3 
End With 

LR3 2的使用,因爲第一行是一個標題行,我不希望它被刪除。我沒有看到代碼有什麼問題,甚至沒有錯誤。你看到有什麼問題嗎?這可能是一個虛假的程序?

+0

我只是在2010年咆哮這個,它按預期運行。發生了什麼事嗎? –

回答

3

我懷疑你的代碼存在問題,Sheets("Productos")不是activesheet。所以Rows(i3).Delete指的是這可能不是Sheets("Productos")

請注意,在下面的代碼中使用點的activesheet。

試試這個(久經考驗

Sub Sample() 
    Dim LR3 As Long, i3 As Long 

    With Sheets("Productos") 
     LR3 = .Range("A" & .Rows.Count).End(xlUp).Row 

     For i3 = LR3 To 2 Step -1 
      If Not IsNumeric(.Range("A" & i3).Value) Then .Rows(i3).Delete 
     Next i3 
    End With 
End Sub 

編輯:我錯過了空白單元格的一部分,但由於吉米的帖子,我看到了。

修正代碼

Sub Sample() 
    Dim LR3 As Long, i3 As Long 

    With Sheets("Productos") 
     LR3 = .Range("A" & .Rows.Count).End(xlUp).Row 

     For i3 = LR3 To 2 Step -1 
      If Not IsNumeric(.Range("A" & i3).Value) Or _ 
      .Range("A" & i3).Value = "" Then .Rows(i3).Delete 
     Next i3 
    End With 
End Sub 
+0

添加表單選擇不會傷害.. – gbianchi

+2

'添加表單選擇不會傷害.. - gbianchi 27秒前'@gbianchi。你的意思是'Sheets(「Productos」)。選擇'?如果是的話,那麼你可能想看到[THIS](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

+2

@SiddharthRout有正確的想法。在使用VBA進行excel編程時,您絕對不想使用活動或選擇,因爲它幾乎會一直打破。爲工作表創建變量。昏暗的ws作爲工作表;設置ws = ThisWorkbook.Sheets(「Productos」); –

3

如果單元格爲空,則IsNumeric將返回true。你可以嘗試使用len,

Dim LR3 As Long, i3 As Long 

With Sheets("Productos") 
    LR3 = .Range("A" & .Rows.Count).End(xlUp).Row 

    For i3 = LR3 To 2 Step -1 
     If IsNumeric(.Range("A" & i3).Value) And _ 
     len(.Range("A" & i3).Value) > 0 Then 

     Else 
      .Rows(i3).Delete 
     End If 
    Next i3 
End With 
+1

+ 1不會錯過空白單元格部分:)但是,行(i3).Delete仍然不完全合格,如果使用'Sheets(「Productos」)'是不活躍:) –

+0

謝謝,我編輯完全合格,並且With塊更容易在眼睛:) –

+0

@JimmySmith這是罕見的。我使用了你的一段代碼,但它不刪除空白或非數字行。這真的很奇怪,因爲Siddharth完成了這項工作:( – agustin

相關問題