Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9439 / 13644 ツリー ←次へ | 前へ→

【27356】ブック立ち上げ時にコンボボックスを毎回初期化する レオポン 05/8/6(土) 13:09 質問[未読]
【27357】Re:ブック立ち上げ時にコンボボックスを毎... どらっぐすとあ 05/8/6(土) 13:25 回答[未読]
【27358】Re:ブック立ち上げ時にコンボボックスを毎... かみちゃん 05/8/6(土) 13:43 回答[未読]
【27361】Re:ブック立ち上げ時にコンボボックスを毎... レオポン 05/8/6(土) 14:04 質問[未読]
【27364】Re:ブック立ち上げ時にコンボボックスを毎... レオポン 05/8/6(土) 14:29 お礼[未読]
【27365】Re:ブック立ち上げ時にコンボボックスを毎... どらっぐすとあ 05/8/6(土) 15:20 回答[未読]
【27366】Re:ブック立ち上げ時にコンボボックスを毎... レオポン 05/8/6(土) 15:40 お礼[未読]

【27356】ブック立ち上げ時にコンボボックスを毎回...
質問  レオポン  - 05/8/6(土) 13:09 -

引用なし
パスワード
   初めて投稿させて頂きます。
皆さん、宜しくお願いします。

ブックのワークシート上に名前をつけたフォームのコンボボックスを一つ配置し、
ブックを起動したとき、システムから日付を取得し、コンボボックスのリストに前月、今月、次月を初期表示させてワークシートを表示するプログラムを組みましたが、ブックを起動したときにエラーが出てしまいます。
何がいけないのでしょうか?
(ちなみに、表示されるワークシートには、コンボボックス以外にも情報を設定するためのオプションボタン等がいくつか表示されています。)

スペック:Windows XP および Excel 2003 SP1

エラーメッセージ:オブジェクトは、このプロパティまたはメソッドをサポートしていません

コンボボックス名:Taishou

プログラムの記入先:ThisWorkbookのWorkbook_Activate関数に以下のプログラムを記入し、ブックを起動したときに処理をするようにしました。

プログラム:

Private Sub Workbook_Activate()

  Const strDateForm As String = "gggee年mm月分"

  Dim dZen_getu As Date
  Dim dTou_getu As Date
  Dim dRai_getu As Date
  Dim dNow_date

  dNow_date = Date   '← ここでシステム日付を取得します。
  '当月日付データ
  dTou_getu = dNow_date
  '前月日付データ
  dZen_getu = Year(dNow_date) & "/" & (Month(dNow_date) - 1)
  '来月日付データ
  dRai_getu = Year(dNow_date) & "/" & (Month(dNow_date) + 1)
 
  With Workbooks(ブック名).Worksheets(シート名)
    .Shapes("Taishou").Clear  'コンボボックスの初期化
    '前月をコンボボックスに追加する
    .Shapes("Taishou").AddItem Format(dZen_getu, strDateForm)
    '当月をコンボボックスに追加する
    .Shapes("Taishou").AddItem Format(dTou_getu, strDateForm)
    '次月をコンボボックスに追加する
    .Shapes("Taishou").AddItem Format(dRai_getu, strDateForm)
    '当月を表示させる
    .Shapes("Taishou").ListIndex = 1
  End With
End Sub

【27357】Re:ブック立ち上げ時にコンボボックスを...
回答  どらっぐすとあ  - 05/8/6(土) 13:25 -

引用なし
パスワード
   >フォームのコンボボックス
私見ですが、シート上でコンボボックスのマクロを使うなら、
コントロールツールボックスのコンボボックスの方が使いやすいと思います。

あと、入力規則のリストで対応できるなら、
こっちの方が使いやすいように思います。

【27358】Re:ブック立ち上げ時にコンボボックスを...
回答  かみちゃん  - 05/8/6(土) 13:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>エラーメッセージ:オブジェクトは、このプロパティまたはメソッドをサポートしていません

コントロールツールボックスのコンボボックスを使うには、
 .Shapes("Taishou").Clear 'コンボボックスの初期化
ではなく
 .Taishou.Clear 'コンボボックスの初期化
とします。
以下のURLが参考になるかと思います。
http://www.serpress.co.jp/excel/vba011.html

