
久しぶりにVBAプログラムでハマってしまったので、教えてほしいです。
(1)エクセルシート上のボタンを押す
(2)セルの内容を読み込む
(3)CSVファイルに出力する
というプログラムを組んでいるのですが、variant型で作った
日付のデータの形が変になってしまいます。
入力時は yyyy/mm/dd なのですが、出力されたCSVファイルを見ると、
mm/dd/yyyy と勝手に変換されていました。
何とか修正しようと試みたのですがうまくいきません。
ソースを書き込みます。
Dim data_input(11) As Variant '項目数11項目
Dim i As Integer
Dim j As Integer
Dim mydir As String
Dim conv_data As Variant 'データ変換用
Dim rng As Variant
Dim input_date As Date '入力日付(日付型)
Dim conv_date As Variant '変換後の日付(ヴァリアント型)
i = 0
For i = 0 To 8
data_input(i) = Worksheets("画面").Cells(4 + i, 3)
Next i
'A列の一番下のセルを検索する
e = Worksheets("local_data").Cells(1, 1).End(xlDown).Row '終端検索(空白のセルまで検索)
'日付のデータはそのままCSV化するとおかしな表示となってしまうので、テキスト文字列に変換する
'For Each rng In Range("A1:A10")
'テキスト文字列に変更します。
' rng.Value = "'" & rng.Text←何故か上手くいかなかった
'Next rng
e = e + 1 '最終行+1
For i = 0 To 8
'申込日の時は文字化する為、別処理にする
If (i = 0) Then
input_date = data_input(i)
tmp = CVar(input_date) 'Date型からVariant型に変換し、文字データとして書き込む
'tmpのデータを解体して組み替える
'split?
Dim MyStr() As String
'この地点では月/日/年
MyStr() = Split(tmp, "/")
'年/月/日に戻す
MyStr (0) '月
MyStr (1) '日
MyStr (2) '年
'再結合する
tmp = MyStr(2) & "/" & MyStr(0) & "/" & MyStr(1)
Worksheets("local_data").Cells(i, i + 1) = tmp
'Worksheets("local_data").Cells(e, 1) = tmp
Else
Worksheets("local_data").Cells(e, i + 1) = data_input(i) '上部で入力したデータを書き込む
End If
Next i
どうにかyyyy/mm/ddの形で日付が表示されるようにしたいのですが・・・・・
どなたか助言をお願いします。
No.5ベストアンサー
- 回答日時:
>Range("A1").NumberFormatLocal = "yyyy/mm/dd"
>にて書式を変えてみようとしましたが、エラーが出てうまくいきませんでした。
どんなエラーですか?
Range("A1").NumberFormatLocal = "yyyy/mm/dd"
で問題ないはずです。
Cells(1, 1).NumberFormatLocal = "yyyy/mm/dd"
でもOKです。
local_dataシートのe行1列の場合は、
Worksheets("local_data").Cells(e, 1).NumberFormatLocal = "yyyy/mm/dd"
もしかして、書式が変更できないようロックが掛かっているということはないですか。
返信ありがとうございます。
デバッグしていたら、何が起こっていたのかがやっと解ったので、もう一度質問を作成します。
MSの仕様なのかもしれませんが・・・・・
No.3
- 回答日時:
Worksheets("local_data").Cells(i, i + 1) = tmp
これを書き換えてもダメでしたか?
Worksheets("local_data").Cells(i, i + 1) = Format(tmp,"yyyy/mm/dd")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stable diffusionのエラー
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
CSVファイルの行と列のセルって...
-
パイプを用いたプロセス間通信...
-
C言語の勉強しています。すみま...
-
ポインター引数の関数でコンパ...
-
c言語 配列から数字だけをint型...
-
C#でのswitch文
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
Line Inputにて改行があっても...
-
半角、全角の判別方法
-
全角半角を調べるライブラリ関...
-
この関数はどのプログラミング...
-
utf-8でメールを送信すると件名...
-
COleDateTime とtime_t
-
ビットからバイトへの変換
-
Excel 1セル当りの文字数が2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
C言語の勉強しています。すみま...
-
C言語についてです! 同じ年の...
-
ポインター引数の関数でコンパ...
-
c言語での wavファイルの編集(...
-
C#でのswitch文
-
ビットデータのチェック方法
-
txtファイルを読み込んで表示関...
-
int型(2バイト)データの分割
-
Excel VBA グラフ作成のとき...
-
'dataType' 引数を Null にする...
-
Cのプログラムがどうしても動き...
-
C言語について
-
matlabでのRRI検出
-
【VBA】複数条件の検索
-
VBA セルの値入力について
-
Nextの次に、入力した数値の中...
-
System.Collections.ArrayList ...
-
PINVOKEで構造体配列をマーシャ...
おすすめ情報