VBで生年月日からの年齢換算の方法が分からず困っています;;

やりたいことは
1886/01/22 などの生年月日文字列 → 23歳3ヶ月26日のように年齢に換算するという内容です。

うるう年や各月の日数の違いなどを考慮し始めるとどんどんこんがらがってきて大変困っています。
だれか詳しい方がおりましたらご教授いただけないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

年齢というのは、ふつうは「歳」までで、「月数・日数」が必要なことは非常に稀です。

「歳」までなら、極めて簡単なのですが、ご質問の趣旨は「月数・日数」を必要とされるのですね。この場合は、#1さんが言われるように、多少のドロ臭さは我慢します。

今日がy/m/dで、生年月日がy0/m0/d0とします。
m>=m0、d>=d0 なら「超簡単」ですよね。
次に、m<m0なら、y0に1を加え、m0から12を引きます。
さらに、d<d0なら、m0に1を加え、d0から「月内日数」を引きます。

この「月内日数」は、y0、m0によって28~31の間で変動します。この値を求めるための非常に簡単なアルゴリズムがあるのですが、ご自分で工夫してもできるでしょう。2000年が「うるう年」でしたから「グレゴリオ補正」は、してもしなくてもいいでしょう。

上記の処理ができれば、あとは(y-y0)歳(m-m0)月(d-d0)日で求められます。
    • good
    • 0

質問はVB6(VBA)かVB.NET系統か書いてありますか。

コードを左右するのでは。VBは今はVB2008などに決まっていると言えるのかな。
ーーーーー
Googleで「b.net 年齢計算」で照会すれば、記事がそこそこ出るじゃない。それさえやってないのでは。
http://7ujm.net/etc/age.html
参考
http://www5b.biglobe.ne.jp/~yone-ken/VB/Func/vbT …
http://homepage1.nifty.com/rucio/main/dotnet/Sam …
http://jeanne.wankuma.com/tips/vb.net/datetime/
    • good
    • 0

まず、基本と例外をごちゃ混ぜにしていっぺんに考えるとややこしくて仕方ないと思います。


まずは基本的なやりかた(たとえば2008年10月2日生まれで2009年11月1日なら・・とか、9/10なら・・とか)ではどう計算するのか考えます。

次に例外となる状態を一つずつ整理してリストアップしていきます。
多分面倒なのは月末の処理ですよね?
10月31日生まれで11月30日なら一ヶ月なのか30日なのか
10月31日生まれで12月1日なら一ヶ月+1日とみなすのかどうか
9月30日生まれで10月30日なら一ヶ月なのか31日なのか
9月30日生まれで10月31日なら一ヶ月なのか一ヶ月と1日なのか

思いつくパターンを全部拾い上げて、どうするのが良いのかを決めていくことでしょう。面倒臭がらずにとにかく思いつくものをきちんとリストアップして対処方法を決めていくことです。なるべくシンプルになるように決めるほうが良いでしょうね。
これが決まったら、先ほどの基本プログラムの中で「例外処理」として埋め込んでいけば良いわけですね。多少泥臭い判定方法でも良いと思いますよ。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qなぜ長寿のお祝いは数え年でっていう人がいるの?

還暦、古希、喜寿、傘寿、米寿、白寿などのお祝いがあります。
例えば米寿は88歳の長生きを祝うものですが、なぜかこの時は数え年でっていう方が多いように思います。
明治35年以前は年齢を数え年で表していましたので、その時に88歳はもちろん数え年です。
その後満年齢が出来、昭和24年には年齢はちゃんと満年齢で数えるようにという法律までできたのに相変わらず、長寿の祝いだけは数え年でっておかしくないですか?
88をお祝いするのに数えも満年齢も無いですよね。88という数字に合わせて祝うんだから。
いまは満年齢に決まっているのに、相変わらずその時だけ数え年を持ち出すのって変じゃないですか?
だいたい、数え年だと生まれた年が1歳でお正月に2歳になるんですよね。
お正月に年齢を迎える数え年ならお正月に長寿の祝いしないと変ですし。
誕生日っていう月日を意識するのは満年齢だからこそです。

