Excel 2016:一个工作簿中的VBA代码会影响其他工作簿中的单元格

问题描述:

我在Excel 2013和Excel 2010中使用了相同的代码,它工作得很好,但是当系统升级到Excel 2016时,事情发生变化,代码工作如果我在该工作簿中键入单词,任何想法都会在其他工作簿中实施一本书?非常感谢 这里是代码Excel 2016:一个工作簿中的VBA代码会影响其他工作簿中的单元格

```

Sub createsheets() 
On Error Resume Next 
Dim sh As Worksheet 
Dim ws As Worksheet 
Application.DisplayAlerts = False 
For Each ws In Workbooks("Book2").Worksheets 
If ws.Name <> "test" Then ws.Delete 
Next 
For j = 4 To 10 

PauseTime = 5 
starter = Timer 
Do While (Timer < starter + PauseTime) 
Application.StatusBar = "do nothing..." 
DoEvents 
Loop 
Application.StatusBar = "" 
Workbooks("Book2").Worksheets.Add.Name = "name" & j - 3 
current_worksheet_name = "name" & j - 3 
Workbooks("Book2").Worksheets(current_worksheet_name).Cells(1, 1) = "this is a test" 
Next 
End Sub 

```

***此代码的一部分,如果我在另一个工作簿中键入的话,说工作簿名称是“ABC”,将在我当前的工作簿“ABC”中创建名称为“namej”的新工作表。 这显然是不能接受的,我想我已经指定的工作簿,但它仍然无法正常工作

+0

你试过设置工作簿的ThisWorkbook? – user1

+0

也不能工作,VBA仍然在两个工作簿上运行,谢谢@ mo.h – riversxiao

你可以试试这样的事情...

Sub createsheets() 
Dim wb As Workbook 
Dim sh As Worksheet 
Dim ws As Worksheet 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Set wb = Workbooks("Book2.xlsx") 
If Not wb Is Nothing Then 

On Error Resume Next 
For Each ws In wb.Worksheets 
    If LCase(ws.Name) <> "test" Then ws.Delete 
Next 

For j = 1 To 7 
    wb.Sheets.Add(after:=Sheets(Sheets.Count)).Name = "name" & j 
    Set sh = ActiveSheet 
    sh.Cells(1, 1) = "this is a test" 
Next 
Else 
    MsgBox "Book2.xlsx is not opened.", vbExclamation 
End If 
Application.ScreenUpdating = True 
End Sub 
+0

嗨,@sktneer,感谢您的回复,但看起来上面的代码仍然无法避免我上面描述的问题,更多具体的,如果我用上面的代码添加'''PauseTime = 5 起动=定时器 做,当(定时器 riversxiao