我試圖激活從另一個用片材,並顯示在Excel消息框中的單元格的值,但每當我運行它,會出現一個下標錯誤,稱標超出的範圍。無法檢索值擅長VBA
我的代碼:
Sub Home()
Dim tbValue As String
tbValue = Worksheets("Home").TextBox1.Value
Worksheets(tbValue).Activate
MsgBox Cells(7,1).Value
End Sub
任何人有任何想法,爲什麼下標越界?謝謝
我試圖激活從另一個用片材,並顯示在Excel消息框中的單元格的值,但每當我運行它,會出現一個下標錯誤,稱標超出的範圍。無法檢索值擅長VBA
我的代碼:
Sub Home()
Dim tbValue As String
tbValue = Worksheets("Home").TextBox1.Value
Worksheets(tbValue).Activate
MsgBox Cells(7,1).Value
End Sub
任何人有任何想法,爲什麼下標越界?謝謝
該代碼看起來可行,但是,在頂部嘗試With/ End with
和Option 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
現在msgbox出現,但它什麼都不顯示,好像它無法檢索工作表中的單元格的值 – decemberrobot
那裏有什麼?這是A7。 – Vityata
「Option Explict」和「With」如何解決下標超出範圍? –
下標越界,因爲工作表名稱找不到。它可能發生在Worksheet(...)
兩行代碼中。
Worksheets("Home")
可能會返回錯誤標,因爲你的活動工作簿可能不是一個與您的家庭工作;
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這個名字)。
我通常將我的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
但是,爲什麼當你已經創建了對象時創建一個新變量? 'ThisWorkbook'是以前定義的,並且不依賴於你可能改變的文件名! –
爲了避免多個工作簿打開時出現複雜情況。 – Luuklag
您是否在輸入工作表名稱'Textbox1'實際存在的表?如果它試圖用'TRIM'包裹你的Textbox1的價值在年底擺脫任何多餘的空格:'修剪(工作表(「家」)TextBox1.Value)' –
它的存在呀,我甚至嘗試硬編碼表名稱而不是使用tbValue但它仍然是相同的錯誤,運行時錯誤9,下標超出範圍。 – decemberrobot
我不認爲'TextBox1'不能像那樣訪問。它必須是「Sheet1.TextBox1」或「Worksheets(」Home「)」的表單對象。形狀(「TextBox1」)...' – Slai