我对编码非常陌生,所以如果这将是一个超级简单的任务,请原谅我。
我正在尝试删除名为 ID 的列的开头和结尾处的任何多余空格。 我已经有一个用于此 ID 列的全局变量和一个宏来查找它的位置,因为 ID 列位置可能会随着每次提交而改变。 我的问题源于使用修剪功能。我希望该函数使用我定义为 IDColumn 的变量来修剪 ID 列,以便该列中的所有条目随每次提交而变化。
附件是我声明的变量和我在这里找到的代码,实际上我遇到了如何使用 Range 设置数组的问题。我当前收到应用程序定义或对象定义的错误。我知道我没有正确使用范围,但我不知道我如何没有正确使用它。我读到它需要字符串数据,但我也看到人们使用 cells() 定义范围
Option Explicit
Option Compare Text
Global currentsheet, sheetcount, missbreak, criterror As Integer
Public duptest As Integer
Public i As Long
Public deleted_ID As String
Public rlastcell As Range
Global lrow, rowcount, columnCount, rowcount2, columncount2 As Long
Global OriginalRowCount As Long
Global x As Long
Global y, IDColumn As Integer
Global ThisIsADuplicate, ThisIsAMultiple As Boolean
Global arr, arr2 As Variant
Sub RemoveLeadingAndTrailingSpaces()
Dim V As Variant
V = Range(Cells(2, IDColumn), Cells(rowcount, IDColumn))
For i = 1 To UBound(V, 1)
If V(i, 1) <> "" Then
V(i, 1) = Trim(V(i, 1))
End If
Next i
End Sub
为了清楚起见,我在第 1 行有标题,我用它来查找 IDColumn 等于哪一列。感谢这里的任何帮助
对于任何可能看到这个的人,我重用了我自己的高层代码并对其进行了一些修改。可能不是最好的解决方案,但我发现它做了我想做的事情
Sub RemoveLeadingAndTrailingSpaces()
Dim sh As Worksheet
Dim sheetArr As Variant
Dim test1, test2, test3 As String
Set sh = ThisWorkbook.Sheets(2)
sheetArr = sh.UsedRange
For i = 2 To rowcount
If Left(sheetArr(i, IDColumn), 1) = " " Then
Cells(i, IDColumn) = Trim(Cells(i, IDColumn))
End If
If Right(sheetArr(i, IDColumn), 1) = " " Then
Cells(i, IDColumn) = Trim(Cells(i, IDColumn))
End If
Next i
End Sub