[[20180505114959]] 『閏年判定プログラムでLongを用いるわけ』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『閏年判定プログラムでLongを用いるわけ』(hiro)

VBAのデータ型の選択について質問です。

書籍で学習中、「閏年判定プログラム」なるものがありました。
そのとき変数宣言でLongが使われておりました。

その書籍で代表的なデータ型として扱われていたもののうち、
整数を扱うものはIntegerとLong。

しかしIntegerでは範囲が狭いので、より広いLongを扱った。

そういう理解で合っているんでしょうか。

よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


その理解であっています。

どんなコードかわかりませんが、
Integerだとエラーになると思います。

(マナ) 2018/05/05(土) 12:40


あまり悩まずに、Longを使えばよいと思います。
https://www.banana-juice.com/VBA/Performance/Statement/IntLong.html

(マナ) 2018/05/05(土) 12:44


 エラーにはならないと思いますけど
 使うのは年とMODだけですしね

 その書籍の筆者がJavaかC等の他言語をやっているなら、
 その言語のInt型と範囲が同じになるlong型を使っただけではないかと

 https://msdn.microsoft.com/ja-jp/library/s3f49ktz.aspx
 https://yusuke.blog/2008/10/06/1022
 http://marycore.jp/prog/c-lang/data-type-ranges-and-bit-byte-sizes/

 ・・・他言語だとInt型とLong型の大きさが同じになることもあるんですね
 VBAだと関係ないようですが
(2u) 2018/05/05(土) 19:50

 質問とは直接は関係ないですが・・・。

 4の倍数とか数学的なものをまったく考えないで、エクセルやウィンドウズの
 力を借りた閏年判定サンプルです。
 これは4年分ループする、Functionに値を渡すためにInteger型変数を使って
 ますが、Functionに値を渡さないで、また、ループしないのなら、変数は
 不要です。

 Sub test()
  Dim i As Integer
   For i = Year(Date) To Year(Date) + 3
    MsgBox i & ":" & uruu(i)
   Next i
 End Sub

 Function uruu(ByVal tosi As Integer) As Boolean
  Dim matu As Date
   matu = DateSerial(tosi, 2, 29)
   If Month(matu) <> 2 Then
      uruu = False
   Else
      uruu = True
   End If
 End Function
(カリーニン) 2018/05/05(土) 21:57

ありがとうございます!
色々と情報をいただけて、助かります。

まだ初学者ゆえ、すべての情報を理解するには時間がかかりそうです。
ひとまずは、Longでもよいと納得しておきます。
また振り返りに来ます。
(hiro) 2018/05/06(日) 08:57


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.