Excel VBA: 删除单元格中的删除线字符
Excel VBA: Delete strikethrough characters in a cell
我有大约 1000 行数据。一些单元格由删除线和普通字符组成。我只想删除那些带有删除线的字符,并在这些单元格中保留其他非删除线字符。
单元格的其余部分也应保持不变。
单元格中的示例:
"334(删除线)
124
代码应将单元格值更改为:
"124"
不删除整个单元格。
试试这个
Sub Macro1()
Dim oCell As Range, i%, z%
For Each oCell In Range("A1:A6")
z = Len(oCell.Value)
i = 1
While z <> 0
If oCell.Characters(Start:=i, Length:=1).Font.Strikethrough = True Then
oCell.Characters(Start:=i, Length:=1).Caption = ""
i = i - 1
End If
i = i + 1
z = z - 1
Wend
Next
End Sub
从 Characters
删除时,从右到左循环更容易:
Sub Demo()
Dim rng As Range, cl As Range
Dim i As Long
Set rng = [A1:A3] ' Get range of interest
For Each cl In rng.Cells
For i = Len(cl.Value) To 1 Step -1
If cl.Characters(i, 1).Font.Strikethrough Then
cl.Characters(i, 1).Delete
End If
Next i, cl
End Sub
我有大约 1000 行数据。一些单元格由删除线和普通字符组成。我只想删除那些带有删除线的字符,并在这些单元格中保留其他非删除线字符。 单元格的其余部分也应保持不变。
单元格中的示例:
"334(删除线) 124
代码应将单元格值更改为:
"124"
不删除整个单元格。
试试这个
Sub Macro1()
Dim oCell As Range, i%, z%
For Each oCell In Range("A1:A6")
z = Len(oCell.Value)
i = 1
While z <> 0
If oCell.Characters(Start:=i, Length:=1).Font.Strikethrough = True Then
oCell.Characters(Start:=i, Length:=1).Caption = ""
i = i - 1
End If
i = i + 1
z = z - 1
Wend
Next
End Sub
从 Characters
删除时,从右到左循环更容易:
Sub Demo()
Dim rng As Range, cl As Range
Dim i As Long
Set rng = [A1:A3] ' Get range of interest
For Each cl In rng.Cells
For i = Len(cl.Value) To 1 Step -1
If cl.Characters(i, 1).Font.Strikethrough Then
cl.Characters(i, 1).Delete
End If
Next i, cl
End Sub