• ベストアンサー

EXCEL VBAで、日付の後に曜日を追加する方法について

EXCEL VBAの日付の機能のことで教えていただきたいことがあります。    A列 1行:2008/02/01 2行:2008/02/03 3行:2008/02/04  ・  ・ コントロールツールボックスでコンボボックスをシートに挿入 Private Sub Workbook_Open() With ComboBox1 .AddItem Range("A1") .AddItem Range("A2") .AddItem Range("A3")     ・     ・ End With End Sub コンボボックスには「2008/02/01」等と表示されたリストが表示されると思いますが、 選択した後の値を「2008/02/01(月)」というように、 日付の後に曜日を追加して表示させるにはどのような処理をしたらよろしいでしょうか。 Private Sub ComboBox2_Change() ComboBox2 = ? End Sub というようなやり方かとは思うのですが、具体的なコードがさっぱり思い浮かびません。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 A 列にあるのがシリアル値なら Format 関数を使えば簡単です。 こんな感じ。 aaa なら 月、火、水... となり、aaaa なら月曜日、火曜日...という 具合ですね。 Dim i As Long Dim s As String For i = 1 To 31   s = Format$(Worksheets("Sheet1").Cells(i, "A").Value, "yyyy/mm/dd(aaa)")   Worksheets("Sheet2").ComboBox1.AddItem s Next

takohasisa
質問者

お礼

出来ました!ありがとうございました! VBAで使用するFormat関数は詳細に解説してあるテキストが無く 毎回試行錯誤して結局失敗してしまいます。 また分からないことがありましたら 是非よろしくお願いいたします。

その他の回答 (1)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

失礼ですが、コンボボックスの機能を思い違いしていませんか 「コンボボックス」は性別、都道府県名等のデータをN択するツールです。 特定場所にリストを用意しておき「listFillRange」にセル範囲を定義して利用します 例えばの名称を府県CMBとしますと Private Sub Worksheet_SelectionChange(ByVal Target As Range) 府県CMB.ListFillRange = a1: a48 End Sub 自分はExcellでコンボボックスの使用は避けています。 N択にはデータ(メニューバー)→入力規則と入り、入力値の種類を「リスト」にし元の値を範囲指定します。 >日付の後に曜日 ・同じセルに曜日を表示するにはセルの書式で設定できます ターゲットセルを右クリック→せルの書式設定→表示形式→ユーザ定義と入り [g.e.y.m aaa],[gg.e.m.d(aaa)],[ggg-e-mm-ddaaaa] [yy.mmm.d ddd],[yyyy.mmmm.d dddd] ほかにもいろんな組み合わせを試してください ・別のセルに表示するには日付を次のセルにコピーまたは計算式で設定して表示書式を[aaa],[aaaa]または[aaaa]とします ・曜日を純粋に取り出したい時はWeekday関数を利用します(結果は数値で戻ってきます、漢字で表示するにはVlookUp関数も必要でしょう)

takohasisa
質問者

お礼

なるほど。。。 日付の一覧を取得するためのリストを作ろうと考えていたのですが、ご指摘のとおり、ちょっと無理があるというか あまり適していないやり方だったかもしれません。 初心者のため、そうところの判断がまだまだつきません。 日付の後に曜日を挿入するやり方は色々と試してみます。 ありがとうございました。またわからないことがありましたら よろしくお願いいたします。

関連するQ&A