命名范围(或用户定义的范围(有 6 列,但行数可能会根据其他函数而变化。
现在尝试将该范围,所有6列和所有行的整个值获取到TextBox中。由制表符分隔的行。
以下代码返回对象定义的错误等。
UserForm1.TextBox1.Value = Sheet1.Range("named_range").Value
任何帮助非常感谢。
编辑:
FunThomas 是对的,我将无法在不声明其单独行的情况下获取范围的值。所以我从下面的代码开始,它可以很好地在多行 msgBox 中显示范围。
如何摆脱额外的输入框,并在UserForm1.TextBox1中显示结果,而不是功能有限的msgBox。
Sub showOfferRange()
Dim xRg As Range
Dim xTxt As String
Dim xCell As Range
Dim xStr As String
Dim xRow As Long
Dim xCol As Long
On Error Resume Next
xTxt = ThisWorkbook.Names("offers_running")
Set xRg = Application.InputBox("Offer range:", "Display offers", xTxt, , , , , 8)
'Set xRg = xTxt
If xRg Is Nothing Then Exit Sub
On Error Resume Next
For xRow = 1 To xRg.Rows.Count
For xCol = 1 To xRg.Columns.Count
xStr = xStr & xRg.Cells(xRow, xCol).Value & vbTab
Next
xStr = xStr & vbCrLf
Next
MsgBox xStr
End Sub
基本上,要将文本写入表单的文本框,只需
UserForm1.TextBox1.text = UserForm1.TextBox1
UserForm1.show
由于您有多行,请不要忘记将文本框的MultiLine
-属性设置为true
。
另一点:您应该更改读取范围的行。on error resume next
是一个非常危险的声明,因为它吞噬了所有错误,您可能会完全迷失找到错误。它只需要捕获输入框不返回Range
的情况(例如,因为按下了"取消"(。所以我建议你把偷偷改成
xTxt = ThisWorkbook.Names("offers_running")
Set xRg = Nothing
On Error Resume Next
Set xRg = Application.InputBox("Offer range:", "Display offers", xTxt, , , , , 8)
On Error Goto 0
If xRg Is Nothing Then Exit Sub