• ベストアンサー

エクセルのマクロでの満年齢および経過時間の表示

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 大変なお仕事のようですね。 お金の絡むものを作るときには、万全に作らないといけないので、私も真剣に考えさせていただきます。 >ボタンを押すたびに、表示される行が変わっていくように作っていました。 それはそれでよいと思います。 >誰でもデータの入力と、変更を行えるものを作る必要があったのです。 今回、私が作りきれなかった一つに、修正をどうするか、という問題に、良い案が出なかったと言うか、今まで、修正の段になってUserForm による方法を断念せざるを得なかった経験があります。もちろん、 ワークシートメニューのデータ--フォームというスタイルを、UserForm に行わせるぐらいのマクロは作れます。それでも、なんとなくシックリとしてこないのです。 前回は、やむを得ず、ワークーシートに貼り付ける前に、MsgBox で確認する方法を取りました。間違いなく、入力できたかというメッセージですが、後で気が付いたときに、どうするか、というような問題も発生します。今のままでは、直接上書きしても、そこでは、数値が変わりませんね。 そこで、私からの提案ですが、 UserForm の中で表示することはしても、値をそのまま貼り付けるのではなく、私は、数式を貼り付ける方法をとったらどうか、と思うのです。 それと、UserForm ではなく、コントロールツールをワークシートに貼り付けておくと、そのまま、入れることが可能です。(以下の図) 万が一、自分がいなくても、誰かが、データの部分(名前、生年月日、入所年月日)のところさえ、変えてくれれば、それですぐに変更が可能です。 それと、仕事上、たぶん、 #2 さんの、 =DATEDIF(B2,TODAY(),"Y") をお借りして、 TODAY()という、自動入力は、どこか、別のセルに、名前定義登録をして「今日」として、=TODAY() を置き、 =DATEDIF(B2,今日,"Y") とすると、作成するシートは、[○月○日付け現在]というシートが出来上がります。 一例: ワークシート(UserForm の起動がいらない) --------------------------------------------------- [A1]   TextBox1  TextBox2  TextBox3  コマンドボタン  [日付] ←名前-定義-登録[今日] ================================================== ←ウィンドウ枠の固定  ↑ A1に行数を入れる(コマンドボタンで、1つ加算)        実際のデータ  数式の部分は自動的に保護 ----------------------------------------------------- スクロールしても、テキストボックスの行の部分は、動きません。 なお、数式は、R1C1 方式でみると、列を変えなければ、全部同じですから、マクロでは簡単です。最初から入れておいてもよいのですが、マクロの場合は、同じことです。 まず、こんなアイデアを考えましたが、それでよかったら、少し加えていきたいと思います。 >私の職場では、エクセルの罫線を引くのもままならない人がいるので・・・ 私の経験ですが、女の人は、年配の人でも、なんとか覚えるような気がします。ただ、男性の場合は、しないでほしいというような人がいることもあります。 どうしたら、そんなような状態にしてしまうか、想像の付かないようなトラブルを発生する人がいますので、見える部分よりも、起動時にバックアップを取るようなシステムを作ります。ファイルとしては、起動前に戻るだけです。私のところでは、標準装備の「自動保存」は、マクロ付きのファイルには、あまり調子よくありません。私の使っているのは、特殊なマクロですが、マクロの動いている最中でも、どうも割り込みが入るらしいのです。それに、設定されているようなサイクルで保存が必要ではないのです。

kaeruhousi
質問者

お礼

ありがとうございます。 たしかに、無理に全てをマクロで作るのではなく 行を数式を入れたまま、増やすというのは、一番楽 カも知れないです。それなら、そのまま、ワークシートの 関数を使えますし。 この方法で、試してみます。 実は私は、事務屋ではなく、入所している方の 援助をしながらの作業なので、作業結果のレスが 遅れるかもしれないですが、すみませんです。 何度も、本当にありがとうございます。

