我很难找到有关此特定问题的示例。 我正在Excel中自动执行一项任务,我需要用户将ID号列表粘贴到Areabox中。当他们单击确定时,我需要我的宏才能在数组中获取此列表,以便我可以遍历这些ID并与它们一起使用(我想检查格式,然后将正确的ID粘贴到Excel的一列中)
我尝试过并在用户窗体上添加了RefEdit(多行为true,滚动条都为) 我将其添加为在单击“确定”时启动:
Dim data As Variant
Dim elemnt As Variant
data = Split(Simcards.simcardsArea.Text, vbNewLine)
For Each element In data
MsgBox element
Next element
是否有更好的工具可以使用?还是这条路要走? 我需要用户能够从任何程序,Excel,记事本,电子邮件等的副本中粘贴ID列表。
谢谢
答案 0 :(得分:0)
Option Explicit
Sub TestMe()
Dim arrayRange As Range
Set arrayRange = Application.InputBox("Enter a range", "Range:", Type:=8)
Dim myArr As Variant
Dim size As Long: size = arrayRange.Rows.Count - 1
ReDim myArr(size)
Dim myCell As Range
Dim myRow As Long: myRow = 0
For myRow = 0 To size
myArr(myRow) = arrayRange.Cells(myRow + 1, 1)
Next
Dim myVal As Variant
For Each myVal In myArr
Debug.Print myVal
Next myVal
End Sub
诀窍是要注意数组的分配方式。想法是,数组应与所选区域中行的大小数一样大,因此:
Dim size As Long: size = arrayRange.Rows.Count - 1
ReDim myArr(size)
-1
是必需的,因为数组从0
开始,除非有人在我们的代码顶部写上Option Base 1
并破坏了我们希望的任何东西。
由于数组以0
开头,因此可以这样循环:
For myRow = 0 To size
myArr(myRow) = arrayRange.Cells(myRow + 1, 1)
Next