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

时间:2017-04-11 09:35:19

标签: vba excel-2016

我在Excel 2013和Excel 2010中使用了相同的代码,它运行得非常好,但是当系统升级到Excel 2016时,事情发生了变化,如果我输入单词,在一本书中的代码工作将在其他工作簿中实现那个工作簿,有什么想法吗?非常感谢 这是代码的一部分

```

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”的新工作表。 这显然是不可接受的,我想我已经指定了工作簿,但它仍然不起作用

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情......

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