• ベストアンサー

複数の条件で、csvファイル内から表示させたい。

ボタンを押すと、テキストボックス・コンボボックスの文字を読み取って、 用意してあるcsvファイルから、一致するデータをリストボックスに表示できるようにしようとしています。 If (A = TextBox1.Text) And ・・・(F = ComboBox1.SelectedItem)Then G = Items(0) & ・・・  Items(5) Me.ListBox1.Items.Add(G) こんな感じで「=」と「<>」を使って、考えられる全ての組み合わせで書いたのですが、思ったように表示されず困っています。 ボタンを押すと、AとBが両方とも一致しないと表示してほしくないのに、 Aに一致するものとBに一致するものがリストボックスに出てくる状態です。 色々とやってみたのですが、どれもうまくいかず、 私の考え方だとできない気がしたので、質問させていただきました。 どなたか、分かりやすく教えていただけませんか?

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

判断材料の適切なものを提供しましょう そのIF文の完全な記述と与えられるデータ(判定に使う左辺、右辺) 抽出したいデータ(CSV)のサンプル 現状の実行結果、希望する実行結果 などを投稿しましょう

chihi6
質問者

補足

長くなってしまうのと内容を書くのはどうかと思ってデータは書きませんでしたが、 やはり無いとまずかったですか・・・。 自宅からだと見られないので正確に覚えていないのですが、 Do until~loop を使ったIF文でした。 適当なサンプルを用意したりするのも時間がかかるので、 今回は諦めて締め切らせてもらいます。 次回どうしても質問したい際には、”判断材料”を考えて投稿するようにします。 その時はよろしくお願いします。 申し訳ありませんでした。

