2016-02-28 79 views
0

我有一些代碼查找Excel文件中包含與文本框相同的字符的記錄。然後我需要刪除該行,但我不知道如何執行此操作。請有人能幫助我嗎? 這是我的代碼:從VBE中刪除Excel中的行

Dim oXL As Excel.Application 
    Dim oSheet As Excel.Worksheet 
    Dim oRng As Excel.Range 
    'create object and open workbook 
    oXL = CreateObject("Excel.application") 
    oXL.Workbooks.Open(CreateAdmin.FileLocation + "\DVDRental.xls") 

    'open worksheet 
    oSheet = oXL.ActiveWorkbook.Sheets("Logins") 

    oRng = oSheet.Range("A1:A100") 

    Dim blankspace As Integer = 1 

    Do Until oRng(blankspace, 2).value() = "" 
     If oRng(blankspace, 2).value() <> "" Then 
      blankspace = blankspace + 1 
     End If 
    Loop 

    Dim introw As Integer = 1 
    Dim user As String 
    Dim username As String = TextBox1.Text 

    If username = "" Then 
     MsgBox("Please Enter A User ID") 
    Else 
     Do 
      user = oRng(introw, 2).value() 


      If user = username Then 


       oXL.ActiveWorkbook.Save() 
       oXL.ActiveWorkbook.Close() 

       Exit Do 
      Else : introw = introw + 1 

      End If 
     Loop Until introw = blankspace 

     oRng = Nothing 
     oSheet = Nothing 
     oXL.Quit() 
     oXL = Nothing 
     TextBox1.Clear() 
+0

此代碼將不會在VBA編譯。你有可能把它寫入(或從中獲得)一種不同的語言嗎?也許.NET? – Ambie

+0

是的,我正在使用Visual Basic – Mark

+0

好的,我已經提出了一個編輯標籤的方法,以使它能夠被.NET團伙使用。 – Ambie

回答

0

以下示例刪除與第一列的值等於零行。修改它以適應您的需要。 正如你所想象的那樣,刪除一行「重新定位」下面的所有其他行,所以我發現它更容易向上工作,而不是跟蹤更改。

For RowDelete = Worksheets(TargetSheet).UsedRange.Rows.Count To 1 Step -1 

     If Cells(RowDelete, 1).Value = 0 Then 
      Rows(RowDelete).Delete 
     End If 

    Next RowDelete 

(如果運行速度太慢嘗試ActiveSheet.EnableCalculation =假 和Application.ScreenUpdating =循環前後假,然後再次,但卻是事實。)

+0

謝謝,我會試試這個! – Mark