重新打开时,使用VBA复制的Excel工作表已损坏

时间:2016-07-04 06:21:36

标签: excel vba excel-vba

当我完成这个项目时,我正在制作一个项目,我已经存储了两张作为模板,供其他人填写。使用工作表(" ..")隐藏这两个模板。原始文件中的Visible = False。

因为我试图做到这一点很好,就是制作两个模板并隐藏它们,而当他们想要添加一个模板(通常是几个)时,这个隐藏的工作表将被复制并重命名如下:



If OptionButton2.Value = False Then
        'kopiera mall 4v
        Worksheets("Mall 4v").Visible = True
        Worksheets("Mall 5v").Visible = True
        ActiveWorkbook.Worksheets(2).Copy after:=ActiveWorkbook.Worksheets(Sheets.Count)
        ActiveSheet.Visible = True
        ActiveSheet.name = month & " - " & name
        fourWeeks month, name, startWeek
        Worksheets("Mall 4v").Visible = False
        Worksheets("Mall 5v").Visible = False
Else
        ....




我使用的地方默认情况下会激活复制的工作表。您可能已经猜到这个副本是在UserForm的帮助下完成的(如果重要的话)。

现在问题是,如果我在复制完成后立即保存它,可以重新打开并出现问题,但是当新的工作表中放入某些东西时,它每次都会被破坏。另外,我在VBA菜单中有三个junksheets(以前复制过的表已经损坏),我似乎无法删除或查看任何属性,但代码可以在其中找到。

2 个答案:

答案 0 :(得分:0)

我发现了导致问题的原因:

在复制的文件中,我有一个包含多个字符串的ComboBox,在选择时将其放入单元格中,其中一个字符串也会在另一个单元格中生成数据验证列表。代码如下:

Public Sub DDlist(ByVal week As Integer, ByVal day As Integer, ByVal indexOffset As Integer, ByVal Page As Integer)
    Dim dvList As String

    dvList = " Item 1, Item 2"

    With ActiveWorkbook.ActiveSheet.Range(Cells(week + day + indexOffset, 3 + Page), Cells(week + day + indexOffset, 6 + Page)).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=dvList
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub

(实际上不是第1项和第2项) 我想我可以删除这个功能,但我真的很喜欢它的工作方式,并希望保留它..

希望此输入可以帮助解决问题

答案 1 :(得分:0)

问题解决了!

从dvlist中选择一个项目后,dvlist本身被删除:

Private Sub Worksheet_Change(ByVal Target As Range)
    Selection.Validation.Delete
End Sub