代碼如下:
Private Sub UnlockSheet()
Range(Selection.Offset(640, 1), Selection.Offset(0, 0)).Select
' I've tried this
Sheet1.Range(Selection.Offset(640, 1), Selection.Offset(0, 0)).Select
' I've tried this too
Dim ws as Worksheet: Set ws = ThisWorkbook.Sheets(1)
ws.Range(Selection.Offset(640, 1), Selection.Offset(0, 0)).Select
' and of course this, too
End Sub
這段代碼 - 帶有任何指定的宣告 - 給我錯誤運行時錯誤 1004。有人能解釋一下為什么嗎?我無法得到它。我不清楚檔案。
uj5u.com熱心網友回復:
首先請注意
Sheets(1)Sheets("Sheet1")Sheet1
可以是 3 張完全不同的床單。Excel 使用 3 種不同的命名系統來參考作業表,它們是完全獨立的。
Sheets(1)使用作業表標簽欄中的位置。Sheets("Sheet1")使用作業表的選項卡名稱Sheet1使用作業表的 VBA 名稱(與選項卡名稱無關!)。
另請注意,在Range不指定作業表的情況下使用會使 Excec 決定您指的是哪個作業表。因此,如果您想要可靠的代碼,您總是必須指定該范圍應該在哪個作業表中。
您可能會從閱讀 如何避免在 Excel VBA 中使用 Select 中受益。
如果您嘗試.Select不在活動作業表中的范圍,VBA 將拋出"Runtime Error 1004"。所以你必須先激活/選擇作業表。此外,如果Selection不在您嘗試選擇的同一作業表中,它也會失敗。
Dim ws As Worksheet
Set ws = ActiveSheet 'This ensures that `Selection` and `ws` are in the same sheet.
ws.Range(Selection.Offset(640, 1), Selection).Select
請注意,.Offset(0, 0)這沒有任何意義。所以洗掉它。
請注意,最佳做法是根本不使用.Select。除非您希望用戶看到該選擇。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/487666.html
上一篇:在excel中創建系結文本和資料
下一篇:粘貼特殊宏Excel
