以下の質問について、至急、回答をください。お願いします。

質問1)
出荷.xlsというBookが存在します。その中に、"出荷リスト"というシートがあり、A列に商品コード、B列に商品名が重複して多数存在します。各列に、オートフィルタをかけ、▼をクリックした時に表示されるリストをフォームのコンボボックスに表示させる方法。

質問2)
フォームのコンボボックスに表示された任意の商品コードを選択時に、テキストボックスに選択された、商品コードの商品名を表示させる方法。

※できれば、コードを記述していただくとありがたいのですが・・・

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Excel97なら、


rc = 0: ReDim SyohinName(0) '商品名をクリア
の次に、
ws.Activate: Range("A1").Select
を入れてみてください。
    • good
    • 0
この回答へのお礼

補足を投稿した後、自分なりに予期せぬエラーの原因を追求してみました。UserFormのRowSourceプロパティに値が入力されていて、エラーがでてしまったようです。自分のミスでした・・・・・。回答の方、ありがとうございました。また宜しくお願いします。

お礼日時:2001/10/03 14:51

Excelのヴァージョンを教えて下さい。

当方、Excel2000です。

また、
  For Each rg In ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)

  For Each rg In ws.Range("A1:A100")
としたら次へ行きますか。
    • good
    • 0

質問の『フォームのコンボボックスに表示させる』の『フォーム』はユーザーフォームと解釈しましたが・・・違った?



フォーム(オブジェクト名:UserForm1)には、
 コンボボックス(オブジェクト名:ComboBox1)
 テキストボックス(オブジェクト名:TextBox1) があるとします。
ワークシート出荷リストのA1には『商品コード』、B1には『商品名』の表題があり、2行目からデータが入力されているとします。

フォームを呼び出す時にコンボボックスのリストを定義しています。
下記をUserForm1のコードウインドウに貼り付けます。


Dim SyohinName() As String '商品名用配列

'フォームを開く時の処理
Private Sub UserForm_Initialize()
  Dim ws As Worksheet 'ワークシート
  Dim rg As Range 'セル
  Dim rc As Long '行カウンタ
  Set ws = Worksheets("出荷リスト")

  ComboBox1.Clear 'コンボボックスをクリア
  rc = 0: ReDim SyohinName(0) '商品名をクリア
  For Each rg In ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
    If rg.Column = 1 Then 'A列の場合
      If rg.Row > 1 Then '2行目以降の場合
        'セルが表示されていたらコンボボックスに追加する
        ReDim Preserve SyohinName(rc)
        ComboBox1.AddItem rg.Value 'コンボボックスに商品コードを追加
        SyohinName(rc) = rg.Offset(0, 1) '商品コードを記憶
        rc = rc + 1
      End If
    End If
  Next
End Sub

'コンボボックスをクリックした時の処理
Private Sub ComboBox1_Click()
  TextBox1 = SyohinName(ComboBox1.ListIndex)
End Sub

この回答への補足

教えください!!ユーザフォームにコードを貼り付けてステップ実行した時に、以下の場所でエラーが発生しました。どうしたらよろしいでしょうか?ボタンは、OK・ヘルプしかなく、ヘルプをクリックしてもヘルプが表示されません・・・・

ComboBox1.Clearの次のステップへ行く時に、
⇒ "実行時エラー '-2147467259(80004005)':予期せぬエラーが発生しました。"

補足日時:2001/09/26 09:33
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

QエクセルVBA 複数列のリストボックス内を検索して値を複数列表示したい

複数列表示したリストボックス内を絞り込み検索して絞り込み値も検索前と同様の複数列で表示することはできますか?

現場一覧シートのA列に現場名、K列に住所があります。(現場名は増え続けます)
別シートのセルをダブルクリックするとリストボックスを出します。(コード添付なし)
リストボックス内の絞り込み検索後に現場名をダブルクリックすると、アクティブセルに現場名と右隣に住所を表示するようにしたいです。
AddItemの複数列表示の使い方がよく理解できてない気がします。
添付写真は現場名30で絞り込み検索していますが住所列が表示されていません。絞り込み検索後に現場名と住所を表示する方法が分からずに困っております。

