vba - 为什么即使我的输入是正确的变量类型,我也会收到 ByRef 参数类型不匹配错误?
问题描述
我正在编写一个代码,在某些情况下,它会创建一个包含两个按钮的新工作表。一个按钮使用户窗体出现并询问用户几个问题来格式化新创建的工作表。然后用户将数据输入到现在出现的表格中,最后点击第二个按钮“执行”。
“执行”按钮只是获取所有输入数据并使用调用的 Sub 进行一些计算,MathCode(ws As Worksheet)
但是当我在其他地方引用 Sub 时,Call Mathcode (Sec_Delay)
我得到一个ByRef 参数类型不匹配的编译错误:
表单Sec_Delay
在稍后在 OLEObject 中调用之前被初始化:
ElseIf Range("B1") = 3 And Range("S1") = 0 And Range("R1") = 1 Then
Set Sec_Delay = ThisWorkbook.Sheets.Add(, Pri_Delay)
Sec_Delay.Name = "Secondary Drive Timing Delay2"
With Sec_Delay.Range("A2:S35")
Pri_Delay.Range("A2:S35").Copy
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End With
Dim obj2 As Object
Dim Code2 As String
With Sec_Delay
Set obj = .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=279, _
Top:=210.75, Width:=109.5, Height:=24)
obj.Name = "ButtonTest"
obj.Object.Caption = "USER INPUT"
Code = "Sub ButtonTest_Click()" & vbCrLf & _
"UF_input.Show" & vbCrLf & _
"End Sub"
Set obj2 = .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=277.5, _
Top:=236.25, Width:=111, Height:=24)
obj2.Name = "ExecuteTest"
obj2.Object.Caption = "Execute"
Code2 = "Sub ExecuteTest_Click()" & vbCrLf & _
"Call MathCode (Sec_Delay)" & vbCrLf & _
"End Sub"
With .Parent.VBProject.VBComponents(.CodeName).CodeModule
.insertlines .countoflines + 1, Code
.insertlines .countoflines + 1, Code2
End With
End With
知道为什么我会收到 ByRef 错误吗?
编辑:
我将代码稍微调整为:
Code2 = "Sub ExecuteTest_Click()" & vbCrLf & _
"Dim Sec_Delay as Worksheet" & vbCrLf & _
"Set Sec_Delay = ActiveSheet" & vbCrLf & _
"MathCode Sec_Delay" & vbCrLf & _
"End Sub"
我不再收到 ByRef 错误,但MathCode
返回一堆零,甚至从工作表中复制一些数据,Pri_Delay
而不是使用来自Sec_Delay.
如果有人可能知道原因的数据,我将不胜感激。
解决方案
推荐阅读
- javascript - 在同一页面上的 div 锚链接在 Safari 中不起作用
- node.js - 无法使用 node-fetch 解析 json 流
- javascript - 有没有办法可以在本地加载带有最后选择的选项的 Ext JS ComboBox?
- node.js - 为什么猫鼬会因为这个错误使我的机器人崩溃?
- javascript - 如何在 React 中创建查询字符串
- mongodb - 只显示最近的条目而不是旧的 Mongodb
- c++ - 如何分析在 kubernetes pod 上运行的服务?
- python - pyqt Parent是QTextDocument,parent的线程是,当前线程是Thread2
- java - Spring Boot中的PageRequest未定义
- matlab - 绘制时间序列时如何调整网格密度