Function Foo(thiscell As Range) As Boolean
Foo = thiscell.hasFormula And (InStr(1, UCase(Split(thiscell.formula, Chr(40))(0)), "bar") > 0)
End Function
Run Code Online (Sandbox Code Playgroud)
此函数用于在(.)之前测试某个子字符串(在本例中为bar)的存在.
我遇到问题的情况是当传入函数的单元格为空时,thisCell.hasFormula为false,但是仍然正在评估和之后的语句.这给了我运行时超出范围错误的下标.
VBA是否真的继续评估And的第二个参数,即使第一个参数是假的?
这是我的简化脚本:
Sub SomeOtherSub(Stattyp As String)
'Daty and the other variables are defined here
CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
End Sub
Sub CatSubProduktAreakum(Stattyp As String, starty As Integer)
'some stuff
End Sub
Run Code Online (Sandbox Code Playgroud)
CatSubProduktAreakum的调用标记为红色,表示为"语法错误".我不明白这个错误.这是一个带有两个参数的简单子例程调用.为什么VBA不接受电话?
我正在尝试使用我的vba代码中的VLOOKUP函数在表数组中的电子表格中查找值.我不知道怎么写得正确.
这是包含所有引用的普通VLOOKUP公式:
=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
Run Code Online (Sandbox Code Playgroud) 字符串是VBA中的数组吗?
例如,我可以像在C/C++中那样迭代它吗?
做这样的事情:
char myArray[10];
for (int i = 0; i < length; i++)
{
cout << myArray[i];
}
Run Code Online (Sandbox Code Playgroud)
VBA中的等价物会是什么?它没有像我期望的那样表现.在VBA之前从未尝试过操纵过很多字符串!:)
trim和trim$vba有什么区别?今天我偶然在vba中使用了left和trim函数,编译器说cant find project or library
当我用谷歌搜索它时,在论坛上我发现用户使用了这些
vba.trim("string")
Run Code Online (Sandbox Code Playgroud)
他回答用vba作为函数的前缀.并且令人惊讶的是它也在我的电脑上工作.但我找到了这些功能
trim and trim$
left and left$
leftb and leftb$
Run Code Online (Sandbox Code Playgroud)
我想知道什么是修剪和修剪$.我想找到差异因此我开始谷歌它但结果是修剪忽略$ alphabet.
我只是很想知道它.我怀疑修剪是vba功能和修剪$是excel表功能.但我们必须Application.worksheetfunction使用excel功能吗?任何人都可以区分修剪和修剪$.
我想到了两种策略:
enum并检查输入是否属于此enum,虽然我不确定这个的语法 - 我是否需要在enum每次使用它时初始化它?我想知道VBA哪个在效率和可读性方面更好?
在Excel VBA中,将Debug.Print指令留在"生产"中的代码中是不错的做法?当出现问题时,在用户的机器上实时调试工作表非常有用.Visual Studio关闭时是否会影响性能?如果没有,你会建议什么?
以下代码有效.但是,如果我注释掉该行Dim objRequest As MSXML2.XMLHTTP并取消注释该行,Dim objRequest As Object则会失败并显示错误消息:
参数不正确
为什么,以及我可以做些什么(如果有的话)?
Public Function GetSessionId(strApiId, strUserName, strPassword) As String
Dim strPostData As String
Dim objRequest As MSXML2.XMLHTTP
'Dim objRequest As Object '
strPostData = "api_id=" & strApiId & "&user=" & strUserName & "&password=" & strPassword
Set objRequest = New MSXML2.XMLHTTP
With objRequest
.Open "POST", "https://api.clickatell.com/http/auth", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send strPostData
GetSessionId = .responseText
End With
End Function
Run Code Online (Sandbox Code Playgroud)
Corey,是的,我知道我必须这样做才能使我的代码在没有引用MSXML类型库的情况下工作.这不是问题所在.Dim objRequest As Object无论我是否使用,代码在使用时都会失败
Set objRequest = NEW MSXML2.XMLHTTP …
我有一个字符串数组(A到E),我想加入一个字符串("ABCD E").我应该遍历数组还是使用Join函数?
Dim MyArray(5) as String
Dim MyString as String
MyArray(1) = "A"
MyArray(2) = "B"
MyArray(3) = "C"
MyArray(4) = "D"
MyArray(5) = "E"
Run Code Online (Sandbox Code Playgroud)
哪个更快,更明智?
这个?
MyString = MyArray(1)
For i = 2 To 5
MyString = MyString & " " & MyArray(i)
Next
Run Code Online (Sandbox Code Playgroud)
或这个?
MyString = Join(MyArray, " ")
Run Code Online (Sandbox Code Playgroud) 此问题旨在增加VBA的隐藏功能中的隐藏功能问题
VBA最大,最常见或最烦人的陷阱是什么?
请列出可能被描述为的任何内容
我还在学习VBA,我无法弄清楚我是否遇到过Collections对象的这么多问题.
我有一个函数添加自定义对象(我创建了一个非常简单的类来存储一些数据),它执行典型的"读取数据,创建对象表示,将其粘贴到集合"这类东西.
如果我尝试在bag.add调用中添加"密钥",则会收到"编译错误.预期:="消息.
如果我没有它似乎工作,那么当我运行程序时它会显示"编译错误.参数不是可选的"并突出显示"getRevColumns = bag"行.
我不能为我的生活弄清楚是不是正在发生!我怀疑我的包包初始化有什么问题?!PS:columnMap是我的自定义类的名称.
Function getRevColumns() As Collection
Dim rng As Range
Dim i As Integer
Dim bag As Collection
Dim opManCol As Integer, siebelCol As Integer
Dim opManColName As String, siebelColName As String
Dim itm As columnMap
Set bag = New Collection
Set rng = shSiebelMap.UsedRange.Columns(5)
i = 1
For i = 1 To rng.Rows.count
If StrComp(UCase(rng.Cells(i).value), "Y") = 0 Then
opManCol = rng.Rows(i).OffSet(0, -2).value
opManColName = rng.Rows(i).OffSet(0, -4)
siebelCol = rng.Rows(i).OffSet(0, -1).value
siebelColName = rng.Rows(i).OffSet(0, …Run Code Online (Sandbox Code Playgroud)