マクロで書式設定を変更する方法と注意点

このQ&Aのポイント
  • マクロを使用してセルの日付書式を変更する方法について、解説します。
  • 別のブックでマクロを実行した場合に、日付の書式が変更されないエラーが発生する原因について説明します。
  • 別のブックからは一部のマクロを実行することができない場合があります。詳細については、ご利用の環境に依存します。
回答を見る
  • ベストアンサー

マクロで書式設定を変更したいのですが・・・

マクロで日付の書式を変更したいと思っています。 例) 2014年7月14日 という日付が入っているセルがあるとします。 これを2014/7/14 と変更したいのです。 これはあるファイルをダウンロードした時に日付がこの書式で設定されていまして 仮にA1にこの日付があった場合に Range("A1").NumberFormatLocal = ("yyyy/m/d") と、そのファイル上でマクロを動かせば、普通に変更するのですが・・・ 別のブックでマクロを動かして、そのファイルを開いて Range("A1").NumberFormatLocal = ("yyyy/m/d") と、同じマクロを動かすと 書式が変更されずに、エラーになるのです。 日付が2014年7月14日 の場合 書式設定が標準なら「41834」になると思うのですが この場合、標準にしても 2014年7月14日 になってしまうのです。 これは、何か原因があるのでしょうか? または、別のブックからはこのようなマクロはうごかせないのでしょうか? 説明が稚拙で申し訳ないですが、ご存知の方ご教示よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

> 日付が2014年7月14日 の場合 書式設定が標準なら「41834」になると思うのですが > この場合、標準にしても 2014年7月14日 になってしまうのです。 日付が文字列で入っているのでしょう。 こんな感じに日付のシリアル値に変換しましょう。 Range("A1").Value = DateValue(Range("A1").Text)

mazdaFD3
質問者

お礼

ご回答ありがとうございます。 原因がわかりませんでしたが、文字列に変わってたんですね。 こんな方法があるとは、知りませんでした。 勉強になりました。

