2017-04-18 45 views
1

我试图激活从另一个用片材,并显示在Excel消息框中的单元格的值,但每当我运行它,会出现一个下标错误,称标超出的范围。无法检索值擅长VBA

我的代码:

Sub Home() 
Dim tbValue As String 
tbValue = Worksheets("Home").TextBox1.Value 

Worksheets(tbValue).Activate 

MsgBox Cells(7,1).Value 


End Sub 

任何人有任何想法,为什么下标越界?谢谢

+1

您是否在输入工作表名称'Textbox1'实际存在的表?如果它试图用'TRIM'包裹你的Textbox1的价值在年底摆脱任何多余的空格:'修剪(工作表(“家”)TextBox1.Value)' –

+0

它的存在呀,我甚至尝试硬编码表名称而不是使用tbValue但它仍然是相同的错误,运行时错误9,下标超出范围。 – decemberrobot

+0

我不认为'TextBox1'不能像那样访问。它必须是“Sheet1.TextBox1”或“Worksheets(”Home“)”的表单对象。形状(“TextBox1”)...' – Slai

回答

0

该代码看起来可行,但是,在顶部尝试With/ End withOption Explicit,它可能工作。此外,它可以是.Cells(7,1)是一个错误或什么。总之,再试一次:

Option Explicit 

Sub Home() 
    Dim tbValue As String 
    tbValue = trim(Worksheets("Home").TextBox1.text) 

    with worksheets(tbValue) 
     MsgBox .Cells(7,1) 
    end with 

End Sub 

的想法在评论Trim也是不错的一个。 只需走一步,使用TextBox1.Text。查看更多在这里 - Distinction between using .text and .value in VBA Access

+0

现在msgbox出现,但它什么都不显示,好像它无法检索工作表中的单元格的值 – decemberrobot

+1

那里有什么?这是A7。 – Vityata

+0

“Option Explict”和“With”如何解决下标超出范围? –

2

下标越界,因为工作表名称找不到。它可能发生在Worksheet(...)两行代码中。

  1. Worksheets("Home")可能会返回错误标,因为你的活动工作簿可能不是一个与您的家庭工作;

  2. Worksheets(tbValue)可以由相同的第一原因失败,并且因为tbValue可能不完全相符的表名称。

第一溶液可确保正确的书是积极的:

Sub Home() 
    Dim tbValue As String 
    Workbooks("your_workbook_name.xlsm").Activate 
    tbValue = ThisWorkbook.Worksheets("Home").TextBox1.Value 
    Worksheets(tbValue).Activate 
    MsgBox Cells(7,1).Value 
End Sub 

更好的办法是避免纸张和书本激活和使用完全合格的对象。如果宏是在同一本书首页表:

Sub Home() 
    Dim tbValue As String 
    tbValue = ThisWorkbook.Worksheets("Home").TextBox1.Value 
    MsgBox ThisWorkbook.Worksheets(tbValue).Cells(7,1) 
End Sub 

您还可以使用VBA指定的名称替换Worksheets("Home")到工作表中,可能Sheet1(您可以检查IDE这个名字)。

+0

我通常将我的wb和ws硬编码为:“Dim wb As Workbook Dim ws as Worksheet Set wb = Application.Workbooks(”workbookname.xlsm“)Set ws = wb.Worksheets(”Sheetname“)'then then just can just引用如:'Msgbox ws.Cells(7,1)' – Luuklag

+2

但是,为什么当你已经创建了对象时创建一个新变量? 'ThisWorkbook'是以前定义的,并且不依赖于你可能改变的文件名! –

+0

为了避免多个工作簿打开时出现复杂情况。 – Luuklag