VBA将命名_范围的值复制到文本框中

VBA将命名_范围的值复制到文本框中,vba,textbox,named-ranges,Vba,Textbox,Named Ranges,命名范围(或用户定义的范围)有6列,但行数可能会根据其他函数而更改 现在尝试将该范围的全部值,即所有6列和所有行的值放入文本框。由制表符分隔的行 下面的代码返回对象定义的错误等 UserForm1.TextBox1.Value = Sheet1.Range("named_range").Value 非常感谢您的帮助 编辑: FunThomas是对的,我不需要单独声明一行就可以得到范围的值。因此,我从下面的代码开始,该代码在多行msgBox中显示范围时效果良好 如何摆脱额外的InputBox,并

命名范围(或用户定义的范围)有6列,但行数可能会根据其他函数而更改

现在尝试将该范围的全部值,即所有6列和所有行的值放入文本框。由制表符分隔的行

下面的代码返回对象定义的错误等

UserForm1.TextBox1.Value = Sheet1.Range("named_range").Value
非常感谢您的帮助

编辑:

FunThomas是对的,我不需要单独声明一行就可以得到范围的值。因此,我从下面的代码开始,该代码在多行msgBox中显示范围时效果良好

如何摆脱额外的InputBox,并在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
由于有多行,请不要忘记将文本框的
多行属性设置为
true

另一点:您应该更改读取范围的行。“错误恢复下一步”
是一个非常危险的语句,因为它会吞噬所有错误,您可能会完全迷失方向,从而发现错误。只需要捕捉inputbox不返回
范围的情况(例如,因为按下了“取消”)。所以我建议你把这些条款改为

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

不确定链接与我的问题有何关联。可能您想访问工作簿的
sheet1
,但您正在访问名为
sheet1
的变量。因此,我假设您需要类似于
thisWorkbook.sheets(“sheet1”)
activeWorkbook.sheets(“sheet1”)
的内容,但这只是猜测。该链接解释了如何访问工作簿和工作表对象。很抱歉,刚刚了解到您可以将工作表的名称(“代码名”)作为对象来访问工作表,但对此一无所知。如果工作表不存在,您将得到一个错误
424-所需对象
。如果这不是您的错误,请尝试通过将范围的值分配到变量中,将代码拆分为两行,然后将此变量分配给您的userform。哪一行抛出错误?我用新代码编辑了问题。几乎有需要一些调整。工程伟大,谢谢你的建议!最后一个问题,我如何摆脱输入框?我不想多走一步。当我使用Set xRg=xTxt时,会出现类型不匹配错误。可能试图将字符串作为范围传递。