簡體   English   中英

object '_Worksheet' 的方法 'Range' 在 Excel VBA 中失敗?

[英]Method 'Range' of object '_Worksheet' failed in Excel VBA?

好吧,首先讓我說我在這方面是個菜鳥。 我正在按照這個循序漸進的視頻進行操作,但我仍然找到了一種以某種方式搞砸它的方法。 我試過閱讀相關問題,但我真的不太了解 VBA 來理解答案。

基本上,我正在嘗試(但失敗了)創建一個“員工經理”。 在視頻的 9:44 左右,解說員說我們需要創建一個宏來根據我們單擊的選項卡來隱藏和顯示特定的單元格。

這是我的 Sheet1 代碼:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Not Intersect(Target, Range("E4:H4")) Is Nothing Then
       Range("B2").Value = Target.Column
       Range("F2").Select
       SwitchHTabs
    End If
End Sub

我在模塊下有這段代碼,宏名為 SwitchHTabs:

Option Explicit

Sub SwitchHTabs()
    Dim SelCol As Long
    Dim FirstRow As Long

    SelCol = ActiveCell.Column

    With Sheet1
        .Range("5:84").EntireRow.Hidden = True
        FirstRow = 5 + ((SelCol - 5) * 20)
        .Range(FirstRow & "." & FirstRow + 19).EntireRow.Hidden = False 'This is the line with the error
    End With
End Sub

當我嘗試運行代碼時彈出此錯誤:
在此處輸入圖像描述

當我單擊“調試”時,它突出顯示了這行代碼:
在此處輸入圖像描述

我哪里搞砸了? 我正在使用 Excel 2016。

比較該子中的兩條Range線:

.Range("5:84").EntireRow.Hidden = True 'Works
.Range(FirstRow & "." & FirstRow + 19).EntireRow.Hidden = False 'Doesn't Work

為了論證起見,我們假設FirstRow為 1,然后處理第二行代碼:

.Range("5:84").EntireRow.Hidden = True 'Works
.Range("1.20").EntireRow.Hidden = False 'Doesn't Work

希望現在更容易看出您使用句號代替冒號。

.Rows("5:84").Hidden - 您可以使用.Rows("5:84").Hidden來代替.EntireRow的需要)

.Range("C;BE").EntireColumn.Hidden = True.Range("C;BE").Columns.Hidden = True 都不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM