(VBA EXCEL) 只用四个空格替换0

(VBA EXCEL) Replace only 0 with four spaces

这是一个奇怪的具体问题。假设我有一个生成值为 0 的单元格。我正在将它写入一个文本文件。

当我写它而不是 0 时,我希望有四个空格(它本质上是 null 的可视占位符)。

此行有问题:

cellValue = Replace(cellValue, 0, "    ")

这倾向于用四个空格替换所有零。有人知道如何解决这个问题吗?我将不胜感激任何帮助。

示例输入:

0 | 100 | 48

示例输出:

____10048 (Underscores are spaces).

我目前拥有的:

Dim myFile As String, rng As Range, cellValue As Variant, I As Integer, j As Integer

myFile = Application.DefaultFilePath & "\test_data_output.txt"
Set rng = Selection
Open myFile For Output As #1                                    

For I = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
cellValue = Replace(cellValue, 0, "    ")
cellValue = cellValue + CStr(rng.Cells(I, j).Value)
If j = rng.Columns.Count Then
    Print #1, cellValue
End If

    Next j
    cellValue = ""
Next I

Close #1

--------------------------------更新------------ --------------------------

所以我们决定做一个 excel sheet if isBLANK 条件来显示 4 个空格,如果它是假的。现在应该可以了。感谢所有的帮助。它本质上是一组空白的单元格,被带到一个新的sheet。因此由于某种原因它总是显示 0 以表明它的空白。我们决定 if else 最好。

Excel代码:

=IF(ISBLANK('OurSheetName'!I7),"    ",'OurSheetName'!I8)

您的代码有几个问题:-

  1. 您无缘无故地将 cellValue 定义为 Variant。您总是最好使用最能代表数据的数据类型来声明变量。您可以简单地将其声明为 String 除非您有充分的理由将其保留为使用昂贵的 Variant.
  2. 我看不到你在哪里给 cellValue 赋值。这是完整的代码还是您编辑过它以便发布?如果代码因发布而被黑客攻击而没有适当的注释来解释删除的内容,则很难评估代码。

您可以在写入之前简单地测试该值:-

...

'Inside the "For j" loop

cellValue = rng.Value

'Test the value - but test it as a string value
If cellValue = "0" Then
  cellValue = "    "     'Replace with 4 spaces
End If

'Carry on with code...

在进行替换之前,只需检查单元格值是否为 0。

For I = 1 To rng.Rows.Count
  For j = 1 To rng.Columns.Count
    If cellValue = 0 Then
       cellValue = Replace(cellValue, 0, "    ")
    End If
    If j = rng.Columns.Count Then
       Print #1, cellValue
    End If
  Next j
  cellValue = ""
Next I