无法找到存在的工作表

时间:2016-01-19 15:02:32

标签: excel excel-vba vba

我在Excel中有一个名为" Control"的工作表。我收到一封msgbox说它不存在。点击" OK"我收到错误"无效的函数或过程调用,调试器在此函数中停止:

Private Sub ClearData(dataSheet As Worksheet)
    'On Error Resume Next
        'dataSheet.rows(DataRow1 & ":" & dataSheet.rows.Count).SpecialCells(xlCellTypeConstants).ClearContents
        Sheets(dataSheet).UsedRange.ClearContents
End Sub

此功能用于在注释'dataSheet.rows(DataRow1 & ":" & dataSheet.rows.Count).SpecialCells(xlCellTypeConstants).ClearContents之前清除工作表和代码,因为会引发错误,我决定修改为Sheets(dataSheet).UsedRange.ClearContents行,但问题仍然存在。

使用以下代码调用

编辑 ClearData

Public Sub Init(rowNr As Integer, copyMap As CopyActionsMap, dataSheet As Worksheet)

    m_configRowNr = rowNr
    Set m_dataSheet = dataSheet
    m_dataRowNr = FindDataRow
    m_dataSheet.Cells(m_configRowNr, 1).Select 'select first cell in config row
    If (Not m_initialized) Then Set m_columnCopyConfigs = GetColumnCopyConfigs(copyMap) 'also sets m_count
    ClearData (m_dataSheet) 'Clean the existing data Now it says "object doenst support this method or property" after this: Private Sub ClearData(dataSheet As Worksheet) Sheets(dataSheet).Cells.Delete

End Sub

1 个答案:

答案 0 :(得分:2)

正如@tigeravatar在下面的评论中提到的那样,你试图将工作表对象用作字符串变量。

尝试将代码更改为

Private Sub ClearData(dataSheet As Worksheet)
    'On Error Resume Next
        'dataSheet.rows(DataRow1 & ":" & dataSheet.rows.Count).SpecialCells(xlCellTypeConstants).ClearContents
        dataSheet.UsedRange.ClearContents
End Sub

如果您想通过特定字符串名称清除工作表,则应将代码更改为

Private Sub ClearData(dataSheet As String)
    'On Error Resume Next
        'dataSheet.rows(DataRow1 & ":" & dataSheet.rows.Count).SpecialCells(xlCellTypeConstants).ClearContents
        Sheets(dataSheet).UsedRange.ClearContents
End Sub

然后,您可以通过调用

清除名为“测试表”的工作表
ClearData "Test Sheet"