- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでのデータの結合)
VBAでのデータの結合
このQ&Aのポイント
- VBAを使用して、Form上で3つのComboBoxに入力(選択)した値を結合する方法を教えてください。
- 入力した年、月、週に該当する年月日の範囲が入力されているsheetから、検索キーをもとにvlookupで年月日を表示させる方法を教えてください。
- 渡しが途中まで考えて挫折した状態をお見せします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは やりたいことがコードを見るといまいち把握しきれていないのですが >Form上で、3つのComboBoxに入力(選択)した値を結合させるため なら・・・ Lbl開始年月日.Caption = mykc1 & mykc2 & mykc3 です。 開始と終了が同じ年月日なのが??で・・・補足があればよろしく
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
回答No.2
色々書いてあるが、質問の主旨が伝わりにくい。 コンボ3つに年、月、日を別々に入れて、日付としたいということではないですか。 エクセルVBAと思うので (1)VBではDateValue関数、DateSerial関ガあること。日付シリアル値というものに変換されます。 WEBや本で調べること。 (2)コンボはテキストで値が返る。数値化にはVal関数がいる・ (3)エクセルでは日付は、セルに日付シリアル値というものでセットするのが、標準で自然でかつ便利。 日付シリアル値という考えがわかりますか。そのメリットなども。 エクセルのこういう知識を習得しないで、VBAに取り掛かるのは 問題含みです。エクセルVBAはエクセルに即したVBで、VBの一般ステートメントなどコード習得の知識だけでは不十分です。 むしろエクセルの知識が先行して必要です。 (4)検索の場合は「値」で検索します。値は文字列か、数値(日付シリアル値)があり、 検索表の検索列(第2引数の最左列)が文字列か、日付シリアル値か 良く注意しましょう。 >mykc1~3を結合したもの は文字列になるはずです。中身や考えを日付シリアル値で統一したほうがメリットが大きいのではと思います。
お礼
回答ありがとうございます。 試してみたところ、無事に動きました。 「&」でつながってしまうって言うシンプルさにちょっとビックリしましたが・・・(^-^;) ちなみに、 1行目 → 検索キー 2行目 → 開始年月日 3行目 → 終了年月日 の順でデータが入力されているので、 Lbl開始年月日.Caption = Application.WorksheetFunction. _ VLookup((mykc1 & mykc2 & mykc3), Range("検索"), 2, False) Lbl終了年月日.Caption = Application.WorksheetFunction. _ VLookup((mykc1 & mykc2 & mykc3), Range("検索"), 3, False) としてみて成功しました。 本当にありがとうございました。