【问题标题】:Passing values from sub to function in Excel VBA在 Excel VBA 中将值从 sub 传递到函数
【发布时间】:2015-03-29 20:39:26
【问题描述】:

我不断收到 ByRef 错误,但我似乎无法弄清楚。 代码全部写在同一个模块中。

Sub GetTime(Labelname As Object)
Dim Hint, Mint, Sint As Integer
Dim time As String

Hint = CInt(Hour(Now))
Mint = CInt(Minute(Now))
Sint = CInt(Second(Now))

time = CorrectTime(Hint, Mint, Sint)

Private Function CorrectTime(Hours As Integer, Minutes As Integer, Seconds As Integer) As String
Dim HS, MS, SS As String

If Len(CStr(Hours)) = 1 Then
    HS = "0" & CStr(Hours)
Else
    HS = CStr(Hours)
End If

If Len(CStr(Minutes)) = 1 Then
    MS = "0" & CStr(Minutes)
Else
    MS = CStr(Minutes)
End If

If Len(CStr(Seconds)) = 1 Then
    SS = "0" & CStr(Seconds)
Else
    SS = CStr(Seconds)
End If

CorrectTime = HS & ":" & MS & ":" & SS
End Function

每当我尝试运行代码时,它都会给我一个错误

time = CorrectTime(Hint, Mint, Sint)

错误类型将是 ByRef 不匹配。

我没有看到什么可以解决这个问题?

【问题讨论】:

  • 顺便说一句,你应该使用Long 而不是Integer

标签: vba excel


【解决方案1】:

常见问题:Dim Hint, Mint, Sint As Integer

这里只有Sint是一个Integer,其他两个变量没有声明类型所以默认为Variant;当传递给期望整数的函数时,会引发不匹配错误。

纠正:

Dim Hint As Integer, Mint As Integer, Sint As Integer

【讨论】:

  • 等等,我一直在我的所有 vba 代码中声明我的变量。该死的不知道它必须是这样的。非常感谢!
猜你喜欢
  • 2019-01-27
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
相关资源
最近更新 更多