(VBA-Excel)我的" EntireRow.Delete"删除我的所有行而不是一行/行,为什么?

时间:2014-12-17 13:23:06

标签: vba excel-vba excel

首先是宽恕,如果它是一个重复的主题,我看,但也许不应该...... 我英语不好。

然后我会解释我的问题,我正在尝试为excel写一个宏vba。

此宏通过单击按钮('chargement_des_donnees()')执行。

1)除了第一行之外,它清空我的工作表“正在处理的详细信息” 2)然后,执行一个SQL查询IBM并复制我的得分表干净。 3)处理我的数据:                  - 删除与查询标题对应的第二行,                  - 恢复一些值放入我的“sheet1”                  - 实现我的动态交叉表“sheet1”。

问题在于,当我尝试删除我的第二行“详细信息正在处理中”时,所有内容都被删除(第一行除外)。 当我使用'Debug'时它可以正常工作。

我觉得我的“EntireRow.Delete”循环。

我的代码:

Sub refresh_sql()     

    Sheets("Detail SO in process").Select        
    sqlstring = "my request"        
    connstring = _
        "ODBC;DSN=HSDAS6 - SITEWWCS;UID=poiriet;"
    With ActiveSheet.QueryTables.Add(Connection:=connstring, _
            Destination:=Range("A2"), Sql:=sqlstring)
        .Refresh
    End With

    Worksheets("Detail SO in process").Rows(2).EntireRow.Delete   
End Sub

请帮帮我,解释一下。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

与您编辑的帖子相关,关于EntireRow.Delete的问题的答案如下。

  1. 你可以尝试使用这个:

    Sub refresh_sql()

    Sheets("Detail SO in process").Select        
    sqlstring = "my request"        
    connstring = _
        "ODBC;DSN=HSDAS6 - SITEWWCS;UID=poiriet;"
    With ActiveSheet.QueryTables.Add(Connection:=connstring, _
            Destination:=Range("A2"), Sql:=sqlstring)
        .Refresh
    End With
    
    Worksheets("Detail SO in process").Range("A2").EntireRow.Delete   
    

    End Sub

  2. 您还可以使用行删除,如下所示:

    Sub refresh_sql()     
    
        'YOUR OTHER CODE
    
        Worksheets("Detail SO in process").Rows(2).Delete   
    End Sub
    

    这两个语句执行的操作与删除Excel工作表中的第二行(完全)相同,然后转移其余部分。

    注意:如果您仍遇到同样的问题,请检查代码的其他部分。行删除语句本身可以正常工作。

    希望这会有所帮助。