- 締切済み
VBAエクセル空白セル0の入力
C列が空白となるまで、F列・・・L列の空白セルに0を代入する。 という処理を行いたく以下コードで実行をして ファイル種類をCSVにて、保存した後名前の変更で拡張子をTXTにすると データ入力された列の以降がカンマの羅列が「,,,,,,,,(改行)」の繰り返しで表示されてしまいます。 (CSV保存の後、視覚的に空白部分を行選択して削除するとなくなります。) どうすれば、このカンマが表示されなくなるでしょうか。 うまく説明できてないですが、アドバイス御願いします。 Dim i As Long i = 3 Do Until Cells(i, 3).Value = "" If Cells(i, 6).Value = "" Then Cells(i, 6).Value = "0" End If If Cells(i, 7).Value = "" Then Cells(i, 7).Value = "0" End If If Cells(i, 8).Value = "" Then Cells(i, 8).Value = "0" End If If Cells(i, 9).Value = "" Then Cells(i, 9).Value = "0" End If If Cells(i, 10).Value = "" Then Cells(i, 10).Value = "0" End If If Cells(i, 11).Value = "" Then Cells(i, 11).Value = "0" End If If Cells(i, 12).Value = "" Then Cells(i, 12).Value = "0" End If i = i + 1 Loop
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問のコードは、同じような繰り返しコードが多くて、何とかしたいと思いませんか? Sub test04() d = Range("C65536").End(xlUp).Row For i = 3 To d For j = 6 To 12 If Cells(i, j) = "" Then Cells(i, j) = 0 End If Next j Next i End Sub 多分こんなに簡潔になるよ。 ーーーー >ファイル種類をCSVにて CSVファイルではエクセルの空白セルはkannmaカンマの2つ連続になる。 質問の何か不思議でもない。 >名前の変更で拡張子をTXTにすると 拡張子だけ変更しても、ファイルの中身は何ら変わらないが、なぜこんなことをするのかな。 テキスト類のファイルの拡張子(CSV、TXT,PRNなど)間では余りその後影響は少ないと思うが。 >CSV保存の後、視覚的に空白部分を行選択して削除するとなくなります エクセルのシートの「空白部分を行選択して削除す・・」のか? 空白部分をデータ削除しても変わらないのでは? 0と表示されているセルを空白にしたのか。 再度CSVファイルを保存しなおしたのか。言葉足らずで質問の意味がわからない。 ーーー 質問の空白を0にするプログラムを実行し、Csvファイルで保存して、メモ帳で見たら、第6列ー第12列は0で保存されましたが。 ーーー 聞きたいことがよくわからない。
- hira_kazu
- ベストアンサー率50% (3/6)
あまりTXTに変換したことがないので,そちらの方面ではお答えできないのですが... ExcelのVBAを使っているのなら,TXTに変換する動作をVBAで書いてみてはどうでしょう? 例えば… ┏ ABCDEFG 1 ad 2 fg 3 z e 4 z e 5 上のようなものを a,d,,,,,,f,g,,,,,,z,,e,,,,,,,,z,,e,,,,,,, とせず, a,d,f,g,z,e,z,e のようにしたいということですよね? (こちらの勝手な解釈なので,違うのであればすいません…) それならば, Dim s as String Dim i as integer, j as integer for i = 1 to 5 for j = 1 to 6 'ここの処理はご自由に if not cells(i, j) = "" and not cells(i, j) = 0 then s = s & "," & cells(i, j) end if next j next i '一番左の","を消す s = right(s, len(s) - 1) '結果をどこかのセルに返す cells(6, 1) = s 'もしくは debug.print s という具合にすれば一応後はコピペでテキストは取り出せると思います. 結果をセルに返す場合はたしか文字数の制限があったと思いますので,文字数が多い場合は,debug.printで標準出力した方がいいかもしれません. 結果をファイルに直接書き出す方法もVBとしてはあるのかもしれませんが,ExcelのVBAとなると,そちらの方は私もよくわかりません><(あるのかな?) 的が外れた回答になっていたらすいません>< 自分がExcelのデータをテキスト形式にまとめるときなどはこのような方法をとっています.
- MARU4812
- ベストアンサー率43% (196/452)
プログラムで >(CSV保存の後、視覚的に空白部分を行選択して削除するとなくなります。) と同じ操作をすればいいのでは?
お礼
やはりそれば一番簡単でしょうか。 処理をさせる段階で何かあればと思ったのですが。。。