gpt4 book ai didi

VBA:从 2 列中的 For 函数返回字符串

转载 作者:行者123 更新时间:2023-12-04 21:33:05 26 4
gpt4 key购买 nike

我没有编码背景,但一直很想尝试一下。到目前为止我一直很享受,但最近被难住了。我已经用尽了我有限的理解和研究来试图解决这个问题,所以非常感谢任何帮助!

我的函数接受一个字符串并将其创建为一个数组。然后我在数组中搜索特定字符串并将它们输出为数字和日期。我已经成功做到了这一点,但无法弄清楚如何让 VBA 在电子表格的两列中返回这些结果。它似乎只给了我 For 函数的最后一个结果。

这是使用 Excel 2016 和 VBA 的代码:

    Function test() As Variant

Dim data As String: data = "push.29Sep17 and 333>! push.28Sep17 and 55555>! push.27Sep17 and 4444>!"
Dim day() As String: day() = Split(data, "!")
Dim num As Integer: num = UBound(day) - 1

For i = 0 To num
Dim p1 As Integer: p1 = InStr(1, day(i), "and ")
Dim p2 As Integer: p2 = InStr(p1, day(i), ">")
Dim p3 As Integer: p3 = p1 + 4
Dim p4 As Integer: p4 = p2 - p3
Dim price1 As String: price1 = Mid(day(i), p3, p4)
Dim d1 As Integer: d1 = InStr(1, day(i), "push.")
Dim d2 As Integer: d2 = d1 + 5
Dim date1 As String: date1 = Mid(day(i), d2, 7)
test = price1 & " " & date1
Debug.Print price1, date1
Next i

End Function

这是我在电子表格上使用该函数时得到的结果: test = price1 & " " & date1

这是我想要得到的:
hopeful result

最佳答案

Excel 在计算工作表时会调用用户定义函数 (UDF)。

您可以像使用任何其他 Excel 工作表函数一样使用它们,例如:

=MyUDF("foo!bar")

像每个 Excel 工作表函数一样,UDF 接受一些输入,用它做一些事情,然后返回一个结果; Excel 获取该结果并将其显示在调用该函数的单元格中。

明确禁止 UDF 更改其他单元格中的任何内容,因此 Function 是不可能的。影响调用它的单元格以外的任何单元格。函数不格式化单元格,它们计算单元格的值——不多也不少。

如果您需要一些 VBA 代码需要做的更多(例如影响多个单元格的内容、格式化它们等),那么您需要的不是 Function ,而是一个宏 - 无参数 Sub可以从宏菜单调用或附加到工作表上的按钮/形状的过程:
Public Sub DoSomething()
Sheet1.Range("A1").Value = 42
Sheet1.Range("A2").Formula = "=A1+12"
Sheet1.Range("A1:A2").NumberFormat = "$#,##0.00"
End Sub

您很快就会发现可能性实际上是无穷无尽的——不要感到不知所措,如果研究让您无处可去并且您被困在一个特定的问题上,并且知道有 Rubberduck,我们会在这里提供帮助。 (我管理的一个 VBIDE 插件 OSS 项目)可以帮助您避免一些常见的初学者(和一些不那么初学者)陷阱,您将不可避免地遇到(很多 Rubberduck 的代码检查都受到 Stack Overflow 问题的启发!)

享受你的旅程!

关于VBA:从 2 列中的 For 函数返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com