循环访问string数组项错误

场景:我有一个鼠标指针代码,点击某个屏幕坐标,复制,然后在另一个坐标点击并粘贴。 我的数据被复制可以改变,有些列有问题的信息。

问题:某些列有“17-2”或“13.5”等数据。 因此,对于这些列,在复制粘贴过程完成之前,我将excel文件中的列更改为txt:

ThisWorkbook.Sheets("Output").Columns("E").NumberFormat = "@" 

这些有问题的列可以改变地方(例如,“E”或“J”),甚至根本不存在。

目标:我试图改变我的代码,所以我得到一个用户input的列号必须改为文本。

我到目前为止:假设我正在使用MSGBox获取用户input(以“2/4/5/9”的forms,作为string)。 我首先把它分成一个数组,而不是我试图循环这个数组。 对于数组中的每个数字,我使用一个ColumnLetter函数,它给了我需要的那个字母,然后我把这个字段更改为文本。

问题:现在(在检查很多post关于如何正确循环string数组,在这里在SO)我得到这个代码:

 Dim ColTXT As String Dim ColTXTArray() As String Dim i As Long On Error GoTo ErrorHandler ColTXT = Application.InputBox("Please enter ascending column numbers to be changed to text (separated by '/', no blanks)", "Please enter Column Numbers") ColTXTArray() = Split(ColTXT, "/") For i = LBound(ColTXTArray) To UBound(ColTXTArray) 'ColTXTArray (i) ThisWorkbook.Sheets("Output").Columns(Col_Letter(ColTXTArray(i)))_ .NumberFormat = "@" Next i 

但我无法做到这一点,循环通过数组中的每个项目。

问题:最好的办法是什么?

Obs:在我的最后一次运行中,我得到了一个错误(ByRef参数types不匹配):

 ThisWorkbook.Sheets("Output").Columns(Col_Letter(ColTXTArray(i)))_ .NumberFormat = "@" 

Obs2:这是我的function,根据一个数字find一个列字母:

 Function Col_Letter(lngCol As Long) As String Dim vArr vArr = Split(Worksheets("Output").Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

Columns集合可以使用文本索引(例如Columns("D")或数字索引(例如Columns(4)索引。

因此,不需要在代码中使用Col_Letter函数,只需使用该列即可

 ThisWorkbook.Sheets("Output").Columns(CLng(ColTXTArray(i))).NumberFormat = "@" 

CLng将您的String值(例如"4" )转换为Long ,例如4