もし、リストボックスに複数列表示しなくても現場名ダブルクリック後にアクティブセルに現場名表示、連動して右隣セルに住所を表示が可能であればそれでも解決となります。

VBAをネットで勉強して3ヵ月たちます。
ネット上のコードを参考にして何とか他のブックは仕事で使えるVBAを組み立てましたが、これだけは記述方法が分かりません。
どうかご教授ください。

'*****************************************************
'検索フォームを開いた時の処理
'*****************************************************
Private Sub UserForm_Initialize()
Dim wLastGyou As Long

'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count

'リストボックスに「現場一覧」のリストをセット
With lstGenba

'列の指定:11列とする
.ColumnCount = 11

'列幅11列を2列表示にする
.ColumnWidths = "130;0;0;0;0;0;0;0;0;0;100"

'見出しの設定:無し
.ColumnHeads = False

'リストボックスの値にセルA2からK最終行までセット
.RowSource = "現場一覧!A2:k" & wLastGyou

End With

End Sub
'*****************************************************
'検索用のテキストボックス更新後の処理
'*****************************************************
Private Sub txbSerch_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Obj As Object
Dim wAddST As Variant
Dim wAddress As Variant
Dim wKamoku As Variant
Dim wLastGyou As Long

'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count

With Worksheets("現場一覧")

'テキストボックスの値が含まれるセルを検索
Set Obj = Range("現場一覧!A2:K" & wLastGyou).Find( _
What:=txbSerch.Value, _
LookIn:=xlValues, _
lookat:=xlPart, _
MatchByte:=False)

'検索対象がない場合はメッセージを表示
If Obj Is Nothing Then
MsgBox "現場名は存在しません。", _
vbOKOnly + vbInformation, "検索"
Else
'リストボックスをクリア
lstGenba.RowSource = ""

'検索にヒットした先頭のセルのアドレスをセット
wAddST = Obj.Address

'検索の繰り返し処理
Do
'検索にヒットしたセルのアドレスをセット
wAddress = Obj.Address

'検索にヒットしたセルの値を取得
wKamoku = .Range(wAddress).Value

'リストボックスに追加
lstGenba.AddItem wKamoku

'次の検索を行う
Set Obj = Range("現場一覧!A2:A" & wLastGyou).FindNext(Obj)

'最初にヒットしたアドレスと同じ場合は処理を終了
If Obj.Address = wAddST Then Exit Do
Loop
End If
End With
End Sub

'*****************************************************
'リストボックスをダブルクリックした時の処理
'*****************************************************
Private Sub lstGenba_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wSheetName As Variant

'アクティブなシート名を取得
wSheetName = ActiveSheet.Name

'アクティブなセルにリストボックスの値をセット
With Worksheets(wSheetName)
.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
.ActiveCell.Offset(0, 1).Value = lstGenba.List(lstGenba.ListIndex, 10)
End With
'フォームを終了する
Unload Me
End Sub

複数列表示したリストボックス内を絞り込み検索して絞り込み値も検索前と同様の複数列で表示することはできますか?

現場一覧シートのA列に現場名、K列に住所があります。(現場名は増え続けます)
別シートのセルをダブルクリックするとリストボックスを出します。(コード添付なし)
リストボックス内の絞り込み検索後に現場名をダブルクリックすると、アクティブセルに現場名と右隣に住所を表示するようにしたいです。
AddItemの複数列表示の使い方がよく理解できてない気がします。
添付写真は現場名30...続きを読む

Aベストアンサー

一例です。

'*****************************************************
'検索用のテキストボックス更新後の処理
'*****************************************************
Private Sub txbSerch_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Obj As Object
Dim wAddST As Variant
Dim wAddress As Variant
Dim wKamoku As Variant
Dim wLastGyou As Long

