Arrays VBA通过一些计算值创建一个数字为1的数组
问题: 如何在不知道结束编号的情况下创建以下数组:Arrays VBA通过一些计算值创建一个数字为1的数组,arrays,string,excel,vba,Arrays,String,Excel,Vba,问题: 如何在不知道结束编号的情况下创建以下数组: myArray = Array(0, 1, 2, 3, 4) 例如,我可以在Python中执行类似的操作: myList = range(ending_number) 以及在Matlab中: myVector = 0:ending_number 更多详细信息: 我在Excel工作表中指定了一个路径,该工作表引用Linux服务器上的一个位置。我希望用户只需要指定Linux服务器理解的路径,还需要引用本地Windows机器和Linux服务器都
myArray = Array(0, 1, 2, 3, 4)
例如,我可以在Python中执行类似的操作:
myList = range(ending_number)
以及在Matlab中:
myVector = 0:ending_number
更多详细信息:
我在Excel工作表中指定了一个路径,该工作表引用Linux服务器上的一个位置。我希望用户只需要指定Linux服务器理解的路径,还需要引用本地Windows机器和Linux服务器都理解的位置。Linux服务器路径指定为
/home/shelf6/some/path/to/a/location/on/the/server
\\SB1\home_shelf6\some\path\to\a\location\on\the\server
Windows中相应的路径指定为
/home/shelf6/some/path/to/a/location/on/the/server
\\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)
中知道路径的长度,因此我不知道一种简单的方法来获取“shelf6
后面的路径部分
有没有什么方法可以完成我想做的事情(即没有硬编码数组),或者有没有更简单的方法来完成整个事情?考虑一下:
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
只需从linux路径重新读取,从一个等于已使用元素长度之和的偏移量开始,加上斜杠,交换路径字符
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))), "/", "\")
我可能看错了问题,但这是否足够:
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
但这并不能回答您的问题,因为您有两个选择:
一种是在阵列上使用ReDim
第二个选项是不使用数组,而是使用集合 这很好,但是您是否打算将第一个
LinJobLoc
改为s1
?如果没有,请指定什么是s1
,以便我可以将您的解决方案标记为答案。哦,是的,这是测试,然后我添加了您的值。它现在更新了,我在测试中使用了s1作为字符串1。如果WinJobLoc
命令是WinJobLoc=“\\SB1\”+Replace(Replace(LinJobLoc,“/”,“\”,“\”,“\”,”,2,1)
,则更简单。这也将允许以后引用LinJobLoc
(假设第二个LinJobLoc
命令已被删除,因为它与该更改无关)。这确实完成了我试图做的事情,但我希望能够找到实现最终目的的最简洁的方法。