VBA通过计算值创build一个数字为1的数组

题:

如何在不知道结束编号的情况下创build下列数组:

myArray = Array(0, 1, 2, 3, 4) 

例如,我可以在Python中做类似的事情:

 myList = range(ending_number) 

以及在Matlab中:

 myVector = 0:ending_number 

更多详情:

我在Excel工作表中指定了一个path,该path引用了Linux服务器上的一个位置。 我希望用户只需要用Linux服务器可以理解的方式来指定path,但是也需要引用本地Windows机器和Linux服务器都能理解的位置。 Linux服务器path被指定为

 /home/shelf6/some/path/to/a/location/on/the/server 

并在Windows中对应的path指定为

 \\SB1\home_shelf6\some\path\to\a\location\on\the\server 

我正在使用以下命令从一个转换到另一个:

 WinJobLoc = Split(LinJobLoc, "/", -1, vbTextCompare) WinJobLoc = "\\sb1\" & WinJobLoc(1) & "_" & WinJobLoc(2) & "\" & _ Join(Application.WorksheetFunction.Index(WinJobLoc, 0, _ Array(4, 5, 6, 7, 8, 9, 10, 11)), "\", vbTextCompare) 

但是,由于我只能知道从UBound(WinJobLoc)的path长度,我不知道一个简单的方法来获取“ shelf6 ”后面的部分path。

有没有办法做我想做的事(即没有硬编码数组),还是有一个更简单的方法来完成整个事情?

我可能会错误地阅读这个问题,但这应该足够了:

 Sub stringModify() Dim LinJobLoc As String Dim WinJobLoc As String LinJobLoc = "/home/shelf6/some/path/to/a/location/on/the/server" LinJobLoc = Replace(Right(LinJobLoc , Len(LinJobLoc ) - 1), "/", "\") WinJobLoc = "\\SB1\" + Replace(LinJobLoc, "\", "_", , 1) End Sub 

但是这并不能回答你的问题来回答你有两个select:

一个是你在arrays上使用ReDim

第二个select是不使用数组,而是使用集合。

考虑:

 Sub ArrayCreator() Dim N As Long, i As Long N = Application.InputBox(Prompt:="Enter a number", Type:=1) ReDim myarray(0 To N) As Long For i = 0 To N myarray(i) = i Next i End Sub 

只需从linuxpath重新读取,从等于已经使用的元素长度之和的偏移量开始,加上斜线,交换path字符;

 Dim ArrWinJobLoc() As String, WinJobLoc As String ArrWinJobLoc = Split(LinJobLoc, "/") WinJobLoc = "\\sb1\" & ArrWinJobLoc(1) & "_" & ArrWinJobLoc(2) & _ Replace$(Mid$(LinJobLoc, 3 + Len(ArrWinJobLoc(1)) + Len(ArrWinJobLoc(2))), "/", "\")