VBA 使用变量来选择列

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

我对编码非常陌生,所以如果这将是一个超级简单的任务,请原谅我。

我正在尝试删除名为 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 等于哪一列。感谢这里的任何帮助

excel vba range trim
1个回答
0
投票

对于任何可能看到这个的人,我重用了我自己的高层代码并对其进行了一些修改。可能不是最好的解决方案,但我发现它做了我想做的事情

    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
© www.soinside.com 2019 - 2024. All rights reserved.