当我尝试调用我创建的函数时,遇到类型不匹配错误。
例子:
Function DoThis(paramA, paramB, paramC)
If paramA = "Something" Then
DoThis = DoSomething
ElseIf paramA = "This" Then
DoThis = DoSomethingDifferent
Else
DoThis = DoThisOtherThing
End If
End Function
Dim result: result = DoThis(valueA, ValueB, ValueC)
Run Code Online (Sandbox Code Playgroud)
谁能看到我的错误可能是什么?其他功能工作正常。我通过实际复制并粘贴函数名称到我调用的地方来仔细检查拼写。我已经验证函数名称没有在其他地方使用,即作为常量或其他东西。
请注意,调试时所有参数的 ValType 都是 vbString。另外,我永远无法输入该函数,所以这不像我在调试该函数,输入它然后得到类型不匹配。
ty。
我有这个字符串:
TEST|TEST1|TEST3|TEST4|TEST5|TEST6|TEST7|TEST8|
Run Code Online (Sandbox Code Playgroud)
我需要选择TEST8使用VBS。还有比使用更好的方法吗MID/INSTR?例如,直接只选择|从右到左的字符UNTIL?
PS:我只有这些功能可用:
Ascii
Char
比较 DigText 格式
InStr
LCase
Len Left
LTrim
Mid Right
RTrim
Trim
UCase
我正在尝试对 MS Access 数据库运行以下查询(从 .asp 页面):
SELECT firstname, lastname, emp_id FROM employees ORDER BY firstname
Run Code Online (Sandbox Code Playgroud)
但是,我收到一条错误消息
没有为一个或多个必需参数给出值。
现在,如果我排除“emp_id”(主键)字段,查询运行正常。我已确保该字段存在并且查询中没有拼写错误。
如果我通过 MS Access GUI 运行查询,则会弹出一个窗口,要求我为 emp_id 字段输入“参数值”。这可能就是它不起作用的原因,以及为什么会发生这种情况?
从数据库获取员工:
Function GetEmployees()
Dim employeesRS, sqlGetEmployees, employeesList, e
Set employeesList = CreateObject("System.Collections.ArrayList")
sqlGetEmployees = "SELECT firstname, lastname, emp_id FROM employees ORDER BY firstname"
Set employeesRS = db.connTb.execute(sqlGetEmployees) 'Custom class to simplify db-querying
While Not employeesRS.EOF
Set e = new Employee
e.Firstname = employeesRS("firstname")
e.Lastname = employeesRS("lastname")
e.Id = employeesRS("emp_id")
employeesList.Add(e)
employeesRS.MoveNext
Wend
employeesRS.Close
Set GetEmployees …Run Code Online (Sandbox Code Playgroud) 我需要在消息框中显示一个计时器,用 vbs 编码。消息框需要位于屏幕的左下角,开始菜单的正上方。它需要无法退出,这意味着它不能列在任务栏上(希望如此)并且没有最小化/退出按钮。它需要保持在所有其他窗口之上。它还需要从20分钟开始,以秒为单位倒计时。我希望有人能帮助我——这是一个计算机实验室。
谢谢,马修
我正在 VBScript 中编写一些脚本,我需要将一些变量值传递到 HTA,我将用作前端来显示正在发生更新。
我该怎么做呢?
VBScript-------
TestVar1 = "Something 1"
TestVar2 = "Something 2"
wshShell.Run "Updater.hta " & TestVar1 & TestVar2
Run Code Online (Sandbox Code Playgroud)
然后
HTA-------
TestVar1 = Something.Arguments(0)
TestVar2 = Something.Arguments(1)
Msgbox TestVar1
Msgbox TestVar2
Run Code Online (Sandbox Code Playgroud)
我意识到这不是完全正确的代码,我只是放置它来说明我正在尝试做什么。
你们能提供解决这个问题的任何帮助就太好了,谢谢!
我在使用 regasm.exe 注册的 dll 中有一个 C# COM 对象。我在 COM 对象上执行 createObject 操作,并在使用 cscript 运行的 vbs 脚本中调用该对象的方法。
如果我在命令行上运行它,它一切正常,创建对象通过 com.
cscript.exe c:\mypath\myvb.vbs argument
Run Code Online (Sandbox Code Playgroud)
我现在尝试从 C# 运行相同的命令。我使用 System.Diagnostics.Process 方法
ProcessStartInfo si = new ProcessStartInfo();
si.Filename = "cscript.exe";
si.Arguments = "c:\mypath\myvb.vbs argument";
Process exe = ProcessStart(si);
...
Run Code Online (Sandbox Code Playgroud)
当我以这种方式运行时,出现 0x80070002 错误,这基本上是一个文件未找到错误。我不明白为什么它与 C# 和命令行不同。
编辑 - 更多信息
我正在 64 位操作系统上运行。C# COM dll 是使用“AnyCPU”构建的。我用的是64位regasm。我使用的cscript来自c:\windows\system32,所以它是64位版本。
在命令行中,如果我故意使用 32 位版本的 cscript,我也会收到 0x80070002 错误。这让我怀疑 c# 的问题是相关的,但我仍然不明白。
我想使用自然排序对以下项目进行排序:
“Z1”、“Z3”、“Z2”、“Z20”、“Z10”
排序后,我期望的顺序如下:
“Z1”、“Z2”、“Z3”、“Z10”、“Z20”
当我尝试使用数组列表时,
Set oAlist=CreateObject("System.Collections.ArrayList")
oAlist.sort
Run Code Online (Sandbox Code Playgroud)
我得到基于 ASCII 的排序结果:
Z1,Z10,Z2,Z20,Z3
请帮助我如何使用 vb 脚本进行自然排序
将计数器添加到 5 位以上的下一个数字时:出现溢出。
如果是 5 位数字,则不会出现错误。
我用的是VBScript:
Counter = CInt (Counter) + CInt (Qty)
Run Code Online (Sandbox Code Playgroud)
我想在分子中使用 7 位数字。
如何解决这个问题呢?
我们似乎看到越来越多有关在 Excel 电子表格上执行 awk 的问题,因此这里有一个关于如何执行该特定操作的问答。
我在 Excel 电子表格中包含此信息"$D/staff.xlsx"(其中"$D"是我的桌面的路径):
Name Position
Sue Manager
Bill Secretary
Pat Engineer
Run Code Online (Sandbox Code Playgroud)
我想打印给定名称的位置字段,例如Secretary给定输入的输出Bill。
我目前可以从 Excel 保存为 CSV 以获得:
$ cat "$D/staff.csv"
Name,Position
Sue,Manager
Bill,Secretary
Pat,Engineer
Run Code Online (Sandbox Code Playgroud)
然后运行:
$ awk -F, -v name="Bill" '$1==name{print $2}' "$D/staff.csv"
Secretary
Run Code Online (Sandbox Code Playgroud)
但这只是更大任务的一小部分,因此我必须能够从 shell 脚本自动执行此操作,而无需手动打开 Excel 导出 CSV 文件。如何在运行 cygwin 的 Windows PC 上执行此操作?