[英]Select a column by letter from activeCell (without activeCell.EntireColumn)
[英]Select all unlocked cells under ActiveCell in same column
我正在嘗試創建VBA代碼,該代碼可讓我選擇ActiveCell下特定Column中的所有未鎖定單元格。
為了自己解決問題,我遇到了部分起作用的代碼: 選擇列中的所有空白單元格
我還在其他頁面上找到了用於在工作表中選擇未鎖定單元格的代碼: https : //www.extendoffice.com/documents/excel/1279-excel-select-all-unlocked-cells.html
此代碼選擇空白行但在固定列中的所有行。
Dim lr As Long
lr = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & lr).SpecialCells(xlCellTypeBlanks).Select
雖然這將導致在工作表中選擇所有未鎖定的單元格:
Dim WorkRng As Range
Dim OutRng As Range
Dim Rng As Range
On Error Resume Next
Set WorkRng = Application.ActiveSheet.UsedRange
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rng.Locked = False Then
If OutRng.Count = 0 Then
Set OutRng = Rng
Else
Set OutRng = Union(OutRng, Rng)
End If
End If
Next
If OutRng.Count > 0 Then OutRng.Select
Application.ScreenUpdating = True
End Sub
我期望得到的是在excel中手動選擇的列中選擇所有已解鎖(可能已填充或未填充)的單元格。
示例:范圍A1:A4-鎖定,A5解鎖,范圍A6:A7鎖定,范圍A8:A14解鎖,A15鎖定,A16:A22解鎖對於B,C,D列相同
選擇A5:使用宏,結果>選擇A8:A14和A16:A22,選擇B5:使用宏,結果>選擇B8:B14和B16:B22,
這種填充使我可以用相同的內容填充選定的行,或者一鍵刪除它們中的值。
我無法通過這個:
Worksheets("Sheet1").Select
ActiveCell.Offset(rowOffset:=3).Activate
Range(ActiveCell, ActiveCell.End(xlDown)).SpecialCells(xlCellTypeBlanks).Select
但這僅給了我:B8:B14和B16:B22范圍,我需要創建新的MACRO,最終無法滿足我的要求。
如果用於選擇未鎖定單元格的代碼正在運行(並且足夠快地滿足您的需要),則只需將WorkRng
調整為活動單元格下方所需的“列”(包括?)。請參見以下代碼:
Sub Test()
Dim WorkRng As Range
Dim OutRng As Range
Dim Rng As Range
'On Error Resume Next
'Set WorkRng = Application.ActiveSheet.UsedRange
Set WorkRng = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column))
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rng.Locked = False Then
'If OutRng.Count = 0 Then
If OutRng Is Nothing Then
Set OutRng = Rng
Else
Set OutRng = Union(OutRng, Rng)
End If
End If
Next
If OutRng.Count > 0 Then OutRng.Select
Application.ScreenUpdating = True
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.