簡體   English   中英

VBA運行時錯誤'1004':Selection.Interior.Pattern

[英]VBA Run-time error '1004': Selection.Interior.Pattern

我有以下代碼,應根據其中的一個值簡單地更改命名范圍的修飾。 如果其為空,則變為紅色;否則,應清除所有裝飾。 我查看了其他類似錯誤的問題,似乎無法解決我的問題。 我有以下代碼:

    For Each section In mandatoryFields

    MsgBox (ThisWorkbook.Worksheets("Worksheet").Range(section).Value)
    If Trim(ThisWorkbook.Worksheets("Worksheet").Range(section).Value) = "" Then
        ThisWorkbook.Worksheets("Worksheet").Range(section).Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

    Else
        ThisWorkbook.Worksheets("Worksheet").Range(section).Select
            With Selection.Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
    End If

Next section

我已逐步完成代碼,並且在運行時錯誤被觸發

.Pattern = xlNone

要么

.Pattern = xlSolid

線。 有什么建議么?

我也嘗試過

Worksheets("Worksheet").Activate
        Range(section).Select
            With Selection.Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With

我有以下代碼是在單擊按鈕時觸發的。

    Dim wb As Workbook
Set wb = Application.Workbooks("C New Hire")
wb.Worksheets("Worksheet").Range("nameRange").Value = "r"

我第二次單擊該行上的按鈕時,將發生運行時錯誤

wb.Worksheets("Worksheet").Range("nameRange").Value = "r"

代碼的着色部分是正確的,因為它可以正常工作:

Sub luxation()
    Range("A1:A2").Clear
    Range("A1").Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    Range("A2").Select
        With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
End Sub

然而:

選擇范圍之前,必須激活“包含”工作表。

否則,請遵循David的建議。

編輯#1:

根據您更新的代碼,緊接在:

Range(section).Select

插入:

MsgBox Selection.Address(0,0)

這將為問題發生的位置提供一些啟示。

這個問題的答案是在執行我的內部代碼以保護代碼中的工作表的代碼之后觸發了一個Worksheet_Change函數。 這意味着我不能對任何對象執行任何程序,例如更改其顏色。 因此,在執行這些步驟之前,我必須取消保護工作表的保護。

最后簡單修復,但很容易錯過。

暫無
暫無

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

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