(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)
您的代码有几个问题:-
- 您无缘无故地将
cellValue
定义为 Variant
。您总是最好使用最能代表数据的数据类型来声明变量。您可以简单地将其声明为 String
除非您有充分的理由将其保留为使用昂贵的 Variant
.
- 我看不到你在哪里给
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
这是一个奇怪的具体问题。假设我有一个生成值为 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)
您的代码有几个问题:-
- 您无缘无故地将
cellValue
定义为Variant
。您总是最好使用最能代表数据的数据类型来声明变量。您可以简单地将其声明为String
除非您有充分的理由将其保留为使用昂贵的Variant
. - 我看不到你在哪里给
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