'---追加箇所--------------------------------------
Dim i As Long
'リスト表示11項目→3項目(現場名、空白、住所1)
lstGenba.ColumnCount = 3
lstGenba.ColumnWidths = "130;10;100"
'--------------------------------------------------

'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count

With Worksheets("現場一覧")

'テキストボックスの値が含まれるセルを検索
Set Obj = Range("現場一覧!A2:K" & wLastGyou).Find( _
What:=txbSerch.Value, _
LookIn:=xlValues, _
lookat:=xlPart, _
MatchByte:=False)

'検索対象がない場合はメッセージを表示
If Obj Is Nothing Then
MsgBox "現場名は存在しません。", _
vbOKOnly + vbInformation, "検索"
Else
'リストボックスをクリア
lstGenba.RowSource = ""

'検索にヒットした先頭のセルのアドレスをセット
wAddST = Obj.Address

'検索の繰り返し処理
Do
'検索にヒットしたセルのアドレスをセット
wAddress = Obj.Address

'--------変更箇所---------------------------------------
i = Obj.Row
'検索にヒットしたセルの値を取得とリストボックスに追加
lstGenba.AddItem .Cells(i, 1)
lstGenba.List(lstGenba.ListCount - 1, 1) = ""
lstGenba.List(lstGenba.ListCount - 1, 2) = .Cells(i, 11)
'--------------------------------------------------------

''検索にヒットしたセルの値を取得
'wKamoku = .Range(wAddress).Value
'
''リストボックスに追加
'lstGenba.AddItem wKamoku

'次の検索を行う
Set Obj = Range("現場一覧!A2:A" & wLastGyou).FindNext(Obj)

'最初にヒットしたアドレスと同じ場合は処理を終了
If Obj.Address = wAddST Then Exit Do
Loop
End If
End With
End Sub

'*****************************************************
'リストボックスをダブルクリックした時の処理
'*****************************************************
Private Sub lstGenba_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wSheetName As Variant

'アクティブなシート名を取得
wSheetName = ActiveSheet.Name

'--------------変更箇所-----------------------------------------------
'アクティブなセルにリストボックスの値をセット
With Worksheets(wSheetName)
.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
.Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = lstGenba.List(lstGenba.ListIndex, 2)
End With
'--------------------------------------------------------------------------

'アクティブなセルにリストボックスの値をセット
'With Worksheets(wSheetName)
'.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
'.ActiveCell.Offset(0, 1).Value = lstGenba.List(lstGenba.ListIndex, 10)
'End With
'フォームを終了する
Unload Me
End Sub

一例です。

'*****************************************************
'検索用のテキストボックス更新後の処理
'*****************************************************
Private Sub txbSerch_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Obj As Object
Dim wAddST As Variant
Dim wAddress As Variant
Dim wKamoku As Variant
Dim wLastGyou As Long

'---追加箇所--------------------------------------
Dim i As Long
'リスト表示11項目→3項目(現場名、空白、住所1)
lstG...続きを読む

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

Qコンボボックスの値が変更されたらそのコンボボックスに表示されたURLを開きたい

データ型がハイパーリンクの文字列が入力されたテーブルをコンボボックスに表示させています。(添付画像参考)
希望は、
プルダウンでURLを選択したと同時にリンク先へ飛びたいです。
現在は、
プルダウンでURLを選択→コンボボックスをクリック
でリンク先に飛んでいます。
多分コンボボックスのChangeイベントだと思うのですが
どうすればいいのでしょうか?

アドバイスよろしくお願いします。

Aベストアンサー

No.2です。

> ""を開いています。

このメッセージから、推測される原因を確認した結果、
おおよそ状況がつかめました。

前回回答前のこちらでのテストでは、ハイパーリンク型
フィールドへのファイルのドラッグ&ドロップでアドレス
を記録したのですが、この場合、入力データにカーソルを
合わせた後、F2キーで編集モードにすると
「http//www.goo.ne.jp/#http//www.goo.ne.jp/#」
と、アドレスが二重に表示されます。
(実際には1個目のアドレスは文字列としての表示、
 2個目のアドレスが実際のリンク先)

