No.2ベストアンサー
- 回答日時:
私の方が勉強が足りないのかもしれないが
色々書きましたが、結論は、DateValue関数を使えばよいのではないですか。
(1)VBAとあるから、エクセルVBAかアクセスVBAでしょうね
(2)コンボボックスは、設定したアイテムの中から選ぶのが基本だと思うが、本件ではテキスト部へ日付を入力するということですか。
(コンボでアイテムを選択するのは、日付は適さないととおもう。
年、月、日と3段構えになってしまう。質問はそのようには書いてない。)テキストボックスでよいのではと別途疑問は持つ。
(3)フォーマットでm月d日を適用できるのは、エクセルの場合は元が日付セリアル値でなければならないはず。
一方コンボやテキストボックスの返り値は、入力した場合は文字列ではないですか。
これにFormatを適用しても、ダメではないですか。
エクセルでは書式はNumberFormatといい、Numberデータを中心に
書式を設定することが明確に言われている。文字列データへの
書式設定はほとんど無い。
ただエクセルでは、入力した文字列数字データを強制的に数値化したりする力が強いので、わかりにくい例がある。
(4)Cells(2, 1) = DateValue(UserForm1.ComboBox1.Value)
としますと、8/13とコンボのテキスト部に入力したデータが、A1セルに2007/8/13の日付シリアル値で入りました。
これが解決策では無いですか。書式はセルに別途適応する。
Sub test02()
Cells(7, 1).NumberFormat = "m月d日"
End Sub
ーー
エクセルでは、日付を文字列にしてセルにセットするのは、限られた場面で、日付計算・多彩な書式設定に利用できず、有害の方が多い。
ーー
http://park5.wakwak.com/~weblab/refFormat.html
VB.NETでは、Format関数は、文字列を数値に変換しません。
とあるところを見ると、以前は数値化していた?。
すると8/30は30分の8に似られる?
ーー
エクセルVBAで
Cells(3, 1) = Format(8 / 30, "m月d日")
Cells(3, 1) = Format("8 / 30", "m月d日")
はいずれも書式設定(m月d日)した文字列にならない。
書式は別途セルに書式設定しないといけない。
文字列でVBAで入れると、エクセルの強力な日付転換機能が働き
書式なし、または設定済みの日付書式の日付になるよう。
(Cells(3, 1) = Format(8 / 30, "m月d日")は12月30日になるが私には説明できない。)
この回答への補足
ご回答ありがとうございます。
>(1)VBAとあるから、エクセルVBAかアクセスVBAでしょうね
エクセルVBAです。
>(2)コンボボックスは、設定したアイテムの中から選ぶのが基本だと思うが、本件ではテキスト部へ日付を入力するということですか。
はい、そうです。
私の質問の仕方が悪かったようです。
>このコンボボックスに例えば、8/30と入力すると「8月3日0」と表示されてしまいます。
コンボボックス自体の四角の中に「8月3日0」と表示されるということです。
No.1
- 回答日時:
Changeイベントでの変更よりKeyDownイベントで変更したほうがよくありませんか
Private Sub KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
if KeyCode = vbKeyReturn then
ComboBox1.text = Format( ComboBox1.Text, "m月d日")
end if
End Sub
といった具合で Enterキーが押されたらコンボボックスの内容を変更するようにします
Changeイベントだけでの対応なら
8 を入力すると 1月7日の表示になります
8/30を続けて入力
1月7日部分を選択してDelキーを押す
といった操作をすれば 『8月30日』と表示されます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- その他(ギャンブル) BOって何歳でも始めれるんですか?当たる確率的には競馬より全然高い50%とかなんですか? 2 2022/09/06 15:13
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Visual Basic(VBA) Excelマクロでセルに値が入力されたら実行する 5 2023/08/06 11:03
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
EXCEL VBAのコンボボックスで日だけを表示する方法
Excel(エクセル)
-
excelVBA コンボボックスに時刻で表示したい
Excel(エクセル)
-
コンボボックスに日付を表示する
Visual Basic(VBA)
-
-
4
コンボボックス で年月を選ぶ方法
Excel(エクセル)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
7
【ExcelマクロVBA】抽出したデータをリストボックスで表示させるマクロ
Excel(エクセル)
-
8
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
9
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
-
10
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
POIを使った書式設定
-
MsgBoxの中にある数字や日付の...
-
MSAccessでODBCを介してDB接続...
-
spread6.0(セル連結)
-
【VBA】計算結果に小数点第2位...
-
クリスタルレポートの改ページ...
-
EXCEL2010でRGB指定できない
-
マイナス記号を▲で表す方法
-
VBA コンボボックスの表示(日...
-
grep で複数条件を指定
-
【VBA】 VBAを使ってExcelにSen...
-
PDTのデバッグツール、
-
点検で全館停電。ネットワーク...
-
1000Base-TでのRJ45ループバッ...
-
スリープ状態とロック状態の違...
-
「NetBIOS over TCP/IP」と「MA...
-
スイッチングハブのIPアドレス
-
Cisco 製品の電源ケーブル抜け...
-
Microsoft Edgeが急に応答しな...
-
Apache起動エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】計算結果に小数点第2位...
-
MsgBoxの中にある数字や日付の...
-
チェックボックスのある行を非...
-
クリスタルレポートの改ページ...
-
spread6.0(セル連結)
-
VBA 条件付き書式で空欄は適用...
-
マイナス記号を▲で表す方法
-
grep で複数条件を指定
-
C#にて、他言語にローカライズ...
-
16進数の文字列を普通の文字列...
-
POIを使った書式設定
-
VBでエクセル出力の文字を太字...
-
MSAccessでODBCを介してDB接続...
-
EXCEL VBA 勤怠表での条件付き...
-
syntax error, unexpected $end...
-
VBAの繰り返し処理について教え...
-
時間表示で0:48:17と入力すると...
-
FORMAT関数で値が変わる
-
SQL文 Where句の複数検索
-
エクセルのメモについて教えて...
おすすめ情報