2015-06-15 4 views
0

Это странно конкретный вопрос. Предположим, что у меня есть ячейка, которая дает значение 0. Я пишу ее в текстовый файл.(VBA EXCEL) Заменить только 0 четырьмя пробелами

Когда я пишу его вместо 0, я хочу, чтобы там было четыре пробела (это по существу визуальный заполнитель для нуля).

Проблема с этой линии:

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, если isBLANK условие, чтобы показать 4 пробела, если его ложь. Это должно работать пока. Спасибо за помощь. Это был по существу пустой набор ячеек, который был перенесен на новый лист. Поэтому по какой-то причине он всегда показывал 0, чтобы показать, что его пробел. Мы решили, что если бы было лучше.

Excel Код:

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

Найти и заменить ('0 'with' ') с совпадением всего содержимого ячейки, похоже, стоит попробовать. – pnuts

+0

Совместить содержимое всей ячейки? Это команда? – Dasman

+2

0 | 100 | 48 - это именно данные в вашей камере? – coder231

ответ

2

Несколько проблем с вашим кодом: -

  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

О, да, я совсем забыл включить эту строку: cellValue = cellValue + CStr (rng.Cells (I, j). Значение) По какой-то причине оператор CellValue = If не работает. – Dasman

1

Прежде чем сделать замену, просто проверить, если значение ячейки 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 
Смежные вопросы