Excel vba删除逗号而不删除删除删除线
如何在不删除删除删除线格式的情况下删除逗号 示例:C418、C419、C420、C421、C422、C423、C424Excel vba删除逗号而不删除删除删除线,excel,vba,Excel,Vba,如何在不删除删除删除线格式的情况下删除逗号 示例:C418、C419、C420、C421、C422、C423、C424 预期结果:C418 C419 C420 C421 C422 C423 C424 最终结果:C418、C419、C420、C421、C422、C423、C424 我正在检查那个单元格是否包含删除线。通过使用该功能,我能够检测到它。但有一次,我尝试使用replace函数删除逗号,并用空格替换逗号。删除线的格式将被删除,导致函数无法工作,从而导致不同的结果 我希望使用空格分隔符与其他
预期结果:C418 C419 C420 C421 C422 C423 C424
最终结果:C418、C419、C420、C421、C422、C423、C424 我正在检查那个单元格是否包含删除线。通过使用该功能,我能够检测到它。但有一次,我尝试使用replace函数删除逗号,并用空格替换逗号。删除线的格式将被删除,导致函数无法工作,从而导致不同的结果 我希望使用空格分隔符与其他单元格匹配,以便以后可以拆分单元格值
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
范围。仅当单元格值小于等于255个字符时,字符才有效
范围。字符(i,1)。删除将删除逗号。删除时,请确保从最后一个位置迭代到第一个位置
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
范围。仅当单元格值小于等于255个字符时,字符才有效
范围。字符(i,1)。删除将删除逗号。删除时,请确保从最后一个位置迭代到第一个位置
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
通过xlRangeValueXMLSpreadsheet值选择
►.Value(11)
方法通过非常简单的字符串替换解决了这个问题(尽管xml字符串处理在许多其他情况下可能非常复杂):
Sub-RemoveCommand(rng作为范围,可选colOffset作为长=1)
'a)获取范围数据作为xml电子表格值
将xmls标注为字符串:xmls=rng.Value(xlRangeValueXMLSpreadsheet)//或者:xmls=rng.Value(11)
'b)找到车身的起始位置
Dim pos长:pos=InStr(xmls,通过xlRangeValueXMLSpreadsheet值替代
►.Value(11)
方法通过非常简单的字符串替换解决了这个问题(尽管xml字符串处理在许多其他情况下可能非常复杂):
Sub-RemoveCommand(rng作为范围,可选colOffset作为长=1)
'a)获取范围数据作为xml电子表格值
将xmls标注为字符串:xmls=rng.Value(xlRangeValueXMLSpreadsheet)//或者:xmls=rng.Value(11)
'b)找到车身的起始位置
Dim pos As Long:pos=InStr(xmls),“您好,很有意思。您有255个字符的限制吗?我用较长的文本进行了测试,Target.Characters(n,1)。文本
有效,但Target.Characters(n,1).删除
doesnothing@FunThomas我找不到任何官方文档。Excel似乎使用1个字节来索引字符。类似地,Range.CopyFromRecordset
过去被限制为32767,这是一个整数的最大大小。仅供参考,我通过XlRangeValueDataType枚举和附加内容发布了一个替代方案l优点是似乎没有限制。:+@TinManHi,有趣。您是否参考了255个字符的限制?我用较长的文本进行了测试,Target.Characters(n,1)。文本
有效,但Target.Characters(n,1)。删除
有效nothing@FunThomas我还没有找到任何官方文件。Excel似乎使用1个字节来索引字符。类似地,Range.CopyFromRecordset
过去被限制为32767,这是一个整数的最大大小。仅供参考,我通过XlRangeValueDataType枚举发布了一个替代方案,其额外优点是似乎没有限制。:+@Tinman你应该使用并接受T.M.的答案。你的答案也是有效的,两种方法都有各自的优点;在这种特殊情况下,我的答案可能会稍微领先一点:-@Tinman你应该使用并接受T.M.的答案。你的答案也是有效的,两种方法都有各自的优点;在这种特殊情况下,我的可能会稍微领先一点:-)@TinMan