Excel VBA質問箱 IV

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

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


4780 / 13646 ツリー ←次へ | 前へ→

【54496】コンボボックスの使い方 おちゃら 08/3/15(土) 21:17 質問[未読]
【54501】Re:コンボボックスの使い方 VBWASURETA 08/3/16(日) 6:39 質問[未読]
【54505】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 8:22 お礼[未読]
【54507】Re:コンボボックスの使い方 VBWASURETA 08/3/16(日) 9:43 発言[未読]
【54510】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 12:51 質問[未読]
【54511】Re:コンボボックスの使い方 neptune 08/3/16(日) 13:08 発言[未読]
【54513】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 13:43 質問[未読]
【54514】Re:コンボボックスの使い方 neptune 08/3/16(日) 15:24 発言[未読]
【54515】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 15:54 お礼[未読]
【54517】Re:コンボボックスの使い方 VBWASURETA 08/3/16(日) 21:11 回答[未読]
【54518】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 21:28 お礼[未読]
【54520】Re:コンボボックスの使い方 VBWASURETA 08/3/16(日) 21:45 回答[未読]
【54521】Re:コンボボックスの使い方 おちゃら 08/3/16(日) 22:34 発言[未読]
【54522】Re:コンボボックスの使い方 neptune 08/3/16(日) 22:37 発言[未読]
【54523】Re:コンボボックスの使い方 neptune 08/3/16(日) 22:39 発言[未読]

【54496】コンボボックスの使い方
質問  おちゃら  - 08/3/15(土) 21:17 -

引用なし
パスワード
   エクセルVBA初心者です。
シートにコンボボックスを貼り付けて使用していますが、選択する時の右矢印ボタンの表示が潰れたり、ボタンが凹んだままになったりと見栄えが悪く困っています。
因みに、表示→ツールバー→コントロールツールボックス(ここのコンボボックスを使用しています)。ユーザフォームの中に設定しなければいけないものなのでしょうか?
使用内容は、イベントによる動的リスト表示などを行っています。


よろしくお願いします。

【54501】Re:コンボボックスの使い方
質問  VBWASURETA  - 08/3/16(日) 6:39 -

引用なし
パスワード
   ▼おちゃら さん:
おはようございます。

コントロールツールので、通常そいう動きにはなりませんよ?
まず、どいうソースを書いているのか提示して貰えないでしょうか?
イベントの書き方の問題と思います。

【54505】Re:コンボボックスの使い方
お礼  おちゃら  - 08/3/16(日) 8:22 -

引用なし
パスワード
   ▼VBWASURETA さん:
早々のご回答ありがとうございます。

ソースの件ですが、こんな感じです。
コンボ設定は、イベント(GotFocus)で行っています。

Private Sub コンボ1_GotFocus()
  Call Initコンボ1(コンボ1)
End Sub

Public Sub Initコンボ1(ByVal obj As Object)
  Dim comb As Collection
  Dim str As String
  Dim tmp As Variant

  obj.Clear
  Set comb = New Collection
  str = "sheet1!A5:A" & CStr(GetRow("sheet1"))

  For Each tmp In Range(str)
    On Error Resume Next
    comb.Add tmp.Value, CStr(tmp.Value)
    If Err.Number = 0 Then
      obj.AddItem tmp.Value
    End If
    On Error GoTo 0
  Next tmp

  Set comb = Nothing
  obj.Style = fmStyleDropDownCombo
  obj.ListIndex = -1
End Sub

【54507】Re:コンボボックスの使い方
発言  VBWASURETA  - 08/3/16(日) 9:43 -

引用なし
パスワード
   ▼おちゃら さん:
ちょっと試してみました。
えっと本当に初心者の方ですか^^;
動的に作るとか多分それなにり知識がないと作れないと思いますが。
ま、それはさておき。

フォーカス取得後のイベントの問題なのかなっと思いますが。
因みに試したのは提示頂いたソースと
関数化しないフォーカス取得後のイベント内で、直接処理する方法と
一度、リストに入ったらセットし直さない方法です。

因みにリストに入ったらセットしない方法はその現象にならなくなり
成功しました。後の試した方法は同じ現象になりました。

もしするなら、AutoOpen時にセットするかしてやった方が良いのかも
知れませんね。

【54510】Re:コンボボックスの使い方
質問  おちゃら  - 08/3/16(日) 12:51 -

引用なし
パスワード
   ▼VBWASURETA さん:
度々、ありがとうございます。

>因みにリストに入ったらセットしない方法はその現象にならなくなり
>成功しました。後の試した方法は同じ現象になりました。
>
>もしするなら、AutoOpen時にセットするかしてやった方が良いのかも
>知れませんね。
auto_openということは、最初の一発だけということですよね。
今作成中のものは、シートの入力支援の目的でツールボックスを使用しています。
(行の削除やシートの内容の変更など何でもありです。)
そのため、都度コンボボックスの内容を変更する必要がでてきます。
それと、コンボのプロパティをobject型で引き渡していますが、
通常どうやるのでしょうか?
すみませんが、よろしくお願いいたします。

【54511】Re:コンボボックスの使い方
発言  neptune  - 08/3/16(日) 13:08 -

引用なし
パスワード
   ▼おちゃら さん:
▼VBWASURETA さん:
こんにちは

入力支援ということなら、支援対象のセルが選択されたタイミングで
comboboxへのデータ入力を行えばどうでしょうか?

