Excelmacros在两台计算机上的行为是不同的

我有一个Excel文件的问题。 我去年编写了一个macros程序,在工作簿中select所有绿色的工作表作为选项卡颜色。 在昨天之前,每台电脑上的一切正常。 实际上需要修改该文件的计算机开始采取不同的行动,只select第一个工作表。 我卸载并再次安装Excel,但它并没有改变任何东西。 我们在Windows 7 Pro x64上运行Office 2013 Home和Business。

这是我的代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim selection As Boolean selection = False For Each ws In ActiveWorkbook.Worksheets If ws.Tab.Color = 5296274 Then If selection = False Then ws.Select selection = True Else ws.Select (False) End If End If Next End Sub 

谢谢

尝试将variables名称更改为其他类似于selection1

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim replaceSelection As Boolean replaceSelection = True For Each ws In ActiveWorkbook.Worksheets If ws.Tab.Color = 5296274 Then ws.Select replaceSelection replaceSelection = False End If Next End Sub 

这是一个想法。 检查两台计算机上Excel可用的VBA引用的差异。

  • 按ALT + F11打开VB编辑器。
  • 转到工具>参考。
  • 在脚本无法正常工作的计算机上,单击其他计算机上所选参考的checkbox。

要确保有多个具有该标签颜色的工作表,并且没有其他任何内容正在更改select,则可以尝试此代码。
如果findless于2张的标签颜色,将显示一个消息框。

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ws As Excel.Worksheet Dim strNames As String Dim wsNames() As String Dim wsCount As Integer For Each ws In ThisWorkbook.Worksheets If ws.Tab.Color = 5296274 Then strNames = strNames & ":" & ws.Name End If Next strNames = Mid(strNames, 2) wsNames = Split(strNames, ":") wsCount = UBound(wsNames) + 1 If wsCount < 2 Then MsgBox strNames ' to make sure more than one sheet If wsCount > 0 Then ThisWorkbook.Sheets(wsNames(0)).Select ThisWorkbook.Sheets(wsNames).Select End If End Sub 

自从同一台计算机上1周以来,我遇到了同样的问题。 在macros正常工作之前,他们突然开始只select第一张工作表! 和在同一台笔记本电脑上!

这似乎是ActiveWorkbook.Worksheets(SourceTabs(t,2))的(False)参数。Select(False)不再被识别

我认为有些Windows或Office更新是在推动的同时,他们正在产生的问题。 这是我能想到的唯一的事情。

我不得不改变我select表格到表格(SheetList)的方式。select使用SheetList作为我需要的表格名称的数组。

这很奇怪,因为它在一些电脑上工作,而不是在其他电脑上工作。 我们正在使用VMWare工作站,并且在创build工作簿模板一年后,代码停止工作。