相关疑难解决方法(0)

Excel VBA如果存在WorkSheet("wsName")

我想知道如果存在工作簿中的工作表,是否存在返回True或False的清除功能?

如果可以在不跳过错误处理的情况下完成它,那将是好的,但不是必需的.

我发现的唯一的东西并不真正起作用:

On Error Resume Next
If (Worksheets("wsName").Name <> "") Then
    Debug.Print "Worksheet exists!"
Else
    Debug.Print "Worksheet doesn't exist!"
End If
On Error GoTo ErrHandler
Run Code Online (Sandbox Code Playgroud)

excel vba

39
推荐指数
4
解决办法
33万
查看次数

在Excel中将工作表添加到工作簿的末尾(正常方法不起作用?)

这是我用来尝试将新工作表添加到工作簿中的最后一个位置的VBA代码

mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name
Run Code Online (Sandbox Code Playgroud)

我在这个网站上看到了类似的问题.它不起作用.

我在一个循环中执行此操作,并将每个工作表添加到工作表中的第二个位置.永久存在2张纸(信息和摘要),然后我先添加5个称为"test"1到5的纸张.我总是以这个顺序结束纸张:

Info, sheet5, sheet4, sheet3, sheet2, sheet1, Summary
Run Code Online (Sandbox Code Playgroud)

但我想要/期待的是:

Info, Summary, sheet1, sheet2, sheet3, sheet4, sheet5
Run Code Online (Sandbox Code Playgroud)

(循环确实以预期的顺序生成它们,所以问题不在那里.)

如果我在开始之前交换摘要和信息表,那么当我完成时它们就在相反的位置.

我究竟做错了什么?

excel vba excel-vba

19
推荐指数
2
解决办法
10万
查看次数

如何检查Excel-VBA中是否存在某些工作表?

有谁知道如何使用Excel VBA检查Excel文档中是否存在某些工作表?

excel vba excel-2007

10
推荐指数
1
解决办法
8万
查看次数

检查密钥是否在Excel VBA中的集合中的通用方法

我的代码中有不同的集合.有些持有对象(各种类型),其他有类型(如Long).

有没有办法检查Collection中是否包含适用于类型和对象的键?

到目前为止,我有两个功能.

第一个功能:

Private Function ContainsObject(objCollection As Object, strName As String) As Boolean
    Dim o As Object
    On Error Resume Next
    Set o = objCollection(strName)
    ContainsObject = (Err.Number = 0)
    Err.Clear
End Function
Run Code Online (Sandbox Code Playgroud)

第二功能:

Private Function ContainsLong(AllItems As Collection, TheKey As String) As Boolean
    Dim TheValue As Long
    On Error Resume Next
    TheValue = AllItems.Item(TheKey)
    ContainsLong = (Err.Number = 0)
    Err.Clear
End Function
Run Code Online (Sandbox Code Playgroud)

这两个函数的原因是如果我传递一个具有Longs对的Collection(函数总是返回False),ContainsObject似乎不起作用.

PS:第一个功能是来自Test的第三个答案的副本或检查表是否存在

excel vba excel-2010

10
推荐指数
1
解决办法
2万
查看次数

从两个不同的VB(excel)模块调用子功能/模块

我有一个功能,我想从各种模块调用.什么是在VB(excel)中执行此操作的最佳方法.

模块"SheetExists"

Function Name(SheetName As String) As Boolean
' returns TRUE if the sheet exists in the active workbook
    SheetExists = False
    On Error GoTo NoSuchSheet
    If Len(Sheets(SheetName).Name) > 0 Then
        SheetExists = True
        Exit Function
    End If
NoSuchSheet:
End Function
Run Code Online (Sandbox Code Playgroud)

模块"主"

If Not SheetExists.Name("mySheet") Then
    'do this
Else
    ' else do this
End If
Run Code Online (Sandbox Code Playgroud)

希望有这样做还是我?

Call SheetExists.Name("mySheet")
Run Code Online (Sandbox Code Playgroud)

这是从另一个模块调用函数的唯一方法吗?我是否必须将其声明为Public函数或其他内容?

excel vba excel-vba

4
推荐指数
1
解决办法
5万
查看次数

检查工作表是否存在,如果不存在则创建-VBA

我已经测试了许多代码来检查工作表是否存在(基于名称),如果不存在则创建一个。其中一些循环所有工作表,有些引用工作表,如果创建错误意味着该工作表不存在。哪个是最合适 - 正统 - 更快的方式来完成这项任务?

目前我正在使用:

Option Explicit

Sub test()     
    Dim ws As Worksheet
    Dim SheetName As String
    Dim SheetExists As Boolean
    
    SheetName = "Test"
    SheetExists = False
    
    With ThisWorkbook
        'Check if the Sheet exists
        For Each ws In .Worksheets
            If ws.Name = SheetName Then
                SheetExists = True
                Exit For
            End If   
        Next
        
        If SheetExists = False Then
            'If the sheet dont exists, create
            .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = SheetName
        End If
    End With 
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×6

vba ×6

excel-vba ×2

excel-2007 ×1

excel-2010 ×1