ところが、今は皇室では長寿の祝いは満年齢でやっているのですね。
当然だと思いますが、そこまで満年齢が定着しているのに相変わらず数え年って、、、、。
どうしてですか?

還暦、古希、喜寿、傘寿、米寿、白寿などのお祝いがあります。
例えば米寿は88歳の長生きを祝うものですが、なぜかこの時は数え年でっていう方が多いように思います。
明治35年以前は年齢を数え年で表していましたので、その時に88歳はもちろん数え年です。
その後満年齢が出来、昭和24年には年齢はちゃんと満年齢で数えるようにという法律までできたのに相変わらず、長寿の祝いだけは数え年でっておかしくないですか?
88をお祝いするのに数えも満年齢も無いですよね。88という数字に合わせて祝うんだ...続きを読む

Aベストアンサー

長寿だけではなく七五三なども「数え」で行う人もいます。
厄年なども数えですね。
お祝いごとは早めがいいというのもありますが、日本国民全員が大晦日を越し、新年を迎えて年齢が一つ増えるというのは理にかなっている考え方だと思います。
ただ、12月31日生まれの赤ちゃんは次の日に数えの2歳ということになりますが(笑)

これは私の考えですが、長寿の祝いの場合、満年齢では間に合わないというのがあるからかもしれませんね。現代では数えでお祝いをし、満年齢でもまたお祝いをする・・・それでもいいのではないでしょうか?

Qうるう年か平年かを判定するプログラムj

タイトル通りのプログラムを起動する方法を
教えてください。

Aベストアンサー

>タイトル通りのプログラムを起動する方法
ダブルクリックしてください。

閏年かの判定がしたいのですか?
それなら下記の手順でコーディングしてください。
1. 確認する年が 4 で割り切れる場合は手順 2. へ、そうでない場合は手順 5. へ。
2. その年が 100 で割り切れる場合は手順 3. へ、そうでない場合は手順 4. へ。
3. その年が 400 で割り切れる場合は手順 4. へ、そうでない場合は手順 5. へ。
4. その年はうるう年になります (この年は 366 日です)。
5. その年はうるう年ではありません (この年は 365 日です)。

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;214019

Q友人の結婚・出産へのお祝いについて教えてください。

友人の結婚・出産へのお祝いについて教えてください。

先日20年来の友人から結婚・出産のメールが来ました。
私は女性で友人は男性なのですが、以前私の結婚披露宴に出席
してもらっています。
その際(年齢も若かったので)2万円包んでもらっています。

今回その友人が結婚・出産したとの連絡があったので
お祝いをしたいのですが、披露宴はしないそうです。
もちろん結婚・出産両方のお祝いをしたいのですが、
結婚祝いには現金を、出産祝いには物品を考えています。

どの位のものを渡せばよいでしょうか?
私は現金1万円とベビー服3~5千円くらいと考えています。
非常識でしょうか?

Aベストアンサー

まず、おめでとうございます!

人それぞれだと思いますが、
私でしたら、結婚お祝い2万円と出産お祝いは「まえかけ」が良いかな?

友人が男性だと言う事でしたので、ベビー服は奥さんの好みが出ると思います。
まえかけ(よだれかけ)は、かわいい物が多いですし、何枚あっても足りませんし、
家用と外出用に別けれますしね。

安くすましたいなら、タオルハンカチを「よだれかけ」に使う為の、かわいいひも付きクリップも有りますよ。
ベビー用品って案外重なるから、重なっても良い物を選んであげると良いと思います。

20数年前の記憶を呼び覚ましました。

Q現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて

現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて2018/4/1から2019/3/31になる VBAを教えてください。
よろしくお願いします。

Aベストアンサー

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっています)

