gpt4 book ai didi

vba - 使用 VBA 在 Excel 中跨多个列的空格后删除文本

转载 作者:行者123 更新时间:2023-12-04 20:38:16 25 4
gpt4 key购买 nike

我有一个项目的每月价格列表,价格列有金额和货币。我正在尝试删除多列中的货币。

样本数据集:
enter image description here

我在下面写了宏来删除 A1:E6 中单元格空格后的文本:

Sub RemoveCurrency()
Dim cell As Range
Dim withCurrency As String
Dim PriceOnly As String
For Each cell In Worksheets("Sheet1").Range("A1:E6")
withCurrency = cell.Value
PriceOnly = Left(withCurrency, InStr(withCurrency, " ") - 1)
cell.Value = PriceOnly
Next cell
End Sub

在我运行它之后,它给了我一个 VB 运行时错误“5”:
无效的过程调用或参数

有人可以帮助调试我的 VBA 代码吗?

最佳答案

这段代码比你的代码长得多/效率低得多,但是当它用完要编辑的单元格时它不会给你一个错误,至少(它是我过去为了几乎完全相同的目的而编写的一个模块)。或者,如果您更新范围以从您的货币金额开始的单元格开始,您的应该可以工作(但最后仍然出错)。您可以在 MSDN Documentation 中阅读有关 VBA 范围的更多信息。 .

如果您还没有检查它,它要求您添加对“Microsoft VBScript 正则表达式 5.5”的 VBA 引用。您可以在工具 -> 引用中执行此操作。

Public Sub TruncateIDs()

Dim strPattern As String: strPattern = "[A-Z]{1,3}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim MyRange As Range

Set MyRange = ActiveSheet.Range("B3:E6")
ActiveSheet.Range("B3").Select

Do While strPattern <> ""
strInput = ActiveCell.Value

With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With

If regEx.Test(strInput) Then
ActiveCell = regEx.Replace(strInput, strReplace)
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell = "" Then
ActiveCell.Offset(-4, 1).Select
If ActiveCell <> "" Then
strInput = ActiveCell.Value
ActiveCell = regEx.Replace(strInput, strReplace)
ActiveCell.Offset(1, 0).Select
Else
Exit Do
End If
Else
Exit Do
End If
Loop

End Sub

关于vba - 使用 VBA 在 Excel 中跨多个列的空格后删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38925983/

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