Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在文本框中打印数组_Vba - Fatal编程技术网

Vba 在文本框中打印数组

Vba 在文本框中打印数组,vba,Vba,我正在编写代码,其中按钮1将从工作表中获取数据并存储在数组中,按钮2将在工作表和文本框中打印数组 Public arr As Variant Private Sub UserForm_Click() End Sub Private Sub CommandButton1_Click() arr = Range("B8:C17") Range("B8:C17") = Clear End Sub Private Sub CommandButton2_Clic

我正在编写代码,其中按钮1将从工作表中获取数据并存储在数组中,按钮2将在工作表和文本框中打印数组

Public arr As Variant
Private Sub UserForm_Click()
End Sub

Private Sub CommandButton1_Click()
arr = Range("B8:C17")
Range("B8:C17") = Clear
End Sub

Private Sub CommandButton2_Click()
Range("B8:C17") = arr
TextBox1.Text = arr

End Sub    
Private Sub CommandButton3_Click()
Unload Me

End Sub

除了不在文本框中打印数组外,一切正常。这里出了什么问题?

因此,您需要做的是循环遍历数组数据行并逐个填充它

首先,您需要确保在文本框属性中将
Multiline
设置为
True

然后添加以下内容:

Private Sub CommandButton2_Click()

Range("B8:C17") = arr

Dim i As Long
For i = 1 To UBound(arr, 1)
    Me.TextBox1.Text = Me.TextBox1.Text & arr(i, 1) & Chr(9) & arr(i, 2) & vbCr
Next i

End Sub
注:

这只适用于数组中的2列。如果有更多,则需要在行中添加另一个
&arr(i,x)
,列号为
x

如果您需要在两列之间添加一个额外的选项卡,请在现有选项卡旁边的行中添加另一个
&Chr(9)

看看这是否适合您。

因此,您需要做的是循环遍历数组数据行并逐个填充

首先,您需要确保在文本框属性中将
Multiline
设置为
True

然后添加以下内容:

Private Sub CommandButton2_Click()

Range("B8:C17") = arr

Dim i As Long
For i = 1 To UBound(arr, 1)
    Me.TextBox1.Text = Me.TextBox1.Text & arr(i, 1) & Chr(9) & arr(i, 2) & vbCr
Next i

End Sub
注:

这只适用于数组中的2列。如果有更多,则需要在行中添加另一个
&arr(i,x)
,列号为
x

如果您需要在两列之间添加一个额外的选项卡,请在现有选项卡旁边的行中添加另一个
&Chr(9)

看看这是否适合您。

您是否刚刚创建了一个新帐户来询问此问题?你的另一个问题就在VBA标签中的这个问题之前,你甚至没有回答,(是的,你问的是不同的问题),但我想自从你现在使用它之后,它就起作用了……是的,它起作用了,谢谢。我没有注意到我登录了不同的gmail。你在尝试填充文本框时肯定会出错?所以你试着用和数组相同的排列来填充它,对吗?文本框中有多行,从中有两列?它是否需要是textbox,因为listbox具有内置的columns控件,而textbox没有多列,只能使用tab或其他方法复制。它需要是textbox。也许我会用标签把它整齐地显示出来。但是我不能在文本框中打印它。你刚才创建了一个新帐户来问这个问题吗?你的另一个问题就在VBA标签中的这个问题之前,你甚至没有回答,(是的,你问的是不同的问题),但我想自从你现在使用它之后,它就起作用了……是的,它起作用了,谢谢。我没有注意到我登录了不同的gmail。你在尝试填充文本框时肯定会出错?所以你试着用和数组相同的排列来填充它,对吗?文本框中有多行,从中有两列?它是否需要是textbox,因为listbox具有内置的columns控件,而textbox没有多列,只能使用tab或其他方法复制。它需要是textbox。也许我会用标签把它整齐地显示出来。但是我不能在textboxNow中打印它,我不确定你的意图,但是如果你想编辑它,然后将内容添加到另一个数组中,那会复杂得多。这一行:对于i=1到UBound(arr),显示“类型不匹配”的错误,我保证我会遵循所有的方法。对于i=1到UBound(arr,1)现在可以正常工作了。非常感谢您不用担心,您得到了错误,因为它是一个2d数组,ubound需要知道是对行计数还是列计数执行此操作。不同的系统有不同的需求。我的工作很好,没有添加它(默认情况下是行),所以这就是为什么我一开始没有看到问题。现在我不确定你的意图,但如果你想编辑它,然后将内容添加回另一个数组,这将非常复杂。这一行:For I=1 to UBound(arr)显示“类型不匹配”的错误我确信我会很好地遵循每一件事,因为I=1到UBound(arr,1)现在可以正常工作了。非常感谢您不用担心,您得到了错误,因为它是一个2d数组,ubound需要知道是对行计数还是列计数执行此操作。不同的系统有不同的需求。我的工作很好,没有添加它(默认情况下是行),所以这就是为什么我一开始没有看到问题。