VBA /macros代码来获取文本框的值

Sub CopyRandomRows() Windows("sample rnd.xlsm").Activate Rows("1:1").Select Selection.Copy Application.CutCopyMode = False Selection.Copy Windows("rnd sample draft.xlsm").Activate Sheets("Random Sample").Select Rows("1:1").Select ActiveSheet.Paste Dim source As Range, target As Range, randCount&, data(), value, r&, rr&, c& Set source = Workbooks("sample rnd.xlsm").Worksheets("Sheet1").Range("A2:L5215") Set target = Workbooks("rnd sample draft.xlsm").Worksheets("Random Sample").Range("A2") randCount = 5 data = source.value For r = 1 To randCount rr = 1 + Math.Round(VBA.rnd * (UBound(data) - 1)) For c = 1 To UBound(data, 2) value = data(r, c) data(r, c) = data(rr, c) data(rr, c) = value Next Next target.Resize(randCount, UBound(data, 2)) = data End Sub 

这是我的代码。 我的问题是,我只能改变我想要的数据的数量,如果我更改代码randCount = 5 。 我想能够使用我的文本框,并使用它来定义要获得多less数据。 我试过randCound = TextBox1.valuerandCount = TextBox1.Text但似乎没有工作。 我错过了什么? 我如何得到它的工作。 提前致谢

如果TextBox1位于名为Main的工作表上,则可以使用以下命令:

 Worksheets("Main").TextBox1.Value 

更好的是,你可以给表单一个类似于shtMainCodeName然后使用

 shtMain.TextBox1.Value 

最后,你也可以通过形状集合(但上面的方法是可取的)到文本框…

 Worksheets("Main").Shapes("TextBox1").OLEFormat.Object.Object.Value 

你应该可以使用foo = InputBox("bar")

如果你正在从UserForm获取它,那么它将是foo = UserForm1.TextBox1.Value