0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ACCEESS VBAでフォームのテキストボックスに特定の年月を入れたい

Posted at

完成イメージ

image.png
デフォルト値を前月の年・月にして、ユーザー入力は受け付けない状態

規定値にVBAの式が使える

image.png
「使用可能」を「はい」にするとユーザー入力も可能になる。

規定値の設定内容

前月日付をそのまま(yyyy/m/dのように)表示したい場合

=DateAdd("m",-1,Date())

とするとOK(DateAdd関数の詳細な説明は下部へ)

年だけ取得したいのでフォーマット関数を組み合わせる(Format関数の詳細な説明は下部へ)

=Format(ここに元になる日付,"yyyy")

のようにすると西暦4桁だけ取得できるので、今回の例では以下のようになる

=Format(DateAdd("m",-1,Date()),"yyyy")

月も同じように以下のように設定でOK

=Format(DateAdd("m",-1,Date()),"m")

DateAdd関数

VBAのDateAdd関数は、日付に対して指定された時間間隔を追加または減算するために使用されます。DateAdd関数は、新しい日付を返します。

構文

DateAdd(interval, number, date)

パラメータ

  • interval: 必須。時間間隔を指定する文字列式。以下のいずれかの文字列を使用します:
    -- "yyyy": 年
    -- "q": 四半期
    -- "m": 月
    -- "y": 日(年間の日数)
    -- "d": 日
    -- "w": 平日
    -- "ww": 週
    -- "h": 時
    -- "n": 分
    -- "s": 秒
  • number: 必須。追加または減算する時間間隔の数を指定する数値。正の値を指定すると時間を追加し、負の値を指定すると時間を減算します。
  • date: 必須。基準となる日付を指定するVariant(Date)型の値。
    使用例
    日付に1ヶ月を追加
Sub AddOneMonth()
    Dim initialDate As Date
    Dim newDate As Date

    initialDate = #2024/07/22#
    newDate = DateAdd("m", 1, initialDate)
    
    MsgBox "新しい日付は " & newDate
End Sub

日付から7日を減算

Sub SubtractSevenDays()
    Dim initialDate As Date
    Dim newDate As Date

    initialDate = #2024/07/22#
    newDate = DateAdd("d", -7, initialDate)
    
    MsgBox "新しい日付は " & newDate
End Sub

時刻に2時間を追加

Sub AddTwoHours()
    Dim initialTime As Date
    Dim newTime As Date

    initialTime = #10:00:00 AM#
    newTime = DateAdd("h", 2, initialTime)
    
    MsgBox "新しい時刻は " & newTime
End Sub

Format関数

VBAのFormat関数は、数値、日付、時刻、文字列などのデータを指定した形式に変換するために使用されます。Format関数を使用することで、データを表示する際のフォーマットを柔軟にカスタマイズできます。

構文

Format(expression, [format])

パラメータ

  • expression: 必須。フォーマットするデータを指定します。数値、日付、時刻、文字列などが指定できます。
  • format: 任意。表示形式を指定する文字列式。省略した場合、expressionは標準の書式で表示されます。

使用例

数値のフォーマット

  1. 小数点以下の桁数を指定

    Sub FormatNumberExample()
        Dim num As Double
        num = 1234.56789
        MsgBox Format(num, "0.00") ' 結果: 1234.57
    End Sub
    
  2. 通貨形式

    Sub FormatCurrencyExample()
        Dim num As Double
        num = 1234.56789
        MsgBox Format(num, "Currency") ' 結果: $1,234.57
    End Sub
    
  3. パーセンテージ形式

    Sub FormatPercentageExample()
        Dim num As Double
        num = 0.1234
        MsgBox Format(num, "0.00%") ' 結果: 12.34%
    End Sub
    

日付と時刻のフォーマット

  1. 標準の日付形式

    Sub FormatDateExample()
        Dim dt As Date
        dt = #2024-07-22#
        MsgBox Format(dt, "mm/dd/yyyy") ' 結果: 07/22/2024
    End Sub
    
  2. 標準の時刻形式

    Sub FormatTimeExample()
        Dim tm As Date
        tm = #10:15:30 AM#
        MsgBox Format(tm, "hh:nn:ss AM/PM") ' 結果: 10:15:30 AM
    End Sub
    
  3. カスタム日付時刻形式

    Sub FormatDateTimeExample()
        Dim dt As Date
        dt = #2024-07-22 10:15:30 AM#
        MsgBox Format(dt, "dddd, mmmm d, yyyy hh:nn:ss AM/PM") ' 結果: Monday, July 22, 2024 10:15:30 AM
    End Sub
    

文字列のフォーマット

  1. 文字列の左寄せ、右寄せ
    Sub FormatStringExample()
        Dim str As String
        str = "Hello"
        MsgBox Format(str, "@@@@@@@@") ' 結果: "Hello    " (8文字幅のフィールドに左寄せ)
    End Sub
    

フォーマット文字列の詳細

数値のフォーマット指定子

  • 0: 数値のプレースホルダー。数値が存在しない場合は0を表示。
  • #: 数値のプレースホルダー。数値が存在しない場合は何も表示しない。
  • .: 小数点。
  • ,: 桁区切り文字。

日付と時刻のフォーマット指定子

  • d: 日を表示(1-31)。
  • dd: 2桁の日を表示(01-31)。
  • ddd: 曜日を短縮形で表示(Mon)。
  • dddd: 曜日を完全な形で表示(Monday)。
  • m: 月を表示(1-12)。
  • mm: 2桁の月を表示(01-12)。
  • mmm: 月を短縮形で表示(Jan)。
  • mmmm: 月を完全な形で表示(January)。
  • yy: 2桁の年を表示(00-99)。
  • yyyy: 4桁の年を表示(1000-9999)。
  • h: 時を表示(0-23)。
  • hh: 2桁の時を表示(00-23)。
  • n: 分を表示(0-59)。
  • nn: 2桁の分を表示(00-59)。
  • s: 秒を表示(0-59)。
  • ss: 2桁の秒を表示(00-59)。
  • AM/PM: 12時間制で午前/午後を表示。

カスタムフォーマットの例

  • Format(12345.6789, "0.00"): 結果は12345.68
  • Format(#2024-07-22#, "dd mmm yyyy"): 結果は22 Jul 2024
  • Format(#10:15:30 AM#, "hh:nn:ss AM/PM"): 結果は10:15:30 AM

これらのフォーマット指定子を使用することで、データを希望する形式に変換できます。Format関数は、ユーザーに見やすく、理解しやすい形でデータを表示するのに非常に便利です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?