尝试在excel vba

时间:2015-12-01 20:53:05

标签: excel vba excel-vba variables worksheet

我在创建工作表变量时遇到问题。我无法理解为什么下面的代码不起作用。当我不尝试使用工作表scheduleSheet(即当我使用注释掉的行)时,它很好,但是当我尝试使用工作表变量时,会给出编译错误,“找不到成员或数据方法”。问题似乎是在将工作表变量与.CheckBox结合使用时......当我注释掉这些行时,其余的代码工作(使用scheduleSheet)(HTOlleSjögren)

Sub Reset(sheetNamePrefix As String)
'reset sheet as blank
Application.EnableEvents = False

Dim scheduleSheetName As String
Dim constantsSheetName As String
Dim summarySheetName As String
Dim scheduleSheet As Worksheet

scheduleSheetName = sheetNamePrefix & "Schedule"
constantsSheetName = sheetNamePrefix & "Constants"
summarySheetName = sheetNamePrefix & "Summary"

Set scheduleSheet = ThisWorkbook.Sheets(scheduleSheetName)

'With Worksheets(scheduleSheetName)
With scheduleSheet
    .CheckBox1.Value = False
    .CheckBox2.Value = False
    .Range("B4:G7,J4:L4").ClearContents
    If LastCell(Worksheets(scheduleSheetName)).Row > 10 Then
        .Range("A11:AA" + CStr(LastCell(Worksheets(scheduleSheetName)).Row)).Clear
    End If
    .Range("A11:A100").NumberFormat = "@" 'Clear
End With
With Worksheets(constantsSheetName)
    .Range("A18:A24").Clear
    .Cells(18, 1) = 2
    .Cells(19, 1) = 1
    .Cells(20, 1) = 180
    .Cells(21, 1) = 15
    .Cells(22, 1) = 360
    .Cells(23, 1) = 30
    .Cells(24, 1) = 40
    .Cells(50, 1) = 0
End With
With Worksheets(summarySheetName)
    .Range("C2:D6").ClearContents
    .Range("D8:D19").ClearContents
    .Range("D21:D25").ClearContents
    .Range("D27:D33").ClearContents
End With
Application.EnableEvents = True
End Sub

3 个答案:

答案 0 :(得分:0)

我会检查以确保scheduleSheetName是有效的工作表名称。设置此变量后设置一个断点,并查看scheduleSheetName是否是工作簿中的有效工作表名称。

答案 1 :(得分:0)

检查以确保您的复选框的名称与您在代码中命名的复选框的名称相同。

答案 2 :(得分:0)

如果您使用

.CheckBoxes("yourCheckBoxName").Checked

它应该有用。