0

これは奇妙に具体的な質問です。値が 0 になるセルがあるとします。それをテキスト ファイルに書き込んでいます。

0 の代わりに書き込むときは、4 つのスペースが必要です (これは本質的に null の視覚的なプレースホルダーです)。

この行の問題:

cellValue = Replace(cellValue, 0, "    ")

これにより、すべてのゼロが 4 つのスペースに置き換えられる傾向があります。誰もこれを解決する方法についての手がかりを持っていますか? すべての助けをいただければ幸いです。

サンプル入力:

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

- - - - - - - - - - - - - - - - -アップデート - - - - - - - - ----------------------

そのため、false の場合に 4 つのスペースを表示する isBLANK 条件の場合は Excel シートを実行することにしました。それは今のところうまくいくはずです。すべての助けをありがとう。それは本質的に、新しいシートに引き継がれた空白のセルのセットでした。したがって、何らかの理由で、空白であることを示すために常に 0 が表示されました。if else が最適であると判断しました。

エクセルコード:

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

2 に答える 2

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...
于 2015-06-15T19:15:13.150 に答える
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
于 2015-06-15T19:20:15.800 に答える