プロが教える店舗&オフィスのセキュリティ対策術

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
というようなやり方かとは思うのですが、具体的なコードがさっぱり思い浮かびません。
どうぞよろしくお願いいたします。

A 回答 (2件)

こんにちは。



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/12 20:06

失礼ですが、コンボボックスの機能を思い違いしていませんか


「コンボボックス」は性別、都道府県名等のデータを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関数も必要でしょう)
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/12 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています