当我完成这个项目时,我正在制作一个项目,我已经存储了两张作为模板,供其他人填写。使用工作表(" ..")隐藏这两个模板。原始文件中的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(以前复制过的表已经损坏),我似乎无法删除或查看任何属性,但代码可以在其中找到。
答案 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