簡體   English   中英

Excel VBA代碼以選擇有時具有數據的所有單元格

[英]Excel VBA code to select all cells with data sometimes working

我曾經構建了一個VBA按鈕來自動鎖定其中包含數據的所有單元格。 它運行得很好。 現在,我想將該按鈕復制到另一個工作表。 因此,我創建了另一個按鈕,復制並粘貼了整個VBA,然后編輯了工作表名稱和范圍。 而且,它僅以5%的時間工作,其余時間,我收到“運行時錯誤'1004':未找到任何單元格”。 我嘗試了一些固定的方法,將工作表更改為工作表,或在specialcells參數中添加“ 23”。 但是,目前沒有任何工作。 當我嘗試介入時,有時會說rng和lckrng都為空,有時只將lockrng顯示為空,而根本不顯示rng。 問題是這曾經是一個可以工作的代碼,現在,它仍然可以在5%的時間內工作。 知道為什么嗎? 非常感謝你!

Private Sub CommandButton1_Click()

Dim rng As Range
Dim lockrng As Range

Sheets("Uploading Checklist (M)").Unprotect Password:="signature"
Set rng = Range("A1:M14")

'Selecting hardcoded data and formulas
  Set lockrng = Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas))

lockrng.Locked = True
Sheets("Uploading Checklist (M)").Protect Password:="signature"

End Sub

也許這太簡單了,但是它似乎可以完成您想要的。 動畫的.gif表示它可以“鎖定所有包含數據的單元格”。 (為方便起見,我按下了第二個按鈕)。 如果沒有別的,最好從這樣的東西開始,然后進行修改以適合您的需求。

在此處輸入圖片說明

Dim cell As Range, sh As Worksheet

Sub Button4_Click()
Set sh = Worksheets("Sheet1")
sh.Unprotect Password:="s"
For Each cell In sh.UsedRange
  If cell <> "" Then cell.Locked = True Else cell.Locked = False
Next
sh.Protect Password:="s"
End Sub

Sub Button5_Click()
Set sh = Worksheets("Sheet1")
sh.Unprotect Password:="s"
End Sub

Union要嘗試如果任一參數是行不通Nothing (即你要么沒有常數范圍內,或者你有在范圍內沒有公式)。

在執行Union之前,您應該檢查參數Nothing但是一旦開始更改代碼以做到這一點,將鎖分為兩部分就一樣簡單-因此,我建議您按以下方式重寫代碼:

Private Sub CommandButton1_Click()
    With Sheets("Uploading Checklist (M)")
        .Unprotect Password:="signature"
        With .Range("A1:M14")
            'Lock any constants
            If Not .SpecialCells(xlCellTypeConstants) Is Nothing Then
                .SpecialCells(xlCellTypeConstants).Locked = True
            End If
            'Lock any formulas
            If Not .SpecialCells(xlCellTypeFormulas) Is Nothing Then
                .SpecialCells(xlCellTypeFormulas).Locked = True
            End If
        End With
        .Protect Password:="signature"
    End With
End Sub

暫無
暫無

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

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