将HH:MM:SS的字符串转换为VBA中的数字

问题描述 投票:0回答:1

问题很简单:将字符串表示形式转换为代表分钟的数字。唯一的问题是,当我在一组“”中键入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
excel vba
1个回答
0
投票

[传递带引号的字符串时,引号包含在字符串中。将字符串复制到数组时,arr [0]变为“。不带引号传递时,文本仍为” string“类型。

对下面显示的h,m和s进行小的更改:

For i = 0 To 1 
h = (h * (10 ^ i) + CInt(buff(i))) 
Next i
© www.soinside.com 2019 - 2024. All rights reserved.