Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:什么时候*可用?_Vba_Excel_Generalization - Fatal编程技术网

VBA:什么时候*可用?

VBA:什么时候*可用?,vba,excel,generalization,Vba,Excel,Generalization,我试图掌握在编码时何时可以和何时不能使用*进行泛化 我的意思的一个例子是xfile.,如果扩展不重要的话。 另一个是*.xls,如果我想引用任何和所有excel文件 但我不仅仅对文件感兴趣。我想使用类似于华盛顿*和俄勒冈州*的东西,如果我想要工作簿中的所有工作表,不管接下来是什么,无论是本月、今年,等等 另一个级别是电子表格中单元格中的值 我特别要求每一个,因为*似乎在每个场景中都得到不同的对待 谢谢你的帮助 编辑: 我刚才遇到的一个问题的一个很好的例子是以下代码: If ActiveShee

我试图掌握在编码时何时可以和何时不能使用
*
进行泛化

我的意思的一个例子是
xfile.
,如果扩展不重要的话。 另一个是
*.xls
,如果我想引用任何和所有excel文件

但我不仅仅对文件感兴趣。我想使用类似于华盛顿*和俄勒冈州*的东西,如果我想要工作簿中的所有工作表,不管接下来是什么,无论是本月、今年,等等

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

我特别要求每一个,因为
*
似乎在每个场景中都得到不同的对待

谢谢你的帮助


编辑:

我刚才遇到的一个问题的一个很好的例子是以下代码:

If ActiveSheet.Name <> "City*" Then
    code
End If
如果是ActiveSheet.Name“City*”则
代码
如果结束
工作表名称的选项有城市MTD、
城市YTD
国家MTD
、国家YTD(月至今和年至今,仅供参考)


我所在的工作表是城市MTD,但我的程序仍然输入If语句。这让我相信,
*
并没有被视为通配符,而是被视为字符串中的文字星号。

以下是如何使用
*
访问名称符合特定模式的所有工作表:

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
当我在一个工作簿上运行此操作时,该工作簿有一个名为“原始数据”的工作表和另一个名为“已处理数据”的工作表(以及其中不包含“数据”的其他工作表),我得到:


*
在许多方面都很有用,但有一定的局限性。对于更复杂的问题,建议使用VBScript的正则表达式对象,该对象也可以在VBA中使用(如果您为项目添加了正确的引用)。

列出找到的方法

它可以是:
Range(“A1”).Find“~*”
finds*(
.Find“~~”
finds~)


.

通常在搜索中使用*通配符时,您不会使用“=”符号,而是使用“Like”。我不知道问题是什么,
*
是字符串中的通配符,可以用于这些字符串是否用于文件名、工作表名、单元格中的值等。它们在什么意义上被不同地使用?基本上,您可以使用
*
作为字符串中的通配符,与
类似的
运算符一起使用,一些工作表函数也接受它。另一种用法可以在正则表达式中使用。这些都是工具,而不是你在问题中列出的目标。无法列出可以使用
*
的所有场景,请澄清您的问题。在正则表达式中使用
*
与在Excel中使用相同的操作时要小心,这与VB/Excel的使用不太一样。
There are 2 sheets with 'data' in their name
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")