職場でOpenOffice 1.1.4 のマクロを使って
プログラミングをしているのですが、コンボボックスに
データを追加する作業で困っています

StarSuite 8 Basic プログラミングに
コンボボックスにデータを追加する場合は

addItem(Item, Pos)

と書いてあるのですが、

DrawPage = Sheet.DrawPage
Form = DrawPage.Forms.GetByIndex(0)

Form.cboDate.Text = Date()'今日の日付表示
Form.cboDate.addItem ("aaa",0)

と記述すると、addItemのところで怒られます
本当は、バージョンアップをしたいのですが、
それもできません

OpenOfficeに詳しい方がおられましたら、
教えてください

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

A 回答 (1件)

Pos が「0」からではなく「1」からなのではないでしょうか。


Form.cboDate.addItem("aaa",1) とやってもだめですか?
環境ないので憶測です。すみません。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみませんでした。。。
試してみたのですが、ダメでした

もうちょっと考えてみます

お礼日時:2006/10/05 12:30

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

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

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

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

Q[Access2003]コンボボックスとリストボックスの違い

今、Access2003のフォームのコントロールの作成について勉強しています。『コンボボックス』と『リストボックス』を見て、コンボボックスは、「ドロップダウン形式でスペースを節約できる点」、リストボックスは、「一覧がすべて表示される」という意味がよく分かりませんでした。
インターネットでいろいろ調べて見たのですが….
例えば・・・・
店名ID 店名
A A店
B B店
C C店
と『コンボボックス』と『リストボックス』が表示され、ボックスの上の選択の矢印があるかないかの違いしか分かりませんでした。

(1)Access初心者なので『コンボボックス』と『リストボックス』について簡潔に教えてくださったら助かります。もしホームページで『コンボボックス』と『リストボックス』について一目で見たら違いが分かるというものが掲載されていたら教えてください。

(2)コンボボックスの「ドロップダウン形式」がよく分からないです。

Aベストアンサー

リストボックスとコンボボックスは
一覧からデータを選択する
違いは 
リストボックスは、一覧が常に表示されている
選択すれば その項目だけ色が反転するだけ

コンボボックスは、「sakura3465」さんが 気がついた
選択の▼を クリックしなければ 一覧は表示されない
一覧が表示され 選択すると その項目しか表示されない
※最初の設定にもよりますが、通常 一行分しか幅をとらないので 

Access2003を 持っていないので 画像はつけることができません
il||li _| ̄|○il||li

Q同じコンボボックス、リストボックスを使うには?

よろしくお願いします。
今、ユーザーフォームを使って製造計画表を作っています。
コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。
1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。
ユーザーフォームの形的にはこのような感じですが。
1. コンボボックス  リストボックス
2. コンボボックス  リストボックス
3. コンボボックス  リストボックス
今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。
Private Sub UserForm_initialize()
'ComboBox1セット

Dim ico As Long
ico = 1
With ThisWorkbook.Worksheets("Sheet1")
Do While .Cells(1, ico) <> ""
Me.ComboBox1.AddItem .Cells(1, ico).Value
ico = ico + 1
Loop
End With
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
'ListBox1セット
Dim ico As Long
'Me.ListBox1.Clear
ico = Me.ComboBox1.ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.ListBox1.List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub

VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。

よろしくお願いします。
今、ユーザーフォームを使って製造計画表を作っています。
コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。
1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。
ユーザーフォームの形的にはこのような感じですが。
1. コンボボックス  リストボックス
2. コンボボックス  リストボックス
3. コンボボックス  リストボックス
今は、1.のとこだ...続きを読む

Aベストアンサー

回答が付いてないようなので。。

UserForm Initializeイベントで3つのComboBoxにLIstをセット
ListBox1のChangeイベントが出来たら、それをコピーして、数値のところを、2,3に変えるだけです。
 
質問者のコードをそのまま使用するとして。。

'----- 3つのコンボにリストをセット--------
Private Sub UserForm_initialize()
 Dim ico As Long
 ico = 1
 With ThisWorkbook.Worksheets("Sheet1")
  Do While .Cells(1, ico) <> ""
   Me.ComboBox1.AddItem .Cells(1, ico).Value
   ico = ico + 1
  Loop
 End With

 Me.ComboBox2.List = Me.ComboBox1.List
 Me.ComboBox3.List = Me.ComboBox1.List

 Me.ComboBox1.SetFocus