ひと月ごとに区切って記載するのであれば話が全然違うので、各月用に式を作成し、その月の分だけ表示できる式にしておく必要がありますね。
(添付写真では部分的にしか見えませんが、小計の行やそれ以外にも異なる種類の行が間に入っているようですので…)

>2/28から3/1の間が4行空いてます
添付の写真では2/28から3/1の間は11行空いているように見えますが…???


>表は一月ごとに区切ってあります。
2月を例に考えれば、通常は28日までで以下は空白、うるう年は29日まで表示して以下は空白になれば良いものと解釈しました。(上記の「4行」云々は意味不明なので無視しています)
そのようにするには「その月の範囲」を条件にして、あとは空白になるようにしておけば良いです。
(ANo3は年度外は空白になるようにしてありますが、それを月単位にすれば良い)

例えば2月の場合の例を挙げるとして、
前回同様に、A1セルに平成年度が数値であるものと仮定すれば・・・
その先頭(2/1)のセルには
 =DATEVALUE("h"&$A$1&"/2/1")
次のセルには
 =IF(前のセル<DATEVALUE("h"&($A$1)&"/3/1")-1,前のセル+1,"")
として31日分フィルコピーすれば、ひと月分が表示されるはずです。
(「前のセル」とあるのは2/1を表示しているセル番地のことです)

上記の式だと12か月分に対して、月の部分を少しずつ変えた式を作成する必要がありますが、セル範囲に規則性があったり、月を示すタイトルがどこかにあるような場合は、それを利用することで全部の月で同じ関数式にすることも可能です。
などと言っているよりも、事前設定の1回こっきりの作業だと思いますので、個別に設定してしまった方が早いですし、2月以外は日数が固定なのでもっと簡単な式にでき、他の月に関しては、
 = 前のセル+1
という式で、必要な範囲にフィルコピーすれば十分なはずです。

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっていま...続きを読む

Qおめでたのお祝い?!

知人に待望の赤ちゃんが出来ました!!
それで、共通の知人に一緒にお祝いをしようと言われたのですが・・・。
私もお祝いしたい気持ちは山々なのですが、おめでたのお祝いってして良いのでしょうか?
もちろん大丈夫だとは思いますが、赤ちゃんが無事に生まれてからお祝いしたほうが良いのでは、とも思います。
私にとって知人が妊娠したのは初めての事なので、どうするべきかと悩んでいます・・・。
ちなみに、知人とは今は他県に暮らし、たまにメールをする関係です。
かしこまった間柄ではありませんが、年齢も少し離れていて、くだけた間柄ともちょっと違います。
また、今回お祝いするのを見合わせる場合、共通の知人にどう伝えたらいいか、とも考えてしまいます。
私が勝手に縁起でもない事を考えていると思われるのも辛いですし、相手の気分を慨さない良い伝え方はないでしょうか?
皆さんのお知恵を貸して下さい!!

Aベストアンサー

ふつうは友人は赤ちゃん誕生後にお祝いするものだと思うと
伝えるべきですよね。
戌の日の帯祝いとかは親族ですよね、ふつう。
経験談ですが
友達で3人の男の子のいるご夫婦がいます。
一人目は手がかからないいい子なので3歳の時第2子を
と思い妊娠。でも高齢出産ではないので羊水検査など
受けなかったので(日本では受けないのがふつう)
生まれてみたら肺などに異常がありそのまま集中治療室へ
。それから生きるか死ぬかの大手術、長期の入院
産後の体で車を運転して病院に通う事半年。
その後奇跡的にふつうの生活がおくれるくらい回復しましたが
先天性の染色体の異常で障害児です。
だから生まれた時当然渡すべきお祝いもとてもあげられる
状況じゃなかったです。(その子の幼稚園就園時に代わりにとやっとお祝いを渡せました。)
その後障害児を持ったことで健常な子がもう一人
ほしいと思い三男が無事生まれましたがもし障害があったら
生まないくらいの覚悟で望んだと思います。
だから出産て大変なことなんですよ。
知人でも出産に由来する激しょう肝炎でそれまでまったく健康だった若い女性だったのに赤ちゃんを残し亡くなりました。

