![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんばんわ。
コンボボックスに、和暦を今年(現在年度)から明治1年まで、降順に格納したいです。(難しければ、150年度分のみ)
平成22
平成21
平成20
~
昭和55
~
明治1
色々調べてユーザー定義関数を、値集合タイプにいれるまではできたのですが、
yearsel = Format(Year(Date) - 365 * row, "ggge")
のところがどうしてもうまくできません。
上記の正しい式をご教授いただけたら助かります。
-------
Function yearsel(fld As Control, ID As Variant, row As Variant, _
col As Variant, code As Variant) As Variant
Select Case code
Case acLBInitialize ' 初期化します。
yearsel = True
Case acLBOpen ' 開きます。
yearsel = Timer ' 固有の ID。
Case acLBGetRowCount ' 行数を取得します。
yearsel = 150 '(明治1年までは難しそう・・・)
Case acLBGetColumnCount ' 列数を取得します。
yearsel = 1
Case acLBGetColumnWidth ' 列幅を取得します。
yearsel = -1 ' 既定の幅を使用します。
Case acLBGetValue ' データを取得します。
yearsel = Format(Year(Date) - 365 * row, "ggge")
End Select
End Function
No.2ベストアンサー
- 回答日時:
明治元年の式を間違えました。
Dim i As Integer
Dim targetYear As Date
i=0
targetYear = Date
Do While Year(targetYear) >= 1868
targetYear = DateAdd("yyyy",-i , Date)
ComboBox.AddItem format(targetYear,"gggee")
i=i+1
Loop
ありがとうございます。
上記参考に解決しました。
↓
Case acLBGetValue ' データを取得します。
dyear = DateAdd("yyyy", -row, Date)
targetyear = Format(dyear, "ggge")
accessの標準マクロのvb6を使って作成しています。
comboboxのadditemがなくて非常に不便です。(TT)
上記ユーザー定義にて動作しました。
明治元年は、(本日から合算)3/1では、取得できないのもわかりました。
明治が有効な日付 10/23~でないと、西暦変換はできないのですね。
No.1
- 回答日時:
手元にVBAを走らせる環境がありませんので、参考程度に読んでください。
コンボボックス名:ComboBox
とりあえず150年分から
Dim i As Integer
Dim targetYear As Date
For i = 0 to 150
targetYear = DateAdd("yyyy",-i , Date)
ComboBox.AddItem format(targetYear,"gggee")
Next i
明治元年は1868年なので
Dim targetYear As Date
targetYear = Date
Do While Year(targetYear) >= 1868
targetYear = DateAdd("yyyy",-i , Date)
ComboBox.AddItem format(targetYear,"gggee")
Loop
上記の様な感じでいけそうな気がします。
検証は、していませんのであくまで参考程度に
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
データ数をカウントしたいのですが
-
ListViewで複数選択された項目...
-
like演算子内に変数って使えな...
-
VBA:小数点以下の数字を取得で...
-
コンボボックス表示文字列を取...
-
エクセルVBA リストボック...
-
エクセルVBAで範囲内での位置取...
-
Flexgridで選択行の列の値を取...
-
IFRAME内のURLを取得したです。
-
C言語にてプログラミングを行っ...
-
SJIS日本語ファイル名をEUC-JP...
-
DOS窓の非表示
-
ドロップダウンリストの初期表...
-
DBから日付を取得し、別に設定...
-
時間を分に変換するプログラム
-
TextOut関数のカレントポジショ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
JavaScriptでWindowsログオンID...
-
時間を分に変換するプログラム
-
エクセルVBAで複数選択できるよ...
-
Spreadの選択行の取得について
-
JavaScriptにおいてコンピュー...
-
コンボボックス表示文字列を取...
-
VBA リストボックス内の値を複...
-
利用者側のMACアドレスを取得し...
-
「Excel VBA」 Webクエリ マク...
-
Yahoo! JAPANのID取得について
おすすめ情報