End Sub

'----------ListBox1をセット----------------
Private Sub ComboBox1_Change()
 Dim ico As Long
 ico = Me.ComboBox1.ListIndex + 1
 With ThisWorkbook.Worksheets("Sheet1")
  Me.ListBox1.List = .Range(.Cells(2, ico), _
  .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
 End With
End Sub
'----------ListBox2をセット----------------
Private Sub ComboBox2_Change()
 Dim ico As Long
 ico = Me.ComboBox2.ListIndex + 1
 With ThisWorkbook.Worksheets("Sheet1")
  Me.ListBox2.List = .Range(.Cells(2, ico), _
  .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
 End With
End Sub
'----------ListBox3をセット----------------
Private Sub ComboBox3_Change()
 Dim ico As Long
 ico = Me.ComboBox3.ListIndex + 1
 With ThisWorkbook.Worksheets("Sheet1")
  Me.ListBox3.List = .Range(.Cells(2, ico), _
  .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
 End With
End Sub
'--------------------------------------------

ただこれではCombo,ListBoxが増えたときにコピーや修正が大変ですので、LIstBoxへのセットは殆ど同じですから、そこをサブルーチンにしてやります。

方法はサブルーチンをコールするときにComboBoxの番号を引数としてコールしてやります。

'-------------------------------
Private Sub ComboBox1_Change()
 Call ListBoxSet(1)
End Sub
'-------------------------------
Private Sub ComboBox2_Change()
 Call ListBoxSet(2)
End Sub
'-------------------------------
Private Sub ComboBox3_Change()
 Call ListBoxSet(3)
End Sub

'------共通ListBoxセット----------------
Private Sub ListBoxSet(No As Integer)
 Dim ico As Long
 ico = Me.Controls("ComboBox" & No).ListIndex + 1
 With ThisWorkbook.Worksheets("Sheet1")
  Me.Controls("ListBox" & No).List = .Range(.Cells(2, ico), _
  .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
 End With
End Sub
'--------------------------------------

以上。

回答が付いてないようなので。。

UserForm Initializeイベントで3つのComboBoxにLIstをセット
ListBox1のChangeイベントが出来たら、それをコピーして、数値のところを、2,3に変えるだけです。
 
質問者のコードをそのまま使用するとして。。

'----- 3つのコンボにリストをセット--------
Private Sub UserForm_initialize()
 Dim ico As Long
 ico = 1
 With ThisWorkbook.Worksheets("Sheet1")
  Do While .Cells(1, ico) <> ""
   Me.ComboBox1.AddItem .Cells(1, ico).Value
 ...続きを読む

Qvb6のコンボボックスの操作について

おはようございます。
vb6+MDBの環境下で、コンボボックスについて質問です。
マスタとなるテーブルA(都道府県など)と、一般的(?)なデータを日々貯めていくテーブルBがあり、
Bに、Aのキーとなる値が保存されています。
テーブルデータBの表示・更新画面を作っているのですが、
テーブルAの内容を画面上のコンボボックスに選択項目としてADDして表示するところまでは出来たのですが、以下のことを実現するには、コンボボックスにどういう記述で実現するのかわかりません。
1.テーブルBに持っているAの都道府県コードに該当する項目を、Bのデータ選択時に表示したい。

【テーブルA】
Aのキーコード,都道府県名

【テーブルB】
Bのキーコード,Aのキーコード,住所…

このような場合、イベント時にコンボボックスをどのように処理するようにソースを書けば実現できますか?

Aベストアンサー

>都道府県コードに該当するものが文字列で
MDB上でのインデックスの設定はフィールドのプロパティでインデックスを「はい(重複あり)」か「はい(重複なし)」にすることによって可能です。

関係ないかもしれませんが、私が良くやることで一番簡単だと思われる方法は、MS Hierarchical FlexGrid を使うものです。

DIM CON AS NEW ADODB.CONNECTION
DIM RST AS NEW ADODB.RECORDSET
strConMDB = "PROVIDER = MICROSOFT.JET.OLEDB.4.0; DATA SOURCE = C:\MDB\MDBFILE.MDB; PERSIST SECURITY INFO = FALSE"
strSQL = "SELECT * FROM TABLEA"
CON.OPEN strConMDB
RST.OPEN STRSQL,CON,ADOPENKEYSET,ADLOCKOPTIMISTIC
SET ME.MSHFLEXGRID1.RECORDSET = RST
RST.CLOSE
CON.CLOSE
のような感じでTABLEAの全レコードをMSHFLEXGRID1に表示させることができます。
strSQL を
"SELECT * FROM TABLEA WHERE PREFECTURECODE = '東京都'"
とかえれば、対象レコードを東京都に限定して表示させることができます。

>都道府県コードに該当するものが文字列で
MDB上でのインデックスの設定はフィールドのプロパティでインデックスを「はい(重複あり)」か「はい(重複なし)」にすることによって可能です。

関係ないかもしれませんが、私が良くやることで一番簡単だと思われる方法は、MS Hierarchical FlexGrid を使うものです。

DIM CON AS NEW ADODB.CONNECTION
DIM RST AS NEW ADODB.RECORDSET
strConMDB = "PROVIDER = MICROSOFT.JET.OLEDB.4.0; DATA SOURCE = C:\MDB\MDBFILE.MDB; PERSIST SECURITY INFO = FALSE...続きを読む

Q【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表

【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表示させる方法

C#初心者です。
コンボボックスの処理につまずいています。

<処理>
1.コンボボックスに任意の数字を入力できるようにしておく。
2.そして、任意の数字を入力する。
3.ボタンを押したら、その入力した数字がテキストボックスに表示される。

1と2はできるのですが、3がよくわかりません。
どなたかご教授いただけると幸いです。
宜しくお願いいたします。

Aベストアンサー

ご質問を単純に捕らえると、button1_ClickのイベントでTextを処理すればよいのでは。

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = comboBox1.Text;
}

Qコンボボックスのリスト外入力について(Access2002)

お世話になっております。
ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。
コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。
まとめると、
(1)コンボボックスより値を選択して、フィルタをかける。
(2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する
こう言った、流れでの作業です。

Aベストアンサー

自分はAccess2000ですのでちょっと違うかも知れませんが・・・

まず、OnNotInList/リスト外入力時イベントは、、"LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合のみ発生します。
そして、LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合、一覧の選択項目にないテキストを入力することはできません。

これを考慮すると、次のようにすれば、リスト以外の項目が入ったときは、元のリストの一覧に追加できます。

(1)"LimitToList/入力チェック" プロパティに [Yes/はい] を設定

(2)OnNotInList/リスト外入力時イベントに次のような処理を行う。
Dim rst As New ADODB.Recordset

Set rst = New ADODB.Recordset
rst.Open "コンボボックスの元テーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

rst.AddNew
rst![追加するフィールド名] = NewData
rst.Update

rst.Close
Set rst = Nothing

Me.コンボボックスのコントロール名 = ""
Me.コンボボックスのコントロール名.Requery

とすれば、コンボボックスの元リストに新しい項目を追加できます。

フィルタをかけたければ更新後イベントでフィルタの処理をいれればよいと思います。

とりあえずご参考まで。

自分はAccess2000ですのでちょっと違うかも知れませんが・・・

まず、OnNotInList/リスト外入力時イベントは、、"LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合のみ発生します。
そして、LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合、一覧の選択項目にないテキストを入力することはできません。

これを考慮すると、次のようにすれば、リスト以外の項目が入ったときは、元のリストの一覧に追加できます。

(1)"LimitToList/入力チェック" プロパ...続きを読む

QC#でプログラミング リストボックスの内容を違うフォームのコンボボックスに呼び込みたいのですが

Form1とform2がある。
form1には、combobox1とbutton1がある。
form2には、listbox1とbutton2がある。(ほかにも追加や削除ボタンあり)

form1は実行されたときに表示されるフォームです。
form2はcombobox1の項目(リスト)を編集するフォームです。

項目を変更可能にしているので、txtファイルに書き込んだり、読み込んだりさせています。

プログラムを実行したときにcombobox1にテキストファイルが読み込まれます。
button1を押すと、Form2が表示され、listbox1に同じテキストファイルが読み込まれます。(form2では項目を追加したり、削除が可能です。)button2を押すとlistbox1の内容がテキストファイルに書き込まれ、form1に戻ります。ここまではできています。

しかし、combobox1には最初に実行させたときにしか、テキストファイルが読み込まれないので、form2で変更しても反映されません。

button2を押した時に、form1を更新したりできないのでしょうか??

どなたかわかる方はいませんか??
お願いします。

Form1とform2がある。
form1には、combobox1とbutton1がある。
form2には、listbox1とbutton2がある。(ほかにも追加や削除ボタンあり)

form1は実行されたときに表示されるフォームです。
form2はcombobox1の項目(リスト)を編集するフォームです。

項目を変更可能にしているので、txtファイルに書き込んだり、読み込んだりさせています。

プログラムを実行したときにcombobox1にテキストファイルが読み込まれます。
button1を押すと、Form2が表示され、listbox1に同じテキストファイルが読み込ま...続きを読む

Aベストアンサー

Form2を閉じるコードは現状出来ているのは?

> button2を押すとlistbox1の内容がテキストファイルに書き込まれ、
> form1に戻ります。ここまではできています。

ですから
Form1のbutton1のClickイベントで
Form2 frm2 = new Form2();
frm2.ShowDialog( this );
// Form2を閉じた後 書き込まれたテキストを読み直して
// コンボボックスを再設定
comboBox1.Items.Clera();
ファイルのオープン
リード、Itemsへの追加
ファイルのクローズ
といった流れになるかと ・・・

> 新たにform1ができてしまいませんか?
どこの部分でしょうか?


現状のコードがどのようになっていて
それを実行した際に 希望する動作とどのような差異が発生しているのかを明示しましょう

Form1のLoad,button1_Click、Form2のLoad,button1_Clickなど関係箇所のコードの抜粋でいいですから

Form2を閉じるコードは現状出来ているのは?

> button2を押すとlistbox1の内容がテキストファイルに書き込まれ、
> form1に戻ります。ここまではできています。

ですから
Form1のbutton1のClickイベントで
Form2 frm2 = new Form2();
frm2.ShowDialog( this );
// Form2を閉じた後 書き込まれたテキストを読み直して
// コンボボックスを再設定
comboBox1.Items.Clera();
ファイルのオープン
リード、Itemsへの追加
ファイルのクローズ
といった流れになるかと ・・・

> 新たにform1ができて...続きを読む

Qvbデータベースのコンボボックスの連動

お世話様です。

VBでデータベースを作っています。

Accessのテーブルからコンボボックスで、レコードを
読み込んでるのですが、1つ目のコンボボックスで
選択した際に、他のコンボボックスも連動するようにするにはどうすればいいでしょうか??

たとえば 
コンボボックスであるレコードを選択。
他のコンボボックスでは、先のコンボボックス
で絞り込まれたレコードのみ選択できるようにする。

それに伴い他のフィールドも連動するということです。

どうぞよろしくお願いいたします。

Aベストアンサー

>VBでデータベースを作っています。

データベースはAccessで、VBでデータ検索画面を作っているということでしょうか?

一つ目のコンボボックスのSelectedIndexChangeイベントかなんかで、他のコントロールの中身を作り変えてあげればいいんでないですかね?

Q変数に取得した値をテキストボックスやコンボボックスに表示させた

アクセスで、変数に取得した値をテキストボックスやコンボボックスに表示させたいと思っています。例えば、まずクエリをひとつ作成します。そのクエリのレコードをループで配列変数に取得していきます。フィールド(IDと名前)レコード(件数は2件とします)

public ID(2) as String
public 名前(2) as String

Sub temp()
Dim Db As Database
Dim rs As Recordset
Dim I As Integer
Set Db = CurrentDb
Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset)


rs.MoveFirst

For I = 1 To 2

If IsNull(rs![ID]) = False Then ID(I) = rs![ID]


If IsNull(rs![名前]) = False Then 名前(I) = rs![名前]

rs.MoveNext
Next I


rs.Close
Db.Close

End Sub
(この時点で変数に値は入っているようです。)
フォームで作成したテキストボックスやコンボボックスに実行ボタンをクリックすると表示するというコードは下記のように記述してみました。

Private Sub 実行_Click()

Call temp(標準モジュールを呼び出す)

ID = ID(1)
    名前 = 名前(1)
(2)省略

End Sub

すると、かならず「実行時エラー'13'; 型が一致しません。」とエラーが出ます。なにぶんVBA初心者になりますので、ご教授お願い致します。ちなみに同じような方法で、同一フォーム内に2つテキストボックスを用意し、片方に値を入力して実行するともう一方のテキストボックスにその値が表示すると言う実験は成功しています。もっと他に良いコードがあれば教えて下さい。お願いします。

アクセスで、変数に取得した値をテキストボックスやコンボボックスに表示させたいと思っています。例えば、まずクエリをひとつ作成します。そのクエリのレコードをループで配列変数に取得していきます。フィールド(IDと名前)レコード(件数は2件とします)

public ID(2) as String
public 名前(2) as String

Sub temp()
Dim Db As Database
Dim rs As Recordset
Dim I As Integer
Set Db = CurrentDb
Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset)


rs.Mo...続きを読む

Aベストアンサー

ID = ID(2)
名前 = 名前(1)

でエラーになります
ID(2)という変数を宣言しているので
ID が使えないのです。
Me!ID = ID(2)という事の出来ますが
混同しやすいので

Dim XID(2) とか別の変数名を使う方が
わかりやすいでしょう。

別回答
変数を使わずに直接フォームモジュールで
データベースの値を取得する事も可能です。

Public Db As Database
Public rs As Recordset
で宣言しておいてから

Private Sub 実行_Click()
Set Db = CurrentDb
Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset)

rs.movefirst
ID = rs!ID
名前 = rs!名前

End Sub

QACCESSでコンボボックスにSQLで抽出した値を表示したい

いつもお世話になっております。
ACCESS初心者です。
テキストボックスに入力したフリガナから、あいまい検索させ抽出した
ものをコンボボックスに表示させたいのですが、うまくいきません。。
(コンボボックスに何も表示されないです)
過去の質問やネット検索でも調べたのですがイマイチ分かりませんでした。
どなたか詳しい方、ご教示いただけると嬉しいです。
OS:windowXP
ACCESS:Ver2003

Private Sub テキストボックス名_Afterupdate()
Me.コンボボックス名.RowSource = "SELECT フィールド名 FROM テーブル名 WHERE フリガナ LIKE '" & Me!テキストボックス名 & "*';"
End Sub

どうぞよろしくお願いいたします。

Aベストアンサー

もしかして、txt検索値の内容を書き変えただけで、コンボボックスの表示内容の変化を期待していませんか?
(1)txt検索値の内容を変更しても、フォーカスを移動する等の行動を取るまで、AfterUpdateイベントは発生しません。
(2)Requeryしただけではコンボボックスのリストが変化するだけで、現在の表示内容は変化しません。

AfterUpdateイベントの発生はプログラムでどうにかなるモノではありません。
Changeイベントでは1文字ずつイベントが発生するので、現実的ではないでしょう。
Requery後にコンボボックスの内容を変更したい場合は以下のコードを試してみてください。

With Me.コンボボックス名
  .RowSource = "SELECT ~略
  .ReQuery
  If .ListCount > 0 Then
    .Value = .ItemData(0)
  Else
    .Value = Null
  End If
End With

Qマウスを使わずにコンボボックスの内容を選択するには

いつもお世話になっています。
Access2000で、マウスを使わずにコンボボックの内容を選択したいのですが、↓ボタンを押下してもデータが選択されず、困っています。↓ボタンを押してしまうと、次のテキストボックスやコンボボックに遷移してしまいます。(TABキーと同じ働きをしてしまいます。)
KeyDownイベントを使用したらうまくいくのかと思いコーディングしたのですが、やはり、選択できませんでした。どのようにしたら、↓ボタンを押下してコンボボックの内容を取得できるでしょうか。
どなたかご教授お願いします。

Aベストアンサー

F4で中身が表示されれば、↑↓で移動できなければ、
F4でコンボが開いた後にマウスがコンボのどこかを
さわっていませんか?
最初にF4を押したときにたまたまマウスがその開いた
コンボの中身を選択してしまうと、、↑↓で移動
できなくなります。
あとは、コンボの設定自体で貼り付けた後、
なにか変更していませんか?


人気Q&Aランキング

おすすめ情報