だからなにがあるかわからない出産ですので
もちろん無事に産めると思いますが、母子ともに元気ですという報告を教えてもらってからがぜったい無難です。

ふつうは友人は赤ちゃん誕生後にお祝いするものだと思うと
伝えるべきですよね。
戌の日の帯祝いとかは親族ですよね、ふつう。
経験談ですが
友達で3人の男の子のいるご夫婦がいます。
一人目は手がかからないいい子なので3歳の時第2子を
と思い妊娠。でも高齢出産ではないので羊水検査など
受けなかったので(日本では受けないのがふつう)
生まれてみたら肺などに異常がありそのまま集中治療室へ
。それから生きるか死ぬかの大手術、長期の入院
産後の体で車を運転して病院に通う事半年。
その後奇跡...続きを読む

QVBAのコードを教えていただけないでしょうか。

VBAのコードを教えていただけないでしょうか。

困っています。どなたかお力を貸していただけないでしょうか。

    A     B       C     D     E
1 タイトル行------------------------------------------------
2 りんご    りんご    マスカット  もも
3 ぶどう    マスカット         レモン
4 みかん    みかん
5 オレンジ   オレンジ
6 もも      ・
7 レモン     ・
   ・      ・
   ・      ・
   ・      ・
   ・      ・

上記のような、
A列とB列隣り合うデータの差分をチェックするマクロ(VBA?)が組まれたエクセルがあります。
マクロを実行すると
C列には、B列にあってA列にはないデータが抽出
D列には、A列にあって、B列にはないデータが抽出されます。

データは1列につき約2万件ほどあります。
このツールは今はいらっしゃらない、前任の方がつくったもののようなのですが、
現在、データのチェック量が多すぎるせいなのか、処理スピードがとても遅く
頻繁にエクセル自体が「応答なし」でフリーズしてしまいます。

書いてあるコードは下記の通りです。
------------------------------------
Public Sub Check_system()

Dim r As Range
Dim i As Integer
i = 1
With Worksheets(1)
Range("C:C").ClearContents
For Each r In .Range("B1", .Range("B65535").End(xlUp))
If .Range("A:A").Find(r.Value) Is Nothing Then
Cells(i, 3).Value = r.Value
i = i + 1
End If
Next
End With
End Sub

Public Sub Check_list()

Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Columns(2), Cells(i, 1)) = 0 Then
Cells(Rows.Count, 4).End(xlUp).Offset(1) = Cells(i, 1)
End If
Next i

Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = ture

End Sub

--------------------------------------

私自身、エクセルの知識は多少あるものの
VBAは未知の世界でして、ネット検索で調べたりして
なんとか書いてある意味はぼんやり分かった、というところです。

ですが、どうして処理が重くなってしまうのか
どうすれば軽くなるように書き換えられるのか、まではまだまだ知識が追いつきません。

セルを配列に格納するといい、など検索結果にはでてきましたが、
正直どこをどうすればいいかまでは分かりません・・・。

丸投げで大変申し訳ないのですが、
取り急ぎ、業務進行ができるように処理が軽くなるようなコードをご教授いただけないでしょうか。
仕事が進まず、かといって、手作業で1件1件チェックするのはさすがに・・・といったところでして。。
困っております。
今後VBAについてもっと勉強をしていくつもりなので
どなたかお力を貸していただけないでしょうか。

宜しくお願い致します。

VBAのコードを教えていただけないでしょうか。

困っています。どなたかお力を貸していただけないでしょうか。

    A     B       C     D     E
1 タイトル行------------------------------------------------
2 りんご    りんご    マスカット  もも
3 ぶどう    マスカット         レモン
4 みかん    みかん
5 オレンジ   オレンジ
6 もも      ・
7 レモン     ・
   ・      ・
   ・     ...続きを読む

