エクセルのシート上にコンボボックス を設置しています。
ここから年月(例: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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
アクセスVBAで年、月、日のコンボボックス
Access(アクセス)
-
EXCEL VBAのコンボボックスで日だけを表示する方法
Excel(エクセル)
-
EXCEL 年月表示をするVBAを教えてください。
Excel(エクセル)
-
-
4
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
5
VBA コンボボックスの表示(日付)について
Visual Basic(VBA)
-
6
コンボボックスに日付を表示する
Visual Basic(VBA)
-
7
UserForm1.Showでエラーになります。
工学
-
8
Accessコンボボックス
Visual Basic(VBA)
-
9
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
10
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
11
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
12
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
13
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
14
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
-
15
年月日を持つテーブルから年月を指定して抽出したいのですが
その他(データベース)
-
16
コンボボックスにdateで取得した月の日数分を表示したい
Visual Basic(VBA)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
19
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
20
VBA データ(特定値)のある最終行を取得したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報