2016-02-28 77 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