Aベストアンサー

No3です。
No3で提示したマクロよりメモリを消費せず、なおかつスピードが速くなるようにしました。
No3と比較して3割ほど、速くなっています。ですので、こちらを使用ください。
-------------------------------------------------------
Public Sub データ比較()
Dim row As Long
Dim row2 As Long
Dim dicA As Object '連想配列
Dim key As Variant
Dim sh As Worksheet
Dim time1 As Variant
Dim time2 As Variant
Dim maxrow1 As Long
Dim maxrow2 As Long
time1 = Time
Set dicA = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh = Worksheets(1)
maxrow1 = sh.Cells(Rows.Count, 1).End(xlUp).row ' A列最終行を求める
maxrow2 = sh.Cells(Rows.Count, 2).End(xlUp).row ' B列最終行を求める
'A列の連想配列を作成
For row = 2 To maxrow1
key = sh.Cells(row, 1).Value
dicA(key) = row
Next
'B列にありA列にないデータを作成
row2 = 2
For row = 2 To maxrow2
key = sh.Cells(row, 2).Value
If dicA.Exists(key) = True Then
dicA.Remove (key)
Else
sh.Cells(row2, 3).Value = key
row2 = row2 + 1
End If
Next
'A列にありB列にないデータを作成
row2 = 2
For Each key In dicA
sh.Cells(row2, 4).Value = key
row2 = row2 + 1
Next
time2 = Time
MsgBox ("処理完了 所要時間(秒)=" & Second(time2 - time1))
End Sub
----------------------------------------

No3です。
No3で提示したマクロよりメモリを消費せず、なおかつスピードが速くなるようにしました。
No3と比較して3割ほど、速くなっています。ですので、こちらを使用ください。
-------------------------------------------------------
Public Sub データ比較()
Dim row As Long
Dim row2 As Long
Dim dicA As Object '連想配列
Dim key As Variant
Dim sh As Worksheet
Dim time1 As Variant
Dim time2 As Variant
Dim maxrow1 As Long
Dim maxrow2 As Long
time1 ...続きを読む

Q成人式でどんなお祝いをしてもらいましたか?

長男が成人式を迎えます。
皆さんはどんなお祝いをしてもらいましたか?

両親や祖父母から、お祝い金を頂きましたか?
もしくは食事に行ったりして済ませましたか?

出来れば年齢、性別も教えてもらえると参考にしやすいです。

ちなみに私は成人式に出席しないから振り袖の代わりに、アメリカに一カ月ホームステイさせてもらいました。

そんな感じで回答頂けると、わかりやすいです。

Aベストアンサー

 40年以上前のことですが、家族とごく身近な親しい人を招き、皇居に近いフレンチレストランで食事会をしていただきました。
 男女差や、長男次男の差別も残っていた時代で、僕は長男でした。

 非常に天井の高い大きな部屋だったこと、ギャルソンが二人ドアの両脇にいつも待機していたこと、バターナイフやティースプーを加えると20本近い(以上だったかもしれない)ナイフとフォークの数、に驚いた記憶があります。

 じつは、それから40年経っても、その時の数以上のナイフフォークを並べたことがありません。

Qこのロジックの修正点を教えていただけませんか?

DataGridViewにて、列ごとに入力制御を設けるために作成しました。
DataGridには、ボタンやコンボボックスの列があるため、イベントをとる
列を指定しています。



Private TextEditCtrl As DataGridViewTextBoxEditingControl 'DataGridViewのTextBoxセルを宣言

Private Sub DataGridView1_CellEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGrid.CellEnter
Dim columnIndex As Integer = Me.DataGrid.CurrentCell.ColumnIndex

Select Case Me.DataGrid.Columns(columnIndex).Name

Case "日本語" '日本語入力ONにする列
DataGrid.ImeMode = Windows.Forms.ImeMode.Hiragana

Case Else 'IME無効(半角英数のみ)
DataGrid.ImeMode = Windows.Forms.ImeMode.Disable