なお、全体としては、以下のような感じでできると思います。
Private Sub Workbook_Activate()
  Const strDateForm As String = "gggee年mm月分"

  Dim dZen_getu As Date
  Dim dTou_getu As Date
  Dim dRai_getu As Date
  Dim dNow_date

  dNow_date = Date   '← ここでシステム日付を取得します。
  '当月日付データ
  dTou_getu = dNow_date
  '前月日付データ
  dZen_getu = Year(dNow_date) & "/" & (Month(dNow_date) - 1)
  '来月日付データ
  dRai_getu = Year(dNow_date) & "/" & (Month(dNow_date) + 1)

  With Worksheets("Sheet1").Taishou
    .Clear  'コンボボックスの初期化
    '前月をコンボボックスに追加する
    .AddItem Format(dZen_getu, strDateForm)
    '当月をコンボボックスに追加する
    .AddItem Format(dTou_getu, strDateForm)
    '次月をコンボボックスに追加する
    .AddItem Format(dRai_getu, strDateForm)
    '当月を表示させる
    .ListIndex = 1
  End With

End Sub

また、「ブックを起動したとき、システムから日付を取得し、〜」であれば、
Private Sub Workbook_Activate()
ではなく
Private Sub Workbook_Open()
でいいのではないでしょうか?

Private Sub Workbook_Activate()
を使うと、複数ブックを開いているときに、アクティブになるごとに実行されます。

【27361】Re:ブック立ち上げ時にコンボボックスを...
質問  レオポン  - 05/8/6(土) 14:04 -

引用なし
パスワード
   どらっぐすとあ様
かみちゃん様

早速のお返事ありがとうございます。

早速、かみちゃん様の方法で試してみます。

> Private Sub Workbook_Activate()
> を使うと、複数ブックを開いているときに、アクティブになるごとに実行されます。

また、Workbook_Activate関数の意味をありがとうございました。
教えていただいてなければ泥沼に入るところでした。
(実行すると複数のブックを開閉する作業を行うため。)
ありがとうございました。

どらっぐすとあ様のコントロールツールボックスのコンボボックスについては、
コントロールツールボックスのコンボボックスの使い方がいまいち分からないので、検索で使い方などを勉強して後日チャレンジします。
ありがとうございました。

今から検収して、結果報告致します。

【27364】Re:ブック立ち上げ時にコンボボックスを...
お礼  レオポン  - 05/8/6(土) 14:29 -

引用なし
パスワード
   どらっぐすとあ様
かみちゃん様

ワークシート上のコンボボックスをフォームのコンボボックスからコントロールツールボックスのコンボボックスに変更して思い通りの処理が出来ました。
ありがとうございました。

あと、かみちゃん様の方法は、どらっぐすとあ様のおっしゃってたコントロールツールボックスのコンボボックスの方法だったのですね。
検収するためにプログラムを良く見たらちゃんと書いてありました。
私の理解力不足でお二方ともどうもすみませんでした。

しかし、これで勉強するほうがフォームのコンボボックスになりました。

【27365】Re:ブック立ち上げ時にコンボボックスを...
回答  どらっぐすとあ  - 05/8/6(土) 15:20 -

引用なし
パスワード
   私がフォームのコンボボックスを使うときは、
マクロを使わないときですね。

マクロを使うときは、コントロールツールボックスを使っていますよ。

【27366】Re:ブック立ち上げ時にコンボボックスを...
お礼  レオポン  - 05/8/6(土) 15:40 -

引用なし
パスワード
   どらっぐすとあ様

>私がフォームのコンボボックスを使うときは、
>マクロを使わないときですね。
>
>マクロを使うときは、コントロールツールボックスを使っていますよ。

マクロを使わないとき???と思って実際にシートにフォームのコンボボックスを配置して使い方を確かめてみました。
確かにシート上にリストデータ用のセルを作って、そのセルをプロパティで設定すれば簡単に表示できました。

今回はシート上に不必要な情報を書き込めないため、コントロールツールボックスを使用することにしました。

シート内にリストデータ用のセルが作れる場合は、フォームのコンボボックスが簡単ですね。1つ勉強になりました。
ありがとうございました。

9439 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free