在L列中(仅),我想用“ True”替换任何数据实例,而不管任何L列单元格中的原始内容如何。我尝试的代码是:
With ActiveSheet
intLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Let strSelectRange = "L2" & ":" & "L" & intLastRow
Range(strSelectRange).Select
Cells.Replace What:="*", Replacement:="True", LookAt:=xlPart _
, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
首先,我使用.Rows.Count,“ A”,因为在该列中每一行都有数据,因此我知道L列中有多少行。在L列中,许多单元格将为空白。
运行此命令时,整个工作表中所有包含所有内容的单元都将更改为True,而不仅仅是L列中的数据。
我尝试过的另一种方法是:
Range("L2:L1200").Select
Selection.Replace What:="*", Replacement:="True", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A1").Select
我对此不满意的是,我选择L1200作为行数,以确保搜索的范围比实际可以包含数据的最后一行的距离还要远。我担心这种方法有时会引起某种问题。
我真正想知道的是在第一个代码示例中我做错了。
感谢您可以提供的任何帮助!
答案 0 :(得分:1)
Range(strSelectRange).Select
选择一个范围(虽然最好是avoid Select),但是您的代码对该选择不执行任何操作,因为Cells
是整个工作表。
也许您想要代替:
Range(strSelectRange).Replace What:="*", Replacement:="True", LookAt:=xlPart
答案 1 :(得分:1)
Sub SROneColumn()
Const cVntLRColumn As Variant = "A" ' Last Row Column Letter/Number
Const cVntCriteria As Variant = "L" ' Criteria Column Letter/Number
Const cLngFirstRow As Long = 2 ' First Row Number
Const cStrReplace As String = "True" ' Replace String
Dim lngLastRow As Long ' Last Row Number
Dim strSelectRange As String ' Select Range Address
With ActiveSheet
lngLastRow = .Cells(.Rows.Count, cVntLRColumn).End(xlUp).Row
strSelectRange = .Range(.Cells(cLngFirstRow, cVntCriteria), _
.Cells(lngLastRow, cVntCriteria)).Address
.Range(strSelectRange).Replace What:="*", Replacement:=cStrReplace, _
LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
End With
End Sub
使用工作表而不使用对象变量的一种有趣方式:
Sub SRSheet()
Const cStrSheet As Variant = "Sheet1" ' Worksheet Name/Index
With ThisWorkbook.Worksheets(cStrSheet)
End With
End Sub