[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスの日付をセルに転記し日付として認識させる方法。』(スマトラ)
お世話になっております。
下記コードはユーザーフォームにコンボボックスを配置したものに
予め準備された日付リスト(セル形式gee.mm.dd)を読み込み
ユーザーがドロップダウンリストから選択した日付を
指定セル(セル形式gee.mm.dd)に転記させるものです。
質問内容
コンボボックスでドロップダウンリスト選択された日付値を
セルに転記した際に、文字列となっている。
試しに
・転記先セルの書式を「yyyy/m/d」にして
・コンボボックスの内容をそのセルに転記してみると「gee.mm.dd」のまま表示される
・そこで、そのセルをマウスで選択しキーボードのF2を押してみると
セルの表示設定どおりに「yyyy/m/d」で表示され日付データと認識される。
すみませんが、何卒あどばいすのほどよろしくおねがいします。
(予め準備された日付リスト(セル形式gee.mm.dd)を読み込み)
Private Sub 確定月_年月をコンボボックス格納()
Dim sh3 As Worksheet: Set sh3 = Worksheets("マスタ") With sh3 Me.ComboBox_基準月.List = .Range("A21:A44").Value 'Data読込 Me.ComboBox_基準月 = sh3.Range("A1").Text '初期値設定 End With End Sub
(下記のコマンドボタン実行で、コンボボックスの値をセルに転記)
Private Sub 処理月登録_Click()
Dim s As String Dim dt As Date
With Worksheets("マスタ") s = ComboBox_基準月.Text dt = CDate(s) '文字列から日付(Date型)に変換する
.Range("A1,A11,A13").Value = dt '再書き出し
.Range("A3").Value = ""
'.Range("A11").Value = dt '処理月を初期化するため
.Range("B4:C9").Value = .Range("B14:C19").Value '週期間一覧転記 End With
Call Module1.マスタSheetに処理基準日設定 Call UserForm_Initialize Call 選択中マークの初期化 End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
どうしたいのかを書いていませんでした。
コンボボックスの内容を日付データとして、セルに転記させる。
※その転記先のせるには、他のセルから日付を扱う関数の参照先となっています。
(スマトラ) 2018/05/16(水) 19:51
(マナ) 2018/05/16(水) 20:26
"/"で認識しました。ありがとうございます。
コンボボックスの表示を"/"で表示させてそのままdt = CDate(s)でセルに書き出ししましところ認識しました。
ただ、できることなら
コンボボックスの表示を gee.mm.ddで表示させて、セル転記のときに"/"で入力させたいのですが
dt = CDate(s)で変換しても何故か、文字列として認識されます。
(スマトラ) 2018/05/18(金) 10:14
Dim flg As Boolean
Private Sub ComboBox1_Change()
If flg Then flg = False Exit Sub End If
flg = True With Me.ComboBox1 .Value = Format(.Value, "gee.mm.dd") End With End Sub
Private Sub CommandButton1_Click()
Range("A1").Value = DateValue(Replace(Me.ComboBox1.Value, ".", "/")) End Sub
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = Range("A21:A40").Address End Sub
こういうことをやりたいのかなぁ。。。
(まっつわん) 2018/05/18(金) 10:54
ありがとうございます。
バッチリでした。日付を扱うのは難しすぎます・・・解決です(^^)
(スマトラ) 2018/05/19(土) 11:25
「希望の結果が得られた。」で終わるから理解が進まず、
「難しすぎます。」となるのでは?
1行1行をちゃんと読んで、解らないところはさらに聞いて、
疑問をどんどん潰していかないと、いつまでたっても「難しい」から抜け出せないと思います。
今回の件の場合、たかが文字列の操作ですやん。
で、日付と読める文字列を日付に変換するのは、
DateValue関数じゃないんですかね?(CDateでも出来るかも知れませんが。)
あと、セルとリンクさせるならRowSourceプロパティで設定かな。
そもそも文字列しか扱えないコンボボックスを使うから、
自分で機能を追加しなければいけないので、「難しい」になるのでは?
シートをユーザーフォームのように扱うようにするのも一案だと思います。
(僕はユーザーフォームに期待しないで、シート上に入力フォームを作ってます。)
(まっつわん) 2018/05/19(土) 16:25
Private Sub CommandButton1_Click()
Range("A1").Value = DateValue(Replace(Me.ComboBox1.Value, ".", "/")) End Sub
Private Sub UserForm_Initialize()
Dim c As Range
For Each c In Range("A20:A33") Me.ComboBox1.AddItem c.Text Next End Sub
AddItemで選択肢をセットした方がトリッキーなことをしなくてよさそうですね。
(まっつわん) 2018/05/19(土) 16:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.