関連するQ&A

  • テキストボックスの表示について

    visual basic2010を使用しています。 コンボボックスAの選択が1~4だった時、コンボボックスB、C、Dの選択された結果を、ボタンクリックを経てテキストボックスに表示させるにはどうすればいいでしょうか? If ComboBox1.Text = "1" Then TextBox1.Text = (ComboBox2.Text) TextBox1.Text = (ComboBox3.Text) TextBox1.Text = (ComboBox4.Text) ElseIf ComboBox1.Text = "2" Then TextBox2.Text = (ComboBox2.Text) TextBox2.Text = (ComboBox3.Text) TextBox2.Text = (ComboBox4.Text) ElseIf ComboBox1.Text = "3" Then TextBox3.Text = (ComboBox2.Text) TextBox3.Text = (ComboBox3.Text) TextBox3.Text = (ComboBox4.Text) Else TextBox4.Text = (ComboBox2.Text) TextBox4.Text = (ComboBox3.Text) TextBox4.Text = (ComboBox4.Text) End If 実行した結果、ComboBox4のみの結果がテキストボックスに表示されてしまいました。 '変数を使った場合 If ComboBox2.Text = "1" Then Dim st As String st = (ComboBox3.Text),(ComboBox4.Text),(ComboBox5.Text) textbox1.Text = st ElseIf ~~~~~~~~~~^ こちらは「ステートメントの終わりを指定してください」と出て動作しませんでした。 以上、宜しくお願い致します。

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • 【エクセル】オプションボタンにセルの値を反映させるには

    エクセルマクロ初心者です。教えてください。 シート2 の あるセルの値が A のとき シート1上の オプションボタン1がtrueになる。 シート2 の あるセルの値が A以外のとき シート1上の オプションボタン1がfalseになる。 (オプションボタン1はフォームコントロールのオプションボタンです。) という結果になるマクロの登録方法を模索していますがうまくいきません。 実際には、シート1は入力シートで、ボタンクリックで別の蓄積シートに転記(オプションボタンのほかコンボボックスなどの内容を転記します)。シート1上のリストボックスに蓄積シートの内容を表示し、選択するとその内容を呼び出すようにしたいのです。 コンボボックスやテキストボックスに呼び出すところまではなんとか本を見たりしてできたのですが、オプションボタンに呼び出せません。 なんとかお知恵をお借りしたいです。 よろしくおねがいします。 *下記のようにやってみました。 Private Sub commandbutton3_click() Dim n As Integer n = ListBox1.ListIndex If n = -1 Then MsgBox "選択してください" Else ComboBox2.Value = ListBox1.List(n, 0) ComboBox3.Value = ListBox1.List(n, 3) ComboBox4.Value = ListBox1.List(n, 4) ComboBox5.Value = ListBox1.List(n, 8) ComboBox6.Value = ListBox1.List(n, 9) ComboBox7.Value = ListBox1.List(n, 1) ComboBox8.Value = ListBox1.List(n, 2) TextBox3.Value = ListBox1.List(n, 10) End if ***********ここからがうまくいきません******** If Worksheets("入力シート").ListBox1.List(n, 6).Value = "A" Then OptionButton1.Value = True Else OptionButton("A").Value = False End If End Sub

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

  • 入力値をListボックスに表示させたい。

    (仕様1) ユーザーフォーム1でテキストボックス1~5に 入力した値をListボックスに表示させたい。 例えば textbox1=A,textbox2=B,textbox3=C・・・ と入力されたら、 A B C D E のように順に横方向一列に表示させるようにしたいです。 (仕様2) これをコマンドボタン1を押す度にリストボックス1に新しく追加されていく 様にしたいのですが、できますでしょうか。 例えば、 A B C D E A C D B E (テキストボックスに入力後ボタン1を押す) A C B D E (テキストボックスに入力後ボタン1を押す)

  • VBAで条件が2つある場合の転記について

    現在Book1.xlsmでユーザーフォームを作成しています。 ここにComboBox7(日付)、ComboBox8(項目)、TextBox11(数値)を配置しています。コンボボックス やテキストボックスに入力があるとBook1.xlsmのSheet1にそれぞれComboBox7はA2、ComboBox8はB1、TextBox11はB2に入力されるようになっています。 ここで、B2の数値を別なブックBook2.xlsxのSheet2に転記したいと考えております。 Book2.xlsxのSheet2では、A列に日付、B1~AZ1に項目が入っています。 Book1.xlsmのSheet1のA2と同じ日付、B1と同じ項目が交差するところにB2の数値を転記したい場合はどのようにしたら良いのか教えていただけませんでしょうか?

  • ボタンをクリックしても空白をリストに追加しないようにしたい

    初心者ですのでよろしくお願いいたします。 以下のようなコードでボタンを押すとテキストボックスに入力してあるテキストをリストに登録したいのですが、空白の場合は追加したくありません。どのように書けばいいでしょうか? よろしくお願いいたします。 (ちなみにLabel3にはリストに登録された数が出ます) Public Class Form1 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Add(TextBox1.Text) TextBox1.Clear() Label3.Text = ListBox1.Items.Count End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Remove(ListBox1.SelectedItem) Label3.Text = ListBox1.Items.Count End Sub End Class

  • VBA初心者です。

    VBA初心者です。 ユーザーフォーム上にテキストボックスとコンボボックスを1つずつ作りました。その二つを以下のように関連させています。 Private Sub ComboBox2_Change() 'コンボボックスの値で100を割ったものを、小数第三位を四捨五入してテキストボックスに表示する TextBox1.Value = WorksheetFunction.Round(100 / ComboBox2.Value, 2) End Sub コンボボックスのリストから値を選択したり、直接値を入力するときちんとその通りになってくれるのですが、コンボボックスの値をBackSpaceで消すと、「実行時エラー'13':型が一致しません」と出ます。デバックで落ちるのはこの部分なので、このプログラムに問題があると思うのですが、どこがいけないのかが分かりません。問題点が分かる方、ぜひ教えて下さい。

  • 複数のコンボボックスの項目の表示/非表示について(VB6.0)

    コンボボックスにて Combo1(0)のリスト "A" "B" "C" Combo1(1)のリスト "A" "B" "C" Combo1(2)のリスト "A" "B" "C" Combo1(3)のリスト  ・  ・  ・ と複数のコンボボックスを用意し、それらのコンボボックスにおいて表示するの内容を全て同じ内容にします。この時、例えばCombo1(0)で"A"が選択されると、他のコンボボックスでは"A"がリストに表示されなくなる、またCombo1(0)にて"A"を選択解除すると他のコンボボックスにおいて再度"A"がリストに表示されるという様に、同じリストを持つ複数のコンボボックスにおいて、重複選択できないように表示/非表示を切り替えたいのですが上手い方法が思いつきません。分かる方がおられましたら御教授宜しくお願いします。

  • リストボックスの文字比較

    コンボボックスで選択された文字列をリストボックスと比較して 対応する行のリストボックスの文字列を削除を行いたいのですが 何故か、リストボックスの最初の行と、最後の行の文字列しか 等しいとみなされず、処理ができません。(名前が間違っている わけではないです)また、最初の行と最後の行の名前を、試しに 他の行の名前と入れ替えてみたりしましたが、やはり比較を行う時に 最初の行と最後の行しか文字列が一致しません… 文字列の比較の方法に問題があるのでしょうか… ご存知の方がいらっしゃいましたらアドバイスをお願いします comb = ComboBox1.Text For i = 0 To ListBox1.Items.Count - 1 → If comb = ListBox1.Items(i) Then ListBox1.Items.RemoveAt(i) Exit For End If Next

専門家に質問してみよう