
エクセルのシート上にコンボボックス を設置しています。
ここから年月(例:2020年6月)を選ぶ方法を教えていただけませんでしょうか?
別なところに年月の一覧を作って入力範囲にすることはできるのですが、
そうすると手動で毎月年月を更新しなければならず、
そうではなく、常に最新の年月が表示されるようにしたいと思っています。
ユーザーフォームで作ったとき、
ComboBox1.Value = Format(ComboBox1.Value,"yyyy年m月")
とすることで常にコンボボックスに最新月が表示されるようにできました。
これと同じことをユーザーフォームを使わずに行いたいのですが、方法がわかりません。
ご教授のほど、よろしくお願いいたします。
No.8ベストアンサー
- 回答日時:
No5です。
>A1に2020年6月、A102に2012年1月になっている場合、
>スタートセル位置がA1でカウント開始日付が2012年1月、でよろしいでしょうか?
スタートセル位置は$A$1で良いですが、リストが別シートにある場合には、「シート名!」を付けるのを忘れないでください。
開始日(=一番古い月)が2012年1月の場合、カウント開始日付は「"2012/1/1"」のような日付を表す文字列にしておけばよいです。
(リストに設定した関数式が、上記よりも広い範囲までフィルコピーされていることが条件です)
No.7
- 回答日時:
No.1・6です。
すでに配置してある「コンボボックス」がフォームコントロールのコンボボックスなのかActiveXのコンボボックスなのかを知りたい!
というコトですね。
簡単な方法としては
メニュー → 開発 → 「デザインモード」をクリック
これで簡単に選択できればActiveXのコンボボックスになりますので、
プロパティをクリックするとオブジェクト名が判ります。
単に指のマークが表示される場合はフォームコントロールのコンボボックスになるはずです。
この場合は結構厄介です。
あれこれオブジェクト名を探してみました。
「ドロップ1」のようになるようですが、それをそのままオブジェクト名にはできないようです。
後者の場合は当方の力不足で、お役に立てないかも・・・m(_ _)m
tom04さん、ありがとうございます。
教えていただいたように確認してみたところ、フォームコントロールで間違いないようです。
でもせっかくなので教えていただいたコードも参考にさせていただきます。
ありがとうございます。
No.6
- 回答日時:
No.1です。
前回はActiveXコントロールの「コンボボックス」がシート上に配置してある!という前提のコードでした。
数か月分をドロップダウン候補にしたい!ということのようなので・・・
今回もシートモジュールにしてください。
シート上にはActiveXコントロールのコンボボックスが配置してある!という前提です。
とりあえず2年分を候補にするよにしてみました。
Private Sub Worksheet_Activate()
Dim myDate As Date
Dim i As Long
myDate = Date
ComboBox1 = Format(myDate, "yyyy年m月")
For i = 1 To 24 '//★//
ComboBox1.AddItem Format(DateAdd("m", i, myDate), "yyyy年m月")
Next i
End Sub
※ シートがアクティブになった時点で実行されます。
※ ドロップダウン表示したい数はコード内の「★」の行で調整してみてください。m(_ _)m
tom04さん、ありがとうございます。
シート上に設置したコンボボックス(フォームコントロール)がcomboBox1かどうかがわからないのですが、
どのようにしたら確認できるか教えていただけませんでしょうか?
No.5
- 回答日時:
No4です
>これは来月はどうなるのでしょうか?
来月になると、一番上のセルの値が「2020年7月」に変わり、以下一か月ずつ繰り上がるはずです。
>一番下の2012年1月は変わらず、毎月データが増えるようになりますでしょうか?
選択肢が月ごとに増えてゆけば良いという意味と解釈しました。
入力規則の設定を可変にすることで可能と思います。
いらぬおせっかいではありますが、2012年から2020年まで(以降増え続ける)となると、選択肢が多すぎて使いにくいような気がしますが・・・?
さて、本題ですが、例えば開始日を固定したければ、現在からそれまでの経過月数+1が選択肢として表示したいセルすうろいうことになります。
まずリストの方を十分に下方迄(余分なくらいに)フィルコピーしておきます。
次に入力規則の設定蘭でセルの範囲を関数で指定します。
=OFFSET(スタートセル位置,0,0,DATEDIF("カウント開始の日付",TODAY(),"M")+1)
としておくことで実現できます。
「スタートセル位置」、「カウント開始日付」は質問者様はご存知ですが、私にはわかりませんので、適宜設定してください。
fujillinさん、ありがとうございます。
実行してみたのですが、「この数式内の範囲の参照または定義された名前が見つかりません」と出てしまいました。
A1に2020年6月、A102に2012年1月になっている場合、
スタートセル位置がA1でカウント開始日付が2012年1月、でよろしいでしょうか?
No.4
- 回答日時:
No2です
>という選択肢をコンボ ボックスに入れたかったのですが、
>この場合はどのようにしたらよろしいのでしょうか?
通常の入力規則を設定しておいて、リストの方に同様の関数式を設定しておけば可能になります。
ただし、この場合は、選択肢となっているリストの方はブックを開くと自動的に更新(=自動計算になっている場合)されますが、コンボボックスの値の方は自動更新されません。(エクセルの通常仕様なので)
ドロップダウンすれば、選択肢は新しい内容のものになって表示されます。
値が文字列なのかシリアル値なのか不明のままですが、とりあえず以下に文字列と仮定した場合の関数式を記しておきます。(シリアル値の場合もほぼ同様です。No2を参照)
・リスト表示の選択肢がどこか別のセル範囲にあるとして、1列に(縦に)
ならんだセル範囲であると仮定します。
・選択肢は当月を先頭に、一月前、二月前…と下に並ぶものとします。
選択肢の先頭セルに
=TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+1-ROW(A1),1),"yyyy年m月")
の関数式を入力し、下方に必要な数だけフィルコピーでいかがでしょうか?
fujillinさん、ありがとうございます。
別シートに関数式を入れてコピーをしたら希望の年月ができました。
A1(2020年6月)からA102(2012年1月)まで年月が入っておりますが、これは来月はどうなるのでしょうか?
A1が2020年7月になって、A102が2012年2月になるのでしょうか?
一番下の2012年1月は変わらず、毎月データが増えるようになりますでしょうか?
No.3
- 回答日時:
敢えて質問文に『年月を選ぶ』と記載されているのですし『別なところに年月の一覧を作って』とあるわけですから、そのComboboxに入れる値は『当月』を含めて前後数ヶ月なのか、過去のみか、未来のみなのかを明確に提示された方が宜しいのでは?と思いますよ。
多分ですがユーザーフォームの時は『年月日』で取得してたものを選択した際に『年月』にされたとか?
めぐみん_さん、ありがとうございます。
説明不足ですみません。
コンボボックス には、
2020年6月
2020年5月
2020年4月
2020年3月
・
・
・
と表示させるようにしたく、2012年1月まで選べるようにしたいと思っています。
ユーザーフォームのときは、
Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Value,"yyyy年m月")
End Sub
としていました。
これと同じことをシート上に直接設置したコンボボックス でもやりたかったのですが、
どのようにしたらよいのかわからず質問させていただきました。
No.2
- 回答日時:
こんにちは
ブックを開いた時の日付が表示される(別の日に開くとその日になる)のでよければ、コンボボックスではなく、当該セルに
=YEAR(TODAY())&"年"&MONTH(TODAY())&"月"
という式を入力しておくことで可能と思います。
上式の結果は文字列になっていますので、シリアル値(エクセルが日付と認識する値)としたければ、
=DATE(YEAR(TODAY()),MONTH(TODAY()),1)
という式にしておけばよろしいかと。
セルの書式はあらかじめ「yyyy年m月」としておきます。
※ ご質問文に記載がありませんでしたので、シリアル値の場合の日(日数)の部分は1(ついたち)になるようにしてあります。
もしも、当日そのままの日付でよければ、
=TODAY()
だけでよくなります。
一度入力した値は、別の日にブックを開いてもそのまま(変化しない)ようにしたい場合は、
・ボタンを押すとその日の日付が設定される
または
・当該セルをダブルクリックすると日付が設定される
といったマクロを作成しておくことで実現可能です。
fujillinさん、ありがとうございます。
セルに入力する方法で開いたときの年月の確認ができました。
コンボボックス にした理由は開いた時より過去の月を選択する場合があったためでした。
2020年6月
2020年5月
2020年4月
2020年3月
・
・
・
という選択肢をコンボ ボックスに入れたかったのですが、
この場合はどのようにしたらよろしいのでしょうか?
No.1
- 回答日時:
こんにちは!
あるシート上にコンボボックス1を配置しているのですね。
そして常に最新日(本日)を表示したい!と解釈しました。
「あるシート」がアクティブになった時点で表示するのはどうでしょうか?
「あるシート」のシートモジュールを
Private Sub Worksheet_Activate()
ComboBox1 = Format(Date, "yyyy年m月")
End Sub
としてみてはどうでしょうか?
※ 単に一つの日付だけを表示するのであれば
コンボボックスでなくて、テキストボックスで用を足すとは思いますが。
的外れならごめんなさい。m(_ _)m
tom04さん、ありがとうございます。
フォームコントロールでシート上に設置したので、コンボボックス の名称がわかりません。
確認方法があれば教えていただけませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/04/17 09:25
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/04/13 10:55
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBAのコンボボックスで日だけを表示する方法
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
-
4
VBAのコンボボックスの年月表示について
Flash
-
5
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
6
excelVBA コンボボックスに時刻で表示したい
Excel(エクセル)
-
7
コンボボックスに日付を表示する
Visual Basic(VBA)
-
8
UserForm1.Showでエラーになります。
工学
-
9
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
10
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
11
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
12
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
13
ACCESSのコンボボックスで入力した値がTABLEに反映されずに数字がでます
Access(アクセス)
-
14
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
15
VBA(エクセル)のユーザーフォームの固定
Visual Basic(VBA)
-
16
年月日を持つテーブルから年月を指定して抽出したいのですが
その他(データベース)
-
17
VBA コンボボックスの表示(日付)について
Visual Basic(VBA)
-
18
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
19
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
20
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
エクセル
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】A列にある、日付(本...
-
エクセルの循環参照、?
-
【マクロ】3行に上から下に並...
-
【マクロ】WEBシステムから保存...
-
【マクロ】EXCELで読込したCSV...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
【条件付き書式】シートの中で...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
派遣会社とかハローワークとか...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報