関連するQ&A

  • 例題を繰り返しマクロで記述したい

    ネットや本でマクロを作成しているいて、あまりマクロの意味も分からず作成しています。 下記のマクロの記述を繰り返しマクロで記述したいので、御指導願います。(H列で終わっていますが、できれば隣のセルが空白になるまで繰り返すようにしたい。) あと、自分の欲しい内容に修正出来るように、記述の意味などもコメントして頂けたら嬉しいのですが・・・。よろしくお願いします。 Sub 最終履歴を表示する(2)() Range("C4").NumberFormatLocal = "G/標準" Range("C4").Value = Application.WorksheetFunction.Max(Range("C6:C10000")) Range("C4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("C4").NumberFormatLocal = "yyyy/m/d;@" Range("D4").NumberFormatLocal = "G/標準" Range("D4").Value = Application.WorksheetFunction.Max(Range("D6:D10000")) Range("D4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("D4").NumberFormatLocal = "yyyy/m/d;@" Range("E4").NumberFormatLocal = "G/標準" Range("E4").Value = Application.WorksheetFunction.Max(Range("E6:E10000")) Range("E4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("E4").NumberFormatLocal = "yyyy/m/d;@" Range("F4").NumberFormatLocal = "G/標準" Range("F4").Value = Application.WorksheetFunction.Max(Range("F6:F10000")) Range("F4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("F4").NumberFormatLocal = "yyyy/m/d;@" Range("G4").NumberFormatLocal = "G/標準" Range("G4").Value = Application.WorksheetFunction.Max(Range("G6:G10000")) Range("G4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("G4").NumberFormatLocal = "yyyy/m/d;@" Range("H4").NumberFormatLocal = "G/標準" Range("H4").Value = Application.WorksheetFunction.Max(Range("H6:H10000")) Range("H4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("H4").NumberFormatLocal = "yyyy/m/d;@" End Sub

  • テキストボックスの日付の変更時のみマクロ実行する

    Windows7とExcel2007でマクロ作成中の、初心者です。 (1)ブックAにマクロ書き込み、Bブックに処理データがあります。 (2)Bブックは毎月一回だけ、書式の変更マクロを実行します。 (3)そのため、苦肉の策として Range("E3")が0のときは、実行するが、1のときはマクロ実行しないように しています。 (4)以上の方法では、更新するときは、いちいちRange("E3")の値を手動で0に する必要があります。面倒です。 (5)そこでAブックのユーザーフォームに日付の入ったテキストボックスを取り付け ここの日付けが変更されたときだけ、マクロを実行するようにしたいのですが。 難しくて出来ません。教えていただきたいです。お願いします。 Sub 書式の変更操作() Application.ScreenUpdating = False Dim n As Long Dim myBtn As Integer Dim myMsg As String, myTitle As String Dim mydate As Date mydate = Worksheets("集計").Range("D2").Value If Range("E3").Value = 0 Then myMsg = "この" & Format(Range("D2").Value, "m月") & "分 表の書式等を更新します。" myTitle = "書式変更の確認" myBtn = MsgBox(myMsg, vbOKOnly + vbExclamation, myTitle) 書式更新のマクロ実行 Range("E3").Formula = "1" ’ここで次回起動時マクロ実行しない MsgBox "書式を更新しました。" Else MsgBox "既に変更済みです。", vbOKOnly + vbExclamation Exit Sub End If Application.ScreenUpdating = True End Sub

  • yyyy/mm/ddの日付に一括変換するマクロ

    [セルの書式設定] の [表示形式]が標準(日付ではない)で単なる文字列となっている「mm-dd-yyyy」や「mm/dd/yyyy」のデータをマクロで「yyyy/mm/dd」の日付データに一括変換するマクロを教えてください。 たとえば、日付データが列Aにある場合にはDATE関数で、 =DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2)) でも変換可能ですが、対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多いため、DATE関数を使用することは現実的ではない事情があります。 このためマクロを使用して処理させたいです。 添付のサンプルの例で一括変更するマクロを教えてください。 なお、Excelは2007を使用しています。

  • Excelのマクロでデータ形式を容易に変更する方法

    2年ぶりにExcelのマクロについて 質問させていただきます。 他の人がExcelで作ったデータを取り込んで使いたいのですが マクロでデータ形式を変換する適切な方法を教えてください。 他の人が作ったExcelファイルで 例えばセルA1に H28/04/01 というデータがあったとします。 画面に表示される内容も セルに入力されている内容も どちらも H28/04/01 です。 ちなみに、セルの書式設定を確認すると 「標準」となっているのですが これが「文字列」だとしても 以下に記す内容は おそらく同じだと思います。 このデータを、分かりやすいように セルに入力されている内容は 2016/4/1 となるようにして しかも画面に表示される内容は 平成28年4月1日 となるようなマクロを組みたいのです。 Cells(1, 1) = Format(Cells(1,1),"yyyy/m/d") Cells(1, 1).NumberFormatLocal = "ggge年m月d日" と作ってみましたが このマクロを実行すると 2016/4/1 と表示されす。 そして、この状態から 改めてマクロを実行すると ようやく 平成28年4月1日 と表示されます。 これを1回のマクロ実行で済ませるためには どのように組んだらよいのでしょうか。 なお、上記の内容は Excel2010 でも Excel2003 でも同じでした。 マクロについては、まだまだ素人だと 痛感しております。 回答をよろしくお願いいたします。

  • ショートカットキーで日付入力時の書式設定法 excel

    EXCELでは""Ctrl""+"";"" で現在の日付が [yyyy/m/d]形式にて簡単に入力可能です。 この際の書式を変更したいです。現状、西暦が4桁も場所をとり、文字列としてもっと短くしたいのです。 当サイト内で”日付 ショートカット、EXCEL、 書式”などの単語で検索してみましたが、なかったです。またエクセルのツール>オプションのダイアログも見ましたが、不明でした。なるべくマクロを使わない方法で探しています。宜しくお願いします。

  • エクセル 日付の書式設定を変更するには

    始めまして ご質問させて頂きます  (何時も同じように使用しているエクセルの表なのですが・・) 日付の書式設定を変更するには 例 2008/05/16 → 5月16日へ変更したいのですが         変更出来ません 何時も使用しているエクセルなのですが2008/05/01のセルは変更されるのですが  何故か2008/05/15から変更出来なくなりました ただ 書式をコピーするように指定後にENTERを押せば「"mm"月”dd”日”」の5月15日になります (マクロは使用しておりません) 宜しくお願い致します

  • EXCEL:アクティブなセルからその行を取得して書式を変更させたい

    あるアクティブなセルのある行全体に対して、セルの書式を変更するには どのような方法があるでしょうか。 例えば、絶対参照で"A2"を選択しているとした場合では、 下記のような書き方になると思います。 Rows("2:2").Select Selection.NumberFormatLocal = "G/標準" これが、"A14"であったり"A435"であったりした場合、 14行目、435行目の書式を変えたいのです。 今動かしているものは、1行目から順に処理をするものなので、 処理回数(=処理行)を変数xにカウントして、 Rows(x).Select Selection.NumberFormatLocal = "G/標準" という方法で対処していますが、今後、任意の行に対して 処理を行う予定にしているので、対応できなくなると思うのです。 以上となりますが、よろしくお願いします。

  • ある範囲の書式を飛び飛びに貼り付けたい

    Excel2007でマクロ作成してる初心者です。  ある範囲の書式を移動しながら、書式を貼り付けていく  マクロの書き方がわかりません。どなたかご教示おねがいします。 Sub 書式の貼り付け() '"F14:AG28"の範囲に書式を設定 Range("F14:AG28").Select Selection.NumberFormatLocal = "h:mm;@" '"その範囲を24行だけ移動し、全く同じ書式を貼り付ける Selection.Copy Range("F38").Select ’24行目のセル Selection.PasteSpecial Paste:=xlPasteFormats '"その範囲をまた24行だけ移動し、全く同じ書式を貼り付ける   Range("F62").Select ’48行目のセル Selection.PasteSpecial Paste:=xlPasteFormats  これをシートの数だけ繰り返す。  ’・・・  ’・・・ Application.CutCopyMode = False Range("A3").Select End Sub

  • エクセルの書式設定について教えて下さい。

     Office2000を使っています。エクセルの書式設定(文字のフォント・サイズや罫線、配置等)には ・ファイル全体の書式設定  書式→スタイル から設定する場合 ・セルの書式設定  書式→セル から設定する場合 がありますが、後者のセルの書式設定を解除する方法を教えて下さい。  例えば、「書式→スタイル」で「配置→横位置が標準」になっているとし、「書式→セル」でA1のセルのみ「配置→横位置→中央揃え」に設定した後で、「配置→横位置→標準」に設定を戻した場合、  A1のセルには、「配置→横位置が標準」が設定されたままになり、「書式→スタイル」で「配置」を変更してもA1以外の「配置」の設定は変更されても、A1のセルの「配置→横位置が標準」は変わりません。  個々に「書式→セル」からの設定変更はできるので支障は全くないですが、疑問に感じたので質問しました。分かる方がいたら教えて下さい。

  • マクロで書式コピー_コピー先の指定の仕方で・・・

    VBA勉強中の初心者です。 マクロで書式のコピーをしようと思い まずは、マクロの記録をしました。 ですが、いつも同じセルにコピーする訳ではないので プログラムに手を加えてペースト先を選択したセル もしくは、コピー元の何行下の行に・・・とか になるように書き変えたいのです。 (※筆者のやりたい事は、項目毎に毎月の集計欄を2行ずつ追加します。 『6月合計/6月実績』→『7月合計/7月実績』みたいに何月だけを変更して 書式は一緒で値はクリアにして・・と言うような事を1枚のSheet上で複数回 繰り返します。 〈マクロの記録をした状態〉 Sub 書式のコピー() Range("A2:D3").Select Application.CutCopyMode = False Selection.Copy Range("A11").Select →→→→(ここの指定を色々変わる変数みたいのでどうにかしたい) Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 分からないなりに調べて1行マクロなるものでショートカットキーを割り当てて書式のコピーをする マクロってのを試して見たのですが・・・『該当するセルがみつかりません』とエラーが出てしまいます。 上記の1行マクロは、個人マクロブックに保存しました。 個人用マクロブックはエクセルを立ち上げると自動で立ち上がるようにはなっています。 〈1行マクロの中身〉 Sub 書式のコピー() 'Keybord shortcut: Ctrl+Shift+O Selection.PasteSpecial Paste:=xlFormats End Sub どちらも色々調べて試してみたのですが、上手くいきません。 ちなみに、試しているExcelは2007です。 どうか、アドバイスをお願い致します。

専門家に質問してみよう