2017-04-18 59 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