Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba删除逗号而不删除删除删除线_Excel_Vba - Fatal编程技术网

Excel vba删除逗号而不删除删除删除线

Excel 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
最终结果: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