【发布时间】:2018-01-02 17:35:44
【问题描述】:
命名范围(或用户定义范围)有 6 列,但行数可能会根据其他功能而变化。
现在尝试将该范围的整个值、所有 6 列和所有行的值放入 TextBox。由制表符分隔的行。
以下代码返回对象定义错误等。
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
【问题讨论】:
-
不确定该链接与我的问题有何关联。
-
您可能想要访问工作簿的
sheet1,但您正在访问一个名为sheet1的变量。所以我假设你需要thisWorkbook.sheets("sheet1")或activeWorkbook.sheets("sheet1")之类的东西,但这只是猜测。该链接说明了如何访问工作簿和工作表对象。 -
抱歉,刚刚了解到您可以通过其名称(“codeName”)作为对象访问工作表 - 不知道这一点。如果工作表不存在,您将收到错误
424 - Object required。如果这不是您的错误,请尝试通过将范围的值分配给一个变体变量来将您的代码分成两行,然后将该变量分配给您的用户表单。哪一行抛出错误? -
我用新代码编辑了这个问题。几乎需要一些调整。
标签: vba textbox named-ranges