End Select

End Sub

Private Sub DataGrid_EditingControlShowing( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGrid.EditingControlShowing
Dim columnIndex As Integer = Me.DataGrid.CurrentCell.ColumnIndex

'テキストボックス列のみ適用

Select Case Me.DataGrid.Columns(columnIndex).Name

Case "日本語", "重さ", "数字", "秒"

TextEditCtrl = CType(e.Control, DataGridViewTextBoxEditingControl)
AddHandler TextEditCtrl.KeyPress, AddressOf TextEditCtrl_KeyPress

Case Else

End Select

End Sub

Private Sub TextEditCtrl_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
Dim columnIndex As Integer = Me.請求明細DataGridCommon.CurrentCell.ColumnIndex

Select Case Me.請求明細DataGridCommon.Columns(columnIndex).Name

Case "数字" '数値のみ許可

Select Case e.KeyChar

Case Chr(Keys.Back) 'BackSpace

Case Chr(Keys.D0) To Chr(Keys.D9) '数値キー

Case Else
'上記キー以外は処理しないようにする

e.Handled = True

End Select

Case "重さ" '数値とマイナスを許可

Select Case e.KeyChar

Case Chr(Keys.Back) 'BackSpace

Case Chr(Keys.D0) To Chr(Keys.D9) '数値キー

'Case Chr(Keys.NumPad0) To Chr(Keys.NumPad9)

Case "-"c

Case Else
'上記キー以外は処理しないようにする

e.Handled = True

End Select


Case "秒" '数値と小数点を許可

Select Case e.KeyChar

Case Chr(Keys.Back) 'BackSpace

Case Chr(Keys.D0) To Chr(Keys.D9) '数値キー

Case Chr(Keys.Decimal)

Case Chr(Keys.Oemcomma)

Case Chr(Keys.OemPeriod)

Case "."c

Case Else
'上記キー以外は処理しないようにする

e.Handled = True

End Select

End Select

End Sub

最後に、CellEndEditイベントにて、RemoveHandler TextEditCtrl.KeyPress, AddressOf TextEditCtrl_KeyPress、
(これもテキストボックス列のみを指定)で終わりです。

このロジックの影響か定かではないのですが、空白が入力できない行や、確定できない
コンボボックスなどが出来てしまい、困っています。
もし修正箇所ありましたら、アドバイスお願いします。

DataGridViewにて、列ごとに入力制御を設けるために作成しました。
DataGridには、ボタンやコンボボックスの列があるため、イベントをとる
列を指定しています。



Private TextEditCtrl As DataGridViewTextBoxEditingControl 'DataGridViewのTextBoxセルを宣言

Private Sub DataGridView1_CellEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGrid.CellEnter
Dim columnIndex As Integer = Me.DataGrid.CurrentCell...続きを読む

Aベストアンサー

ハンドラを設定しているグリッドと KeyPressイベントで見ているグリッドは違っていますがこれでいいのですか?

KeyPressイベントはもう少し簡潔に書けると思いますよ
dim ss as String = 請求明細DataGridCommon.Columns(columnIndex).Name
Select Case e.KeyChar
case chr( Keys.Back )
case chr( Keys.D0 ) to chr(Keys.D9)
case "-"
  if ss<>"重さ" then
    e.handled = True
  end if
case ".",Chr(Keys.Decimal), Chr(Keys.Oemcomma), Chr(Keys.OemPeriod)
  if ss <> "秒" then
    e.handled = True
  end if
case else
  if ss<>"日本語" then
    e.handled = True
  end if
End Select

と言った具合です ・・・

私なら WithEventsでオブジェクトを宣言しておき
EditingControlShowingで オブジェクトを代入
CellEndEditで オブジェクトをNothing
オブジェクトのEnterイベントで オブジェクトのImeModeを設定
KeyPressイベントは上記の内容 と言った具合にします

ハンドラを設定しているグリッドと KeyPressイベントで見ているグリッドは違っていますがこれでいいのですか?

KeyPressイベントはもう少し簡潔に書けると思いますよ
dim ss as String = 請求明細DataGridCommon.Columns(columnIndex).Name
Select Case e.KeyChar
case chr( Keys.Back )
case chr( Keys.D0 ) to chr(Keys.D9)
case "-"
  if ss<>"重さ" then
    e.handled = True
  end if
case ".",Chr(Keys.Decimal), Chr(Keys.Oemcomma), Chr(Keys.OemPeriod)
  if ss <> "秒" then
...続きを読む

Q七五三のお祝い

七五三のお祝いは満年齢か数え年かどちらが正しいのですか

Aベストアンサー

どちらが正しいか、と聞かれれば、数え年が正しいと答えたくなります。
人間の年齢を満で数えるようになったのは、昭和25年以降のことです。それ以前からある習慣やしきたり、人生儀礼などは、数え年でするのが、本来の姿です。
たとえば、61歳を「還暦」といいますが、数え61歳の初日である元旦に、十干十二支が二巡目に入る、つまり「暦が還る」のであって、満61歳の誕生日に暦が二巡目に入るのでは決してありません。厄年とか、喜寿、米寿などの考え方も同じです。

本題に還って七五三ですが、男子は3歳と5歳、女子は3歳と7歳とに当る年の11月15日に氏神様に参詣する行事を言います。
七五三を祝う親の世代はおろか、祖父母の世代でも数え年などという言葉が日常世界からほど遠くなっています。また、数え3歳というと、たとえば12月生まれのお子さんですと、11月で満1歳と10か月ほどにしかならないのです。晴れ着を着せるにはちょっと無理がある場合もあります。そのようなことから、近年では満年齢で七五三を祝うご家庭が多いことも否定できません。
日にちも11月15日にこだわらず、前後の休日に済まされる方も多いようです。

質問者さんが、古来よりのしきたりを重んじるか、実利性を取るかによって、判断すればよいと思います。

どちらが正しいか、と聞かれれば、数え年が正しいと答えたくなります。
人間の年齢を満で数えるようになったのは、昭和25年以降のことです。それ以前からある習慣やしきたり、人生儀礼などは、数え年でするのが、本来の姿です。
たとえば、61歳を「還暦」といいますが、数え61歳の初日である元旦に、十干十二支が二巡目に入る、つまり「暦が還る」のであって、満61歳の誕生日に暦が二巡目に入るのでは決してありません。厄年とか、喜寿、米寿などの考え方も同じです。

本題に還って七五三ですが、男子は3歳と...続きを読む

QマイクロソフトのVBAのエラーメッセージに関して教えていただければあり

マイクロソフトのVBAのエラーメッセージに関して教えていただければありがたいです。

「実行時エラー1004 pointクラスのData Labelプロパティを取得できません。」と表示されます。
グラフを作る際に、データ範囲の設定等をマクロでしているのですが、このエラーの意味がよくわかりません。

自分で作ったマクロではなく、作られた方も不明な状況です。ある程度意味がわかったら、試行錯誤でなんとかいけそうな感じなので、意味をおしえていただけますか?

Aベストアンサー

>このエラーの意味がよくわかりません。

エラーメッセージというのはもともとアバウトな物です。
実際にエラー起きているコードとメッセージから判断するのが普通です。
「実行時エラー1004」というのは、色々な場面で発生するエラーですからエラーメッセージだけ提示されても原因までは解りません。

>グラフを作る際に、データ範囲の設定等をマクロでしているのですが、

データ範囲を正しく指定できるかをチェックすべきかも知れませんね。
”Data Labelプロパティ”というと、推測ですがグラブのデータラベル(項目名?単位?)が不明と言うことかも・・・。



http://officetanaka.net/excel/vba/error/execution_error/index.htm
http://support.microsoft.com/kb/146864/ja


人気Q&Aランキング

おすすめ情報