有人可以告诉我这里出错的地方吗?我想检查名为" test"存在,如果不存在,则创建该表并将其命名为" test"。如果它存在,我运行一个单独的代码块,我还没有把它放在这里。我使用了错误处理,因为它忽略了它发生的错误。
If Sheets("test").Name = "" Then
'MsgBox Sheets("test").Name & "Name"
.Worksheets.Add After:=ThisWorkbook.Worksheets("test2")
.ActiveSheet.Name = "test"
End If
无论我做什么,代码的这一部分总是运行并创建一个新工作表。如果工作表"测试"已经不存在了。它会创建一个新工作表并重命名并继续。显然,在另一种情况下,它不会重新命名工作表,因为已经有另一张工作表" test"同名。
谢谢!
答案 0 :(得分:1)
如果您对VBA不太熟悉,可以使用它而不是函数:
var channels = ["a","b","c"],
calls = channels.reduce( function (arr, current) {
var xhr = $.get("http://example.com?q=" + current, function() { /* your code ajax success*/});
arr.push(xhr);
return arr;
}, []);
//Take that array and apply it to the when
$.when.apply($, calls).done( function () {
//Your code
} )
答案 1 :(得分:0)
实现此目的的一种略微不同的方法是创建工作表名称的字典。
然后,您可以使用exists函数来测试工作表是否存在
Dim sheetNames As Object
Dim ws As Worksheet
' Create and populate dictionary
Set sheetNames = CreateObject("Scripting.Dictionary")
For Each ws In ThisWorkbook.Sheets
sheetNames.Add ws.Name, ws.Index
Next ws
' Test if sheet exists
If Not sheetNames.Exists("test") Then
' If not add to workbook
ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets("test2")).Name = "test"
' add sheet to dictionary
sheetNames.Add "test", ThisWorkbook.Worksheets("test").Index
End If
答案 2 :(得分:0)
不太确定为什么要添加其他工作表,但我会使用外部函数来检查工作表是否存在...
我还会为“test2”添加一些错误检查,所以这里有一些你应该能够适应的代码
Sub Test()
Dim wsName As String: wsName = "test"
If Not WorkSheetExists(wsName) Then Worksheets.Add().Name = wsName
If WorkSheetExists("test2") Then Worksheets(wsName).Move _
After:=ThisWorkbook.Worksheets("test2")
End Sub
Function WorkSheetExists(ByVal strName As String) As Boolean
On Error Resume Next
WorkSheetExists = Not ActiveWorkbook.Worksheets(strName) Is Nothing
End Function
答案 3 :(得分:-1)
试试这个:
Function IsExists(name As String, Optional wb As Workbook) As Boolean
Dim sheet As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(name)
On Error GoTo 0
IsExists = Not sheet Is Nothing
End Function