相关疑难解决方法(0)

当第一个参数为false时,VBA"And"运算符是否会计算第二个参数?

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的第二个参数,即使第一个参数是假的?

excel vba operators

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

在VBA中调用Sub

这是我的简化脚本:

    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 call syntax-error

40
推荐指数
2
解决办法
25万
查看次数

IsDate函数返回意外结果

怎么来IsDate("13.50")的回报True,但IsDate("12.25.2010")回报False

vb6 vba

28
推荐指数
2
解决办法
5万
查看次数

在vba中编写VLOOKUP函数

我正在尝试使用我的vba代码中的VLOOKUP函数在表数组中的电子表格中查找值.我不知道怎么写得正确.

这是包含所有引用的普通VLOOKUP公式:

=VLOOKUP(DATA!AN2,DATA!AA9:AF20,5,FALSE)
Run Code Online (Sandbox Code Playgroud)

excel vba

27
推荐指数
3
解决办法
30万
查看次数

字符串是VBA中可以迭代的数组吗?

字符串是VBA中的数组吗?

例如,我可以像在C/C++中那样迭代它吗?

做这样的事情:

char myArray[10]; 

for (int i = 0; i < length; i++)
{
    cout << myArray[i];
}
Run Code Online (Sandbox Code Playgroud)

VBA中的等价物会是什么?它没有像我期望的那样表现.在VBA之前从未尝试过操纵过很多字符串!:)

arrays excel vba excel-vba

14
推荐指数
4
解决办法
3537
查看次数

VBA中的Trim()和Trim $()有什么区别?

trimtrim$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功能吗?任何人都可以区分修剪和修剪$.

excel vba trim excel-vba

13
推荐指数
3
解决办法
2万
查看次数

检查值是否是列表的成员

  • 我必须根据项目列表检查一条用户输入; 如果输入位于项目列表中,则将流程指向一个方向.如果没有,将流量引导到另一个流量.
  • 此列表在工作表本身中可见; 它必须在代码下进行混淆.

我想到了两种策略:

  1. 声明为enum并检查输入是否属于此enum,虽然我不确定这个的语法 - 我是否需要在enum每次使用它时初始化它?
  2. 声明为数组并检查输入是否是此数组的一部分.

我想知道VBA哪个在效率和可读性方面更好?

excel vba excel-vba

11
推荐指数
3
解决办法
7万
查看次数

将"Debug.Print"指令留在"生产"中的代码中是一种好习惯吗?

在Excel VBA中,将Debug.Print指令留在"生产"中的代码中是不错的做法?当出现问题时,在用户的机器上实时调试工作表非常有用.Visual Studio关闭时是否会影响性能?如果没有,你会建议什么?

excel vba excel-vba

9
推荐指数
1
解决办法
8739
查看次数

MSXML2.XMLHTTP发送方法与早期绑定一起使用,后期绑定失败

以下代码有效.但是,如果我注释掉该行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 …

vba msxml http xmlhttprequest

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

从字符串数组创建字符串.最快的方法?

我有一个字符串数组(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

6
推荐指数
1
解决办法
1782
查看次数

VBA隐藏的陷阱

此问题旨在增加VBA的隐藏功能中的隐藏功能问题

VBA最大,最常见或最烦人的陷阱是什么?

请列出可能被描述为的任何内容

  • 程序员要小心
  • VBA行为需要痛苦和持续的解决方法.
  • 一直使错误容易产生的事情.
  • 令程序员困惑的事情
  • 与其他语言等相比,非常规语法或行为

vba

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

将项添加到VBA/VB6集合时出错

我还在学习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)

vb6 collections vba ms-office excel-vba

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

强制支持继承

对于我们的项目,该组使用Microsoft Access.VBA类功能有限.如何使VBA类支持继承?

ms-access vba

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