VBA:什么时候可用?

时间:2015-08-18 17:07:16

标签: excel vba excel-vba generalization

我试图掌握何时可以,并且在编码时无法使用*进行概括。

如果扩展无关紧要,我的意思是xfile.*。 如果我想引用任何和所有excel文件,则另一个是*.xls

我不仅对文件感兴趣。我希望使用Washington*Oregon*之类的内容,如果我想要工作簿中的所有工作表,无论后来发生什么,无论是This MonthThis Year等等。

另一个级别是电子表格中单元格中的值。

我特别要求每一个,因为*似乎在每种情况下都被区别对待。

感谢您的帮助。

编辑:

我遇到的问题的一个很好的例子就是这段代码:

If ActiveSheet.Name <> "City*" Then
    code
End If

工作表名称的选项包括City MTDCity YTDCountry MTDCountry YTD(月初至今和年初至今,fyi)

我打开的表单是City MTD,但我的程序仍然输入If-Statement。这使我相信*不被视为通配符,而是字符串中的文字星号。

2 个答案:

答案 0 :(得分:1)

以下是使用*访问名称适合某种模式的所有工作表的方法:

Sub test()
    Dim ws As Worksheet
    Dim count As Long

    For Each ws In ActiveWorkbook.Sheets
        If LCase(ws.Name) Like "*data*" Then count = count + 1
    Next ws
    Debug.Print "There are " & count & " sheets with 'data' in their name"

End Sub

当我在一张名为&#34; Raw Data&#34;和另一个&#34;处理数据&#34; (以及其他一些不包含&#34;数据&#34;其中任何地方的表格)我得到:

There are 2 sheets with 'data' in their name

*可用于多种用途,但有些限制。对于更复杂的问题,建议使用VBScript的正则表达式对象 - 也可以在VBA中使用(如果添加对项目的正确引用)。

答案 1 :(得分:0)

列出了 * wildcard character

找到的方法

Range .Replace Method: UsedRange.Replace "test*", "NewValue"

Range .AutoFilter: Range("A:A").AutoFilter Field:=1, Criteria1:="test*"

Like Operator (compares strings): If Range("A1") Like "test*" Then

Files and Folders Methods:
    Copy
    CopyFile
    CopyFolder
    MoveFile
    MoveFolder
    DeleteFolder
    DeleteFile
    Dir Function (searches for files or folders)
    ChDir Statement (changes current folder)
    Kill Statement (deletes files from disk)

Application Methods
    .GetSaveAsFilename (used for file extension only)
    .GetOpenFilename (used for file extension only)
    .Match "test*", Range("A:A"), 0 '(If match_type is 0 and lookup_value is text)

WorksheetFunction Methods:
    .AverageIf and .AverageIfs
    .CountIf and .CountIfs
    .Find and .FindB (Range("A1").Find "*")
    .Match
    .Search and .SearchB (locate one text string within a 2nd string)
    .SumIf and .SumIfs
    .VLookup and .HLookup

FileDialog Object - .InitialFileName Property

VBScript.RegExp (or reference to "Microsoft VBScript Regular Expressions *")

Scripting.FileSystemObject CopyFile and DeleteFile Methods ("Microsoft Scripting Runtime")

可以escaped with a tilde (~) characterRange("A1").Find "~*"找到*(.Find "~~"找到〜)