一方、Webブラウザなどからアドレスをコピー&ペースト
した場合は
「#http//www/goo.ne.jp#」
と、実際のリンク先のアドレスのみが記録されますが、
このデータを「Call FollowHyperlink(コンボ0)」の
形で参照すると、エラーとなってしまうようです。
大変失礼致しました。


対処法としては、「データの先頭文字が『#』かどうかで
切り分け」も考えましたが、今回の件では「Follow」を
使用した方がよさそうです(汗)

Private Sub コンボ0_AfterUpdate()

  If Nz(コンボ0, ") = "" Then Exit Sub

  'コンボ0に記録されたハイパーリンクを実行
  '(FollowHyperlinkと違い、アドレスを引数とする必要
  ' はなし。こちらの詳細もヘルプを参照下さい(汗))
  コンボ0.Hyperlink.Follow

End Sub

No.2です。

> ""を開いています。

このメッセージから、推測される原因を確認した結果、
おおよそ状況がつかめました。

前回回答前のこちらでのテストでは、ハイパーリンク型
フィールドへのファイルのドラッグ&ドロップでアドレス
を記録したのですが、この場合、入力データにカーソルを
合わせた後、F2キーで編集モードにすると
「http//www.goo.ne.jp/#http//www.goo.ne.jp/#」
と、アドレスが二重に表示されます。
(実際には1個目のアドレスは文字列としての表示、
 2個目のアドレスが実際...続きを読む

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

QエクセルVBA ユーザーフォーム 複数のコンボボックス 同一リスト

ユーザーフォームにコンボボックスが複数あります。
その内の3つについては、同一のリストを設定します。
リストの個数は30個ぐらいで、できればセルを使用
したくありません。
下記を3回記述するよりも短くしたいのですが、どのよ
うな方法がありますでしょうか?
現状では、ComboBox1、4、6ですが、連番にする必要が
あれば、変更可能です。
With ComboBox1
.Clear
.AddItem "いくら"
.AddItem "たこ"
.AddItem "まぐろ"
・・・
End With
お手数ですがよろしくお願いします。

Aベストアンサー

下記で如何でしょう。

Dim myArr As Variant
Dim i As Variant
myArr = Array("1", "4", "6")
For Each i In myArr
   With Me.Controls("ComboBox" & i)
      .Clear
      .AddItem "いくら"
      .AddItem "たこ"
      .AddItem "まぐろ"
   End With
Next

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

QVBA のフォームでTxtボックスとコンボボックス

エクセル2013で、やっとのことでマクロのフォーム(txt入力のみを5項目)を完成させることができました。
次に、そのうちの一つは曜日の入力なのでこれをコンボボックスにして、一覧を出してマウスで選択するように変更したいのですがどうもうまくいきません。マクロは初めてなので基本的な考え方ができていないのです。
 
そこで質問なのですが、参考書には 

Private Sub UserForm_Initialize

End Sub

にマクロを記入するとなっていますが、これをもとの曜日入力ボックスと置き換えることはできないのでしょうか。それとも、終了ボタンのマクロと同じように、別のプロシージャにしないといけないのでしょうか。

それから、これはあまり重要ではないかもしれませんが、私がコンボボックスを作成するとマクロに
Combbox_Changed
のようなプロパティ(?)が表示されて、ヘルプを見てもよくわかりません。これはどういうことなのでしょうか。

よろしくお願いします。

Aベストアンサー

目についたので回答してみます。
私もそんなに詳しくないので間違っていたらすみません。

基本的な概念がわかればご自身でも勉強できそうなので
VBAの初歩の考え方を少しご説明します。

-------------------------------
Private Sub UserForm_Initialize

End Sub
-------------------------------

まずVBA(及びVB)の基本的なコードの見方として以下の様な見方をします。
オブジェクト名:好きに付ける事ができます。
イベント名:VBの中で決まっており、オブジェクトによって可能な動作に違いがあったと思います。
------------------------------------
Private Sub オブジェクト名_イベント名
ここには処理を書くよ!
End Sub
------------------------------------

上記の「イベント名」と表現したのは、VBAのプログラムが
イベント駆動型プログラミングだからです。
どういった物がイベントになるかというと、「クリック」や「選択」(チェクボックスのチェックなど)が
それに当たります。

そしてオブジェクト名というのはVBAの世界でフォーム、ボタン、ラベル、コンボボックスなど
すべて「オブジェクト」と呼ばれる物になります。

これらの内容を合わせて先ほどのコードを見ると以下の様な感じになります。
--------------------------------------
※オブジェクト:UserForm・・・フォームを作成した時の元から設定されているフォーム名
※イベント名:Initialize・・・イニシャライズなので初期化とかの意味

Private Sub フォームの_初期化時

'フォームが表示された時に動かす処理

End Sub
---------------------------------------

これは後に書いている質問の回答になります。
バージョンによって少し違うのかもしれませんが・・・

イベントとの中で、コンボボックスはChangedイベントというイベントが存在します。
何かというと、ComboBoxで何かが選ばれたら処理をするというイベントです。

以下が日本語で表した場合の例になります。
-------------------------------------------------
Private Sub ComboBox1_Change()
   'ComboBox1のリストの中から何か選ばれた場合の処理
   処理1:ComboBox1の値が土曜か日曜の場合は画面に「今日は休日です」を表示
   処理2:ComboBox1の値が月曜日~木曜日の場合は「今日は平日です」を表示
End Sub
-------------------------------------------------


######### ↓ここからが今回の本題↓ ###############

なぜCombBoxの値の設定に、フォームの初期化の処理がでてくるのか・・・
それは、フォームの初期化時にCombBoxのリストの内容を追加しているからです。

※ComboBox1の部分は作成しているCombBox名によって変わります。
  (Excel2007の一つ目に作成したComboBoxはComboBox1)
------------------------------------
Private Sub UserForm_Initialize
'ここには処理を書くよ!
  ComboBox1.AddItem "月"
  ComboBox1.AddItem "火"
  ComboBox1.AddItem "水"
  ComboBox1.AddItem "木"
  ComboBox1.AddItem "金"
  ComboBox1.AddItem "土"
  ComboBox1.AddItem "日"
End Sub
------------------------------------

なかなか説明は難しいものですね。
参考になれば幸いです。

目についたので回答してみます。
私もそんなに詳しくないので間違っていたらすみません。

基本的な概念がわかればご自身でも勉強できそうなので
VBAの初歩の考え方を少しご説明します。

-------------------------------
Private Sub UserForm_Initialize

End Sub
-------------------------------

まずVBA(及びVB)の基本的なコードの見方として以下の様な見方をします。
オブジェクト名:好きに付ける事ができます。
イベント名:VBの中で決まっており、オブジェクトによって可能な動作に違いがあったと思い...続きを読む

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

Qエクセル、コンボボックス/フォームのとコントロールツールボックスの

エクセル2000です。
今まではワークシートにフォームのコンボボックスを貼って使ってきました。
でも色を変えたり出来ないので、今度はコントロールツールボックスからコンボボックスを貼ってみました。

質問ですが、コンボボックスに表示させるリストを設定するのに、これまでのフォームのコンボボックスだと書式設定で入力範囲をカーソルをあてて一度に簡単に指定できたのですが、コントロールツールボックスのコンボボックスだとそれが出来ません。VBEditorのプロパティのところのListFillRangeの右側にいちいち手でSheet1!A1:A5のように打ち込まなければならないようです。これではけっこう手間がかかってしまいます。
わたしのやりかたが間違っているのでしょうか?

Aベストアンサー

#2です。
>この意味が良くわかりませんでした。
エクセル(VBA)ではリストに出す範囲を指定するだけですが、
VBのコンボボックスの項目(アイテム)の登録はListFillRangeがないので、AddItemを項目数だけ、記述
する必要があると言うことを言いたかったのです。
エクセル(VBA)では手数が省けていると思います。


人気Q&Aランキング

おすすめ情報