• ベストアンサー

ワークシート上のcomboboxのリストへの追加

ワークシート上のcomboboxのリストに項目を追加したいのですがうまくいきません。 Sheets("data").Combobox1.AddItem "AAAA" とするとエラーが出てしまいます。 ListRowRangeで何とかするしかないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 基本的には、そのコードでも追加できるはずです。 エラーメッセージは何ですか? 『70:書き込みできません』の場合、 ComboBox1プロパティのListFillRangeに既にセル範囲を設定していませんか? そうであれば、一度 With Sheets("data").ComboBox1   .ListFillRange = ""   .List = .Parent.Range("A1:A10").Value '既リスト範囲 End With としてあげれば以降はAddItemできると思います。 (もっとも、BookOpen時に再設定しなければならないので、  保持したいならListFillRangeを使ってセル範囲を使うほうが良いかも)

nihonjinn
質問者

お礼

できました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAのComboBoxについて

    UserForm1にComboBoxが8個(ComboBox1~8)あります。 各ComboBoxはSheet1の下記列に入力されているリストを表示します。 ComboBox1 : A列 ComboBox2 : B列 ComboBox3 : C列 ComboBox4 : D列 ComboBox5 : E列 ComboBox6 : F列 ComboBox7 : G列 ComboBox8 : H列 ComboBox9 : I列 ComboBox10 : J列 そこで、UserForm1の各ComboBoxでデータ選択する際に、リストにある場合はそれを選択し、リストにない場合はComboBoxに新しいデータを入力し、UserForm1のCommandButton1を押下時にその新しいデータをSheet1の各列に追加したいのですが、どのようにしたらよいのでしょうか。 Sheet1にあるリストをComboBoxに表示するところまではできています。 ※ComboBoxの番号とリストの列番号を一致させています。 --------------------------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, retu As Integer, i As Integer For retu = 1 To 10 lastrw = Sheet1.Cells(1, retu).End(xlDown).Row For i = 1 To lastrw - 1 Controls("ComboBox" & retu).AddItem Sheet1.Cells(i + 1, retu).Value Next i Next retu End Sub ---------------------------------------------------------------

  • リストボックスに追加

    リストボックスに項目を使う時にAddItemをつかいますよね。でも、AddItemをつかうと下に下にと追加されていってしまいます。これを上に上に追加していきたいのですがどうすればいいのでしょうか?

  • VBA コンボボックス項目追加?

    エクセル VBA コンボボックスの項目入荷についてですが 入力フォームを開いたときに Private Sub UserForm_Activate() ComboBox1.AddItem ("本社") ComboBox1.AddItem ("東京支社") ComboBox1.AddItem ("大阪支社") End sub のようにコンボボックスに項目をだすことはわかったのですが、 フォームをを開いたときにワークシートを全てを自動で 項目に表示する方法はありますでしょうか? 宜しくお願いいたします。

  • エクセルVBA シートにある複数のコンボボックスクリア

    下のようにワークシートにコンボボックス(ツールボックス) があります。 ComboBox_りんご1~ComboBox_りんご10 ComboBox_みかん1~ComboBox_みかん10 シートがアクティブになった時に、.AddItemで リストを追加しています。 ある処理を終える時に、各リストをクリアします。 ComboBox_りんご1.Clear ComboBox_りんご2.Clear ・・・ これを For i = 1 to 10 ComboBox_りんご i .Clear Next のようにするにはどうしたらよいでしょうか? また、一つ一つ記述するのに比べて、処理速度など 何か影響はありますでしょうか? よろしくお願いします。

  • リストからフォーマットをコピーしてワークシートを追加するマクロについて

    マクロを勉強し始めたばかりで、いろいろ見ながらやっていますが、つまずいてしまいました。 やりたい事、コード、エラーになっているところは以下の通りです。 解決方法をご教示下さい。 【やりたい事】 あるデータリスト(sheet1)から1行ずつ、見積書を作成する (1)見積書format(sheet2)をコピーし、表示されているsheetの後に追加 (2)シート名称を"取引先コード_部番"に変更 (3)sheet1のデータをコピーされたformatに転記 (4)作成対象列に「*」が入っているデータのみ対象とし、ループ処理  ※(4)はコードがわからず、うまく出来ていません。 【コード】 --------------------------------------------------- Sub Macro1() 作成対象 = Sheets(1).Range("A2") 取引先コード = Sheets(1).Range("B2") 部番 = Sheets(1).Range("C2")  金額 = Sheets(1).Range("C2")  no = Sheets.Count i = 0 Do Until 作成対象 = "" i = i + 1 Sheets(2).Copy after:=Sheets(no) no = no + 1 Sheets(no).Name = "見積書(" & 取引先コード & "_" & 部番 & ")" Range("B11").Value = 取引先コード Range("AF13").Value = 部番 Range("BB13").Value = 金額 媒体No. = Sheets(1).Range("M2").Offset(i, 0) Loop End Sub --------------------------------------------------- 【エラー】 1行目のデータは意図どおり処理されますが、2行目以降、以下のコードでエラーになります。 どうも、シート名が同じになってしまう為のようです。 Sheets(no).Name = "見積書(" & 取引先コード & "_" & 部番 & ")"

  • DataGridViewのデータをComboBoxの項目に追加する

    回答お願い致します。 現在、VB2005を勉強していてDataGridViewを学んでいます。 DataGridViewの項目に(教員番号,教員名)とあるとして、教員名のデータをComboBoxの項目に追加したいと考えています。 普通に項目を追加するのなら、 For intLoop = 0 To DataGridView.Rows.Count - 1 ComboBox.Items.Add(DataGridView.Rows(intLoop).Cells (1).Value) Next といった感じで出来るのですが、これだと教員名が重複している場合も全てComboBoxに項目を追加してしまうので、それを避けて項目を追加する良い方法はないでしょうか?

  • Comboboxのデータを入れ替えたいが一部残ってしまう

    OS:WinXP-Home Office:Excel2000 を使用して、VBAの入力フォームを作成しています 3つのCombobox(オブジェクト名を「Data○」と命名:○には数字が入ります)を使い 1つ目のComboboxが選択されると 2・3個目のComboboxにデータが入るようにしたいのですが 以下のソースで不具合が出ましたのでお知恵を貸してください Private Sub UserForm_Initialize() Data1.AddItem "A" Data1.AddItem "あ" End Sub Private Sub Data1_Change() Dim i As Integer Dim j As Integer For j = 2 To 3 For i = 1 To Controls("Data" & j).ListCount Controls("Data" & j).RemoveItem 0 Next i Next j Select Case Data1.ListIndex Case 0 For j = 2 To 3 Controls("Data" & j).AddItem "A" Controls("Data" & j).AddItem "B" Controls("Data" & j).AddItem "C" Next j Case 1 For j = 2 To 3 Controls("Data" & j).AddItem "あ" Controls("Data" & j).AddItem "い" Controls("Data" & j).AddItem "う" Controls("Data" & j).AddItem "え" Controls("Data" & j).AddItem "お" Next j End Select End Sub これを実行した時に、 例えば2・3個目のComboboxを何も選択していない状態で 1つ目のComboboxを操作すると問題なくデータが開放されて 新たに入ります ですが、例えば 1個目:"あ" 2個目:"え" などの選択された状態で1個目を"A"に変えると 2個目のリストには "お" "A" "B" "C" となるケースがあります(毎回ではありません) Removeitemをする部分で調べてみたところ、うまくいかない時は 内側のiのループで Controls("Data" & j).ListCountの値は正常なのに 実際のループでは選択しているListindexで ループから抜けてしまっていました ソース上では問題ないので、どこを修正したらよいか分かりません よろしくお願いします

  • VB6のListの使い方

    VB6でListを使っています。 最初、Listに複数のデータが入っています。 何かデータを取得したら、、Listの該当するところのデータを変えていきたいのですが、できますか? Additemで項目の追加はしたことがありますが、変更の仕方が分かりません。 ただし、最初にあるデータはそのままで変わったところだけ変更していきたいです。

  • エクセル VBA リストについて

    エクセル VBA リストについて ComboBox3が例えばAなら ComboBox5にリストを入れたい 同じBookにSheet”masuta"がありそこに U1 V1 W1 X1 A  B C  D U列の下には”A"があり、Aの項目を入れ込んでいます。 ComboBox3が”A”と表示させた場合 ComboBox5はU列のU3以降の項目が入るようにしたいのですが Set wbMyBook = Workbooks(strMyBookName)エラー表示され 型の一致がしないと表示されます! このBookの格納はしているつもりなのですが上手く 回避できません教えて下さい。 それと下の記述をどのように変化させれば良いか アドバイスお願いします。 Private Const WBHName = "k2.xls" Private Const SH1Name = "Sheet1" Private Const wsListName = "masuta" Dim lngYcnt_List As Long '使用行を格納 Dim wbMyBook As Workbook 'このブックをセット Dim wsList As Worksheet 'リストシートをセット Dim strMyBookName As String 'このブックの名前を格納 Private Sub ComboBox3_Change() Dim lng As Long '使用するブックとシートをセット Set wbMyBook = Workbooks(strMyBookName) Set wsList = wbMyBook.Worksheets(wsListName) 'リストシートの使用行を格納 lngYcnt_List = wsList.Range("masuta!U1:X1").CurrentRegion.Rows.Count 'コンボボックスComboBox1のクリア・フラグをfalseにする。 ComboBox5.Clear flag = False '同じ数字のもののコンボボックスComboBox1に追加。 For lng = 1 To lngYcnt_List If ComboBox3.Value = wsList.Cells(lng, 21) Then 'ComboBox1,TextBox8,呼吸具体策に表示する。 ComboBox5.AddItem wsList.Cells(lng, 21) End If If ComboBox3.Value = wsList.Cells(lng, 22) Then ComboBox5.AddItem wsList.Cells(lng, 22) End If If ComboBox3.Value = wsList.Cells(lng, 23) Then ComboBox5.AddItem wsList.Cells(lng, 23) '処理を抜けるExit For flag = True End If Next lng End Sub

  • シートの保護でデータ追加が出来ない Excel

    表の項目で関数を入れているなど、データ入力以外さわらせたくない項目があるため、 シートの保護を設定するとデータの追加(新しいレコードの追加)が出来なくなりました。 (表をリストに変換しています。またセルの設定で「ロック」は外しています) またマクロも実行時にエラーになります。 「シートの保護」の「~許可する操作」の設定をいろい変えてみたのですがうまくいきません。 リストへレコード追加やマクロ実行時が出来て、ユーザーには関係のない項目を触らせなくする方法は無いでしょうか。 エクセル2003です。

専門家に質問してみよう