
久しぶりに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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換さ
その他(Microsoft Office)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
エクセルで日付が逆に登録されています
Excel(エクセル)
-
-
4
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
5
【vba】日付の形式が勝手に変わってしまう。
Excel(エクセル)
-
6
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
7
VBA:日付を配列に入れ別セルに転記するとデータ型が変わる
Visual Basic(VBA)
-
8
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
9
VBAでシート書式の自動変換を作動させない方法
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
matchプロパティを取得できません…と出ます。
PowerPoint(パワーポイント)
-
14
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
15
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
16
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
17
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
int型(2バイト)データの分割
-
C言語の構造体にてバブルソート...
-
エクセルVBA:日付データの変換...
-
C++/CLIのオブジェクト型配列
-
画像処理のチェーンコード
-
stable diffusionのエラー
-
VisualBasicでレジストリキーの...
-
aliasesファイルを検索したいの...
-
pythonでDBのカラム名で取得し...
-
参照渡しの速度について
-
構造体の初期化の時にポインタ...
-
エクセルVBAで16の16乗を正確に...
-
Perlで取得した情報をFlashへ渡す
-
perlチェックでエラーが出て困...
-
C#でのswitch文
-
音声波形の数値表示用のソフト
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
DataGridViewの特定列に入力さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
エクセルVBA:日付データの変換...
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
Excel VBA グラフ作成のとき...
-
C#でのswitch文
-
'dataType' 引数を Null にする...
-
linuxのシェルでファイル名に先...
-
printfの%eで指数部分の桁数を...
-
ポインター引数の関数でコンパ...
-
CreateProcessでの環境変数の設...
-
C言語でのLinuxとwindows共通の...
-
C言語でPBYTE型からDOUBLE型へ変換
-
pythonでDBのカラム名で取得し...
-
エクセルVBAで16の16乗を正確に...
-
FFTがうまくできない
-
ビットデータのチェック方法
-
参照渡しの速度について
-
POSTで配列のデータを渡す方法は?
-
PINVOKEで構造体配列をマーシャ...
おすすめ情報