職場で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コンボボックスのリスト外入力について(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ができて...続きを読む

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
 ...続きを読む

QACCESS2000のコンボボックスの初歩的な質問

ACCESS2000にて初歩的な質問なのですが、
テーブルのフィールド1に
あいう銀行
ABC銀行
いろは銀行
123銀行
の4つの銀行名があります。
これをフォームからコンボボックスを使って
選択するように構築したいのですが、コンボボックスに現れるのは
あいう銀行
いろは銀行
ABC銀行
123銀行
と並んでしまいます。
いろは銀行
ABC銀行
123銀行
あいう銀行
の順にコンボボックスにて表示させるにはどうすれば良いのでしょうか?
ちなみに、テーブルのデータの並びを
いろは銀行
ABC銀行
123銀行
あいう銀行
に変更しても、コンボボックスでは
あいう銀行
いろは銀行
ABC銀行
123銀行
と現れます。
ACCESSの初心者ですので、よろしくお願いいたします。

Aベストアンサー

こんばんは。このような場合にクエリをうまく利用するといいですよ。
まず、銀行の名前がはいったテーブルにフィールドをひとつ追加します。
新しく追加したフィールドに、自分が後でコンボボックスで並べさせたい順番に番号を入力します。あなたの場合、いろは銀行に「1」、ABC銀行に「2」、123銀行に「3」、あいう銀行に「4」を入力します。
次に、新しい選択クエリを作成し、銀行名がはいったテーブルの「銀行名」と「順番」フィールドを選択し、「順番」を昇順に並べ替え指定します。
これで、このクエリを開いたときは必ずあなたの指定した「順番」通りに銀行名が並びます。
あとは、コンボボックスの元データを、今のテーブル指定から、新しく作ったクエリ指定にしてやれば、銀行名をコントロール出来ます。
 おわかりでしょうか??ちなみに、このクエリを利用すれば、入力データの多い銀行順にコンボボックスを表示させたりすることも出来、私は結構多用してます。いずれにしても、テーブルのデータを直接利用するより、例え1テーブルに入っているデータしか利用しないときも、一旦クエリを介して利用するようにしておくと、後々便利に使える場合がありますよ。

こんばんは。このような場合にクエリをうまく利用するといいですよ。
まず、銀行の名前がはいったテーブルにフィールドをひとつ追加します。
新しく追加したフィールドに、自分が後でコンボボックスで並べさせたい順番に番号を入力します。あなたの場合、いろは銀行に「1」、ABC銀行に「2」、123銀行に「3」、あいう銀行に「4」を入力します。
次に、新しい選択クエリを作成し、銀行名がはいったテーブルの「銀行名」と「順番」フィールドを選択し、「順番」を昇順に並べ替え指定します。
これで、...続きを読む

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

Qaccess2010コンボボックスとリストボックスについて質問です。 テーブルに日付、タイトル、内

access2010コンボボックスとリストボックスについて質問です。

テーブルに日付、タイトル、内容のフィールドがあります。これをコンボボックスを使って2014年、2015年、2016年・・・・
と作成して、2015年を選択すると2015年度分がリストボックスに表示できるようにできますか?

ご存知の方がいればよろしくお願いします。
accessは、初心者です。

Aベストアンサー

ウィザードを使ってコンボボックスを作成してみてください。
https://support.office.com/ja-jp/article/%E3%83%AA%E3%82%B9%E3%83%88-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%9C-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E9%81%B8%E6%8A%9E%E8%82%A2%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-70abf4a9-0439-4885-9099-b9fa83517603

以下抜粋
ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成する
5.コントロールに表示する値を取得する方法の確認を求められたら、次のいずれかの操作を行います。
・ほぼ変わることのない固定値リストを表示する場合は、[表示する値をここで指定する] をクリックします。

ここで
2014
2015
2016
となるように入力するだけです。

ウィザードを使ってコンボボックスを作成してみてください。
https://support.office.com/ja-jp/article/%E3%83%AA%E3%82%B9%E3%83%88-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%9C-%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E9%81%B8%E6%8A%9E%E8%82%A2%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-70abf4a9-0439-4885-9099-b9fa83517603

以下抜粋
ウィザードを使用してリスト ボッ...続きを読む

Qプログラミングに関する質....

プログラミングに関する質問です。
↓↓ツクローアドベンチャー2↓↓
http://www.shiftup.jpn.org/flash/game2/game.html
の様なWEB上でゲームが作れるプログラミングツールを作るには、
どうすれば良いでしょうか?????
回答、宜しくお願い致します。

Aベストアンサー

リンク先のツールはFlashで作成されているみたいですね。

他にもCGIとかJava(アプレット)などでも作成することもできると
思いますが、ちゃんとしたツールとして仕上げるのは結構難しいです。

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アクセスでコンボボックスが開きません

アクセスで入力画面を作っているのですが、
マウスを使わずに、エンターキーだけを使って、次のコントロールに飛びたいのですが、コンボボックスにきたときに、コンボボックスのプルダウンが開きません。コンボボックスが開けば、矢印キーとエンターキーだけで操作できるのですが。。
この違いだけで、入力作業は格段に早くなるのですが・・・。
ご存知の方教えてください。よろしくお願いいたします。m(__)m

Aベストアンサー

Private Sub 銀行名_GotFocus()
  Me.銀行名.Dropdown
  If Len(Me.銀行名.Value & "") = 0 Then
    Me.銀行名.Value = Me.銀行名.ItemData(0)
  End If
End Sub

1、フォーカス取得時に Dropdown する。
2、非選択状態ならば先頭の値を選ぶ。

Private Sub 銀行名_GotFocus()
  If Len(Me.銀行名.Value & "") = 0 Then
    Me.銀行名.Dropdown
    Me.銀行名.Value = Me.銀行名.ItemData(0)
  End If
End Sub

選択状態にあれば Dropdown させる必要もないので、通常は後者の書き方かと思います。


人気Q&Aランキング

おすすめ情報