vba split函数的使用方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba split函数的使用方法?相关的知识,希望对你有一定的参考价值。

如何提取日期和时间并计算时间差?

为什么运行时显示宏?


'举例

Dim a1 As String

Dim str1 As String

Dim str2 As String

a1 = "(1/10)8:00-9:00(2/10)"

str1 = Right(Split(a1, ")")(0), Len(Split(a1, ")")(0)) - 1) '返回结果是 "1/10"

str2 = Left(Split(a1, "(")(2), Len(Split(a1, "(")(2)) - 1) '返回结果是"2/10"

'这里用到 right() / left() 用于删除无用字符

'例如 split(a1,")")(0) 返回的是"(1/10" ,这时right()的作用就是删除前面多余的"("


'计算日期时间差 可以用datediff()函数


'怎么不直接保存成 yyyy/mm/dd hh:mm:ss-yyyy/mm/dd hh:mm:ss

'这样提取不会太复杂

'给你写个简单的例子

 

Dim date1 As Date

Dim date2 As Date

Dim ss As String

Dim d As Integer, h As Integer, m As Integer, s As Integer

date1 = Split(sheets("sheet1").cells(1, 1), "-")(0)

date2 = Split(sheets("sheet1").cells(1, 1), "-")(1)

ss = DateDiff("s", date1, date2)

d = Int(Val(ss) / 86400)

h = Int((Val(ss) - d * 86400) / 3600)

m = Int((Val(ss) - d * 86400 - h * 3600) / 60)

s = Val(ss) - d * 86400 - h * 3600 - m * 60

MsgBox "时间差为" & d & "天" & h & "时" & m & "分" & s & "秒"

参考技术A vba split函数的使用方法如下:
原型:
Function Split(
ByVal Expression As String,
Optional ByVal Delimiter As String = " ",
Optional ByVal Limit As Integer = -1,
Optional ByVal Compare As CompareMethod = CompareMethod.Binary
) As String()

入参说明:
Expression 是要处理分割的字符串
Delimiter 是要指定分隔符比如" "
Limit 可选参数,指定最大分割子串
Compare 可选
举例说明:

Dim TestString As String = "apple pear banana "
Dim TestArray() As String = Split(TestString)
' TestArray holds "apple", "", "", "", "pear", "banana", "", ""
Dim LastNonEmpty As Integer = -1
For i As Integer = 0 To TestArray.Length - 1
If TestArray(i) <> "" Then
LastNonEmpty += 1
TestArray(LastNonEmpty) = TestArray(i)
End If
Next
ReDim Preserve TestArray(LastNonEmpty)
' TestArray now holds "apple", "pear", "banana"

有没有办法完全限定 VBA 函数的使用?

【中文标题】有没有办法完全限定 VBA 函数的使用?【英文标题】:Is there a way to fully qualify the use of a VBA function? 【发布时间】:2019-03-13 03:49:33 【问题描述】:

所以我刚刚了解到,如果您键入 VBA。这将激活一个包含 VBA 函数的自动列表。这是否意味着 VBA 是一个对象?如果我想使用 VBA 函数“完全限定”,这些限定符是什么?

例如,这些都是有效的陈述吗:

x = Sqr(25)
x = VBA.Sqr(25)
x = Application.VBA.Sqr(25)

感谢您的澄清。

【问题讨论】:

不,最后一个无效,因为 Application 对象没有 VBA 属性(没有任何意义)。 图书馆永远是***的。如果您打开对象浏览器 (F2),它们将位于左上角的库下拉列表中。 还有一些其他的“功能”。例如,Array(a,b,c) 尊重Option Base 语句,而VBA.Array(a,b,c) 将始终生成Base 0 数组。 VBA 是一个库,Excel 也是。 Excel.Application 将是对象。 不,Excel 和 VBA 是不同的库。 VBA 没有对象——它更像是一个命名空间。 【参考方案1】:

如果您不符合条件,则默认情况下 VBA 假定它是 VBA 函数。如果您想在 VBA 中使用工作表函数,请使用类似:

x = Application.WorksheetFunction.VLookup(Range("A1").Value, Range("B1:C100"), 1, False)

如果您使用像TRIM() 这样的函数,那么进行限定非常重要,因为 VBA 版本和工作表版本具有不同的结果。

【讨论】:

我刚刚研究了对象浏览器中的事物是如何组织的。如果我是正确的,如果我们限定一个 VBA 函数,所有这些都将是相同的:x = Sqr(25) x = VBA.Sqr(25) x = VBA.Math.Sqr(25) x = Math。平方(25) @GeekyFreaky 试验一下看看编译器会接受什么形式以及产生的结果的质量总是很有用的。 是的,我这样做了,它接受了所有这些,但只是想确定一下! :)

以上是关于vba split函数的使用方法?的主要内容,如果未能解决你的问题,请参考以下文章

vbasplitrow错误

vba中split()()后面的括号是啥意思

VBA-自定义函数和带参数的过程

Excel-VBA中如何使用split来分割内部含有不定空格的字符串

split的函数的用法?

vba中 find函数每个参数的详细解释