現在の現象はcomboboxでのイベント処理が重いために起こっているように
思います。対象セルの選択で行えば、Userには判りにくいのでは?

>それと、コンボのプロパティをobject型で引き渡していますが、
>通常どうやるのでしょうか?
comboboxのみを対象とするなら、「msforms.combobox」という型がありますので、
それを使用するのが王道かと思います。

【54513】Re:コンボボックスの使い方
質問  おちゃら  - 08/3/16(日) 13:43 -

引用なし
パスワード
   ▼neptune さん:
ご回答ありがとうございます。
>comboboxのみを対象とするなら、「msforms.combobox」という型がありますので、
>それを使用するのが王道かと思います。
修正してみました。OKです。

もう1つ質問させてください。
コンボボックスの▼をクリックした時、ダウンリスト表示時は▼がキレイに
表示されるのですが、リスト選択後汚い▼になってしまいます。
リスト選択後特に処理をしていないのですが、どういうことなのでしょうか?
よろしくお願いします。

【54514】Re:コンボボックスの使い方
発言  neptune  - 08/3/16(日) 15:24 -

引用なし
パスワード
   ▼おちゃら さん:
こんにちは

>コンボボックスの▼をクリックした時、ダウンリスト表示時は▼がキレイに
>表示されるのですが、リスト選択後汚い▼になってしまいます。
>リスト選択後特に処理をしていないのですが、どういうことなのでしょうか?
>よろしくお願いします。
▼の表示スタイルが変わると言う事と思うんですが、これについては知りません。
多分、Windowsのバージョンに合わせた描画になっていると思うんですが。。?
フォーカスを持つと正常ですよね?当方XP SP2 XL2K

UserForm上では同様の現象は起こらないようですね。
これはUserFormというオブジェクトに所有されているからかもわかりません。

と、推測だけでした。

【54515】Re:コンボボックスの使い方
お礼  おちゃら  - 08/3/16(日) 15:54 -

引用なし
パスワード
   ▼neptune さん:

>▼の表示スタイルが変わると言う事と思うんですが、これについては知りません。
>多分、Windowsのバージョンに合わせた描画になっていると思うんですが。。?
>フォーカスを持つと正常ですよね?当方XP SP2 XL2K
>
そうです。それです。因みに、OfficeはXP。WindowsはSP2です。
色々とありがとうございました。

【54517】Re:コンボボックスの使い方
回答  VBWASURETA  - 08/3/16(日) 21:11 -

引用なし
パスワード
   ▼おちゃら さん,neptune さん:
こんばんは。

もう解決されたようですが、
Auto_Openは以下を参考にしてください。名前にするだけで
自動でマクロ実行ができます。

/www.relief.jp/itnote/archives/001502.php


リストが変わるのは重いからでしょうが。
多分、イベントがフォーカスを取得した後からだと思います。
処理を軽くできれば早いのかもしれませんね。
先に配列で保持するとか。

【54518】Re:コンボボックスの使い方
お礼  おちゃら  - 08/3/16(日) 21:28 -

引用なし
パスワード
   ▼VBWASURETA さん:
こんばんは。度々ありがとうございます。

フォーカスイベントの処理はなるべく軽くするということとして
(VBWASURETAさん、neptuneさんの意見を参考に)
ただ、以下の事についてはもう諦めてかけています。(仕様かな)

(neptuneさんの見解引用)
▼の表示スタイルが変わると言う事と思うんですが、これについては知りません。
多分、Windowsのバージョンに合わせた描画になっていると思うんですが。。?
フォーカスを持つと正常ですよね?当方XP SP2 XL2K
UserForm上では同様の現象は起こらないようですね。
これはUserFormというオブジェクトに所有されているからかもわかりません。
と、推測だけでした。

【54520】Re:コンボボックスの使い方
回答  VBWASURETA  - 08/3/16(日) 21:45 -

引用なし
パスワード
   ▼おちゃら さん:

あ、それですが、検証結果にも書いてますが
フォーカス取得後にしなければ発生しないので、
シートオブジェクトのイベントで取得設定すれば大丈夫かと。

【54521】Re:コンボボックスの使い方
発言  おちゃら  - 08/3/16(日) 22:34 -

引用なし
パスワード
   ▼VBWASURETA さん:
すみません、説明が足りなかったです。

▼ボタンが凹んだままという事については、フォーカス時にリスト設定処理しない
という事で解決です。

先程、仕様かなと諦めていたのは、
空のエクセルファイルにコンボボックスを作成して、その▼ボタンをクリックすると、ドロップダウンリストが表示されている時は、▼の形状がきれいになったりすることです。(最初からあのキレイな状態にできないかと)

【54522】Re:コンボボックスの使い方
発言  neptune  - 08/3/16(日) 22:37 -

引用なし
パスワード
   ▼VBWASURETA さん:
▼おちゃら さん
こんにちは

>リストが変わるのは重いからでしょうが。
>多分、イベントがフォーカスを取得した後からだと思います。
>処理を軽くできれば早いのかもしれませんね。
>先に配列で保持するとか。
リストが変なのは私も↑と思います。
対応策は・・・もう良いですね。VBWASURETA さんも私も書いてますから。

【54523】Re:コンボボックスの使い方
発言  neptune  - 08/3/16(日) 22:39 -

引用なし
パスワード
   すれ違いました。

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