VBA:Tickbox - True,创建一个工作表。错误,删除工作表

时间:2016-07-05 10:00:06

标签: excel vba

我正在编辑VBA中的现有模板。此模板将“原始数据”表中的数据组织为“日”,“晚”和“夜”表。我想创建一个名为“Weekend”的工作表,如果日期不是工作日,我将复制“原始数据”中的数据(我知道该怎么做)。

但是,通过此模板运行的数据量很大,因此要避免创建周末表,用户不需要/想要一个我希望放入代码段的代码段,如果勾选了勾选框(是),将创建一个名为“Weekend”的工作表(在工作簿中,但在现有工作表之间 - 即在一个名为“Night”和“Graph - All Data”的工作表之间),当它未被攻击时(False),此工作表将不会存在。

我想过让这张纸一直存在,并且当勾选框没有被隐藏时隐藏它,但这意味着数据仍会堆积在其中,为了提高效率,我宁愿没有就是这样。

以下是我试图修改的代码

Sub ToggleWindDirection()

Dim i As Long

Application.ScreenUpdating = False

If sheetArr(1) Is Nothing And LastNDRow = Empty Then
    DefineLists
End If

Sheets("Raw Data").Unprotect Password:="2260"
For Each sht In sheetArr
    sht.Unprotect Password:="2260"
Next

Set chtAllData = ActiveWorkbook.Charts("Graph - All Data")

    With Sheets("Raw Data")

        If .Range("O15").Value = True Then
        'Wind direction is being used
            .Range("C17:G17").Font.ColorIndex = xlAutomatic
            .Range("D17").Font.ColorIndex = 9
            .Range("G17").Font.ColorIndex = 9
            .Range("D17").Locked = False
            .Range("G17").Locked = False

            .Range("F" & FirstNDRow & ":F10000").Interior.Pattern = xlNone
            .Range("F" & FirstNDRow & ":F10000").Interior.PatternTintAndShade = 0
        .Range("F" & FirstNDRow & ":F10000").Font.ColorIndex = xlAutomatic

    Else
    'Not using wind direction
        .Range("C17:G17").Font.ColorIndex = 16
        .Range("D17").Locked = True
        .Range("G17").Locked = True

        .Range("F" & FirstNDRow & ":F10000").Interior.Pattern = xlSolid
        .Range("F" & FirstNDRow & ":F10000").Interior.TintAndShade = -4.99893185216834E-02
        .Range("F" & FirstNDRow & ":F10000").Font.ColorIndex = 16

    End If


'Addition by lewisthegruffalo 2016

Dim ws As Worksheet

    If .Range("O21").Value = True Then
    'create the weekend sheet
        Set ws = Worksheets.Add(After:=Worksheets("Night"))
        ws.Name = "Weekend"
    Else
    'No Weekend needed
        Worksheets("Weekend").Delete
    End If

End With

Sheets("Raw Data").Activate

Application.ScreenUpdating = True

End Sub

任何帮助都会大大加强。

亲切的问候,

lewisthegruffalo

2 个答案:

答案 0 :(得分:0)

如果你想使用sheets.add创建一个新的工作表,那么你可以利用它中的参数来告诉它放在哪里,the msdn page在底部有一个很好的例子。

答案 1 :(得分:0)

到目前为止你有什么?你想在哪里打电话?勾选什么复选框?请提供一些代码。

一般答案是添加新工作表:

Dim ws As Worksheet
If Something Then
 Set ws = Worksheets.Add(Before:=Worksheets("Graph - All Data"))
 ws.Name = "Weekend"
 'do anything you want with the ws object
End if