问题很简单:将字符串表示形式转换为代表分钟的数字。唯一的问题是,当我在一组“”中键入HH:MM:SS时,我的代码才有效。如果不包括引号,则代码会运行,但是我在Excel的单元格内收到#value错误。我认为这与长度有关。带/不带引号,代码转到转换后的字符数组的第一个索引(或者我应该说第0个)。这是我的代码:
Public Function TimeToDbl(val As String)
'Convert string into character array
Dim buff() As String
ReDim buff(Len(val) - 1)
For i = 1 To Len(val)
buff(i - 1) = Mid$(val, i, 1)
Next
'Separate hours,minutes,seconds
Dim h, m, s As Double
h = 0
m = 0
s = 0
For i = 1 To 2
h = (h * 10 ^ (i - 1)) + CInt(buff(i))
Next i
For i = 4 To 5
m = (m * 10 ^ (i - 4)) + CInt(buff(i))
Next i
For i = 7 To 8
s = (s * 10 ^ (i - 7)) + CInt(buff(i))
Next i
'Combine values centering minutes
s = s * 0.017
h = h * 60
m = h + m + s
TimeToInt = m
End Function
[传递带引号的字符串时,引号包含在字符串中。将字符串复制到数组时,arr [0]变为“。不带引号传递时,文本仍为” string“类型。
对下面显示的h,m和s进行小的更改:
For i = 0 To 1
h = (h * (10 ^ i) + CInt(buff(i)))
Next i