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))), "/", "\")