
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MsgBoxの中にある数字や日付の...
-
VBA コンボボックスの表示(日...
-
NTBackUpの設定
-
Format関数について
-
MSAccessでODBCを介してDB接続...
-
【VBA】計算結果に小数点第2位...
-
クリスタルレポートの改ページ...
-
チェックボックスのある行を非...
-
エクセルのメモについて教えて...
-
syntax error, unexpected $end...
-
MS-ACC2000 レポートでの日付書...
-
スイッチングハブのIPアドレス
-
スリープ状態とロック状態の違...
-
スタンバイに読み取れないメツ...
-
WindowsVista IISのバージョン...
-
ethtoolでリンク速度変更できない
-
Win7のVirtualboxにLinuxMint
-
点検で全館停電。ネットワーク...
-
IISが落ちた場合の動きについて
-
Parallels Desktopでどうしても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】計算結果に小数点第2位...
-
MsgBoxの中にある数字や日付の...
-
チェックボックスのある行を非...
-
VBA 条件付き書式で空欄は適用...
-
マイナス記号を▲で表す方法
-
クリスタルレポートの改ページ...
-
syntax error, unexpected $end...
-
POIを使った書式設定
-
spread6.0(セル連結)
-
VBA コンボボックスの表示(日...
-
MSAccessでODBCを介してDB接続...
-
C#にて、他言語にローカライズ...
-
VBAの繰り返し処理について教え...
-
Access2010でExcelエクスポート
-
FORMAT関数で値が変わる
-
HTMLの設定コマンドで
-
grep で複数条件を指定
-
データファイルごとの設定ファ...
-
VBA 条件付き書式について
-
スライドショーの画像切替タイ...
おすすめ情報