関連するQ&A

  • エクセル生年月日から満年齢を出したい

    一難去ってまた一難… E2セルに今日の日付、C4セルに生年月日で、 =DATEDIF(C4,$E$2,"Y") の式で今日現在の年齢を出すことはできたのですが、今日現在の年齢ではなく満年齢を出す方法はあるでしょうか? よろしくお願いします。

  • マクロで年齢の自動計算

    エクセルのA1のセルに生年月日を入力するとB1のセルに年齢が自動入力されるマクロを組みたいのですが教えてください。関数(DATEDIF)を利用してのやりかたはわかるのですがマクロを組んで同じことはできないでしょうか。よろしくお願いいたします。

  • 年齢表示: ◯歳Xヶ月

    「DATEDIF」関数で、満年齢を表示させる方法がありますが、これを応用するか、或いは応用しなくても、生年月日から基準日までの; 「何歳と何ヶ月」 を表示させる関数、方法を教えてください。

  • EXCEL エクセル 年齢 DATEDIF関数 空白の場合

    EXCEL2007 年齢を計算するのに A1セルに 生年月日を入力、 B1セルに年齢  =DATEDIF(A1,TODAY(),"y")で  満年齢がでると思うのですが A1セルが空白の場合 109となります。 A1セルが空白の場合 B1セルも空白になる関数を教えてください。 本を見ながらの初心者です。よろしくお願いします。

  • エクセルの年齢の計算方法について

    エクセルで、A1に「現在の日付」、A2に「生年月日」を入れ、 A3のセルで次のとおり計算式、 =DATEDIF(A2,$A$1,"Y")&"年"&DATEDIF(A2,$A$1,"YM")+1&"ヶ月" を入力し、「○○年○○ヶ月」と表示させました。 このA2「生年月日」と、A3「○○年○○ヶ月」のデータがいくつかあるのですが、「○○年○○ヶ月」の平均値を求めることは可能でしょうか? その場合の、計算式等をお教えていただけないでしょうか? 分かりにくい説明で申し訳ありません。 よろしくお願いいたします。

  • エクセルで年齢式がコピーできない

    エクセルで名簿を作っています。 最初の一人の生年月日と今日の日付から満年齢を出せたまではいいのですが、全員分の満年齢を出そうとして式をドラッグしてコピーしようとしたところ、#VALUE!と#NUM!が交互に出て、年齢が表示されません。 E2セルに今日の日付(=TODAY())、C4に最初の人の生年月日を入力しています。 最初の人の年齢は=DATEDIF(C4,E2,"Y")の式で正常に表示されているのですが、この式をドラッグでコピーすると、以下、#VALUE!と#NUM!が交互に表示されます。コピーされた式をひとつずつ調べると、 =DATEDIF(C4,E2,"Y") ←正常に表示 =DATEDIF(C5,E3,"Y") ←#VALUE!と表示 =DATEDIF(C6,E4,"Y") ←#NUM!と表示 =DATEDIF(C7,E5,"Y") ←#VALUE!と表示 =DATEDIF(C8,E6,"Y") ←#NUM!と表示 … といった感じで続いていて、要は今日の日付を入力しているE2セルを正しく参照していないようです。これを、 =DATEDIF(C4,E2,"Y")  =DATEDIF(C5,E2,"Y")  =DATEDIF(C6,E2,"Y")  =DATEDIF(C7,E2,"Y")  =DATEDIF(C8,E2,"Y")  のように、常にE2を参照させる方法があるはずだと思うのですが、どうすればいいでしょうか? よろしくお願いします。

  • 年齢の表示を桁合わせする

    今日現在の年齢を表示したときに、”月”を二桁表示にする方法を教えてください。見た目を 〇〇歳〇〇ヶ月と表示したい。   下記のような表です。 式は '=DATEDIF(C5,$A$5,"y")&"歳"&DATEDIF(C5,$A$5,"ym")&"ヶ月" と作りました。  今日    氏名 生年月日   年齢 2014/9/4 aa S25.10.31 63歳10ヶ月       bb S58.8.10  31歳0ヶ月      cc H20.7.20   6歳1ヶ月 ※OKWaveより補足:「富士通FMV」についての質問です。

  • Excelマクロで・・・

    任意の変数nを参照し、範囲A1:(A1+n)の最大値を 計算するマクロを作りたいと考えています。 とりあえず Formula="max(Cells(1,1),Cells(1,n))"と書いてみた のですが、(当然なのでしょうが)ダメでした。 良く分からないですがFormulaを使う時はA1とかB15 しか入力出来ないようです。何か良い方法をご存知 でしたらどうかよろしくお願い致します。

  • 元号入力した生年月日から満年齢を求める方法

    セルA1に元号で生年月日を入力しセルA2に今日(入力日)現在の満年齢を表示させることができますか? 可能な場合の設定を教えてください。 よろしくお願いします。

  • エクセル マクロ起動中のメッセージを表示したい

    いつもお世話になります。 エクセルで、マクロを起動して、動作が終了するのに時間がかかるため、起動中に、「マクロ起動中です」のメッセージが表示されるようにしたいのです。 自分なりに考えて、"A"というメッセージのみのユーザーフォームを作って、マクロの最初と最後に A.show ~中略~ A.Hide としたのですが、表示されたユーザーフォームの×印を押さないとマクロが動きません。 宜しくお願い致します。