excel - vba 删除逗号而不删除删除线
问题描述
如何在不删除删除线格式的情况下删除逗号
示例:C418、C419、C420、C421、C422、C423、C424
预期结果:C418 C419 C420 C421 C422 C423 C424
最终结果:C418、C419 C420 C421 C422 C423 C424
我正在检查该单元格是否包含删除线。通过使用该功能,我能够检测到它。但是一旦我尝试使用替换功能删除逗号并用空格替换逗号。删除线的格式将被删除,导致功能无法工作,从而导致不同的结果。
我想使用空格分隔符与另一个单元格匹配,以便之后可以拆分单元格值
If HasStrikethrough(BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB)) = True Then
BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB).Value = Replace(BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB).Value, ",", "")
BOMCk.Sheets("Filtered RO BOM").Range("G" & LCB).Value = "strike-off"
ElseIf HasStrikethrough(BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB)) = False Then
BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB).Value = Replace(BOMCk.Sheets("Filtered RO BOM").Range("B" & LCB).Value, ",", "")
End If
Function HasStrikethrough(rng As Range) As Boolean
Dim i As Long
With rng(1)
For i = 1 To .Characters.Count
If .Characters(i, 1).Font.StrikeThrough Then
HasStrikethrough = True
Exit For
End If
Next i
End With
End Function
解决方案
Range.Characters 仅在单元格值为 255 个字符或更少时才有效。
Range.Characters(i, 1).Delete
将删除逗号。删除时请确保从最后一个位置迭代到第一个位置。
Sub RemoveCommas(ByVal Target As Range)
If Target.Characters.Count > 255 Then
MsgBox "Range.Characters only works with String with 255 or less Characters", vbCritical, "String too long"
Exit Sub
End If
Dim n As Long
For n = Target.Characters.Count To 1 Step -1
If Target.Characters(n, 1).Text = "," Then Target.Characters(n, 1).Delete
Next
End Sub
推荐阅读
- excel - 如何更新宏中的公式范围?
- kubernetes - 检查 pod 资源消耗
- amazon-redshift - 在 Redshift 中用一个结果列选择不同的多列
- sed - sed replace 不适用于特定的正则表达式
- python - 在 Pandas 中为 Athena 操作日期时间格式
- javascript - 在手动触发器上绑定丢失的实例
- python - 如何在python中连续监听数据的套接字?
- angular - 更改动态描述元标记可被 Angular 8 中的搜索引擎检测到
- javascript - 从 react-native 获取文件以上传与`相同的图像`
- python - 如何在 Kotlin 中将文件作为 multipart/form-data 发布?