• ベストアンサー

ExcelVBA select case 値設定

ExcelVBAのSelect Caseで Select Case 数式または文字列式 Case 値1, 値2, 値3  処理 Case Else  処理 End Select のようにカンマで区切ると複数の値を指定できるはずです。 この値1, 値2, 値3のところに別のシートのA1、A2、A3に入っている値を設定したいのですが そのようなことは可能でしょうか?(A1→値1 A2→値2 A3→値3) 5年ぶりにVBAを書いていますが、びっくりするぐらい忘れています。。。

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

  • ベストアンサー
  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

> A列で上から順番に値を入力されています。 > そういうパターンに対応できる形にしたいです。 > A列の空白以外のセルの数を取得したりするやり方はわかります。 なら Select Case でやらなくてもいいんじゃないでしょうか? たとえば配列や Collection などを使うとか。 あとはそれをループさせ、ループの中で 1度でもヒットしたところでフラグを立ててループを脱出する。 その後にフラグの状態に合わせて処理を 2分割する。 Collection なら Add メソッドで簡単に要素を追加できるし For Each でループできる。 Dim cellValues As New Collection cellValues.Add Item:="セルの値", Key:="キー情報" Dim cellValue As Variant For Each cellValue In cellValues   If hoge = cellValue Then     flag = True     Exit For   End If Next If flag Then   処理 Else   処理 End If

MISAKI123
質問者

お礼

時間がなかったので、先に回答をいただいた方のやり方で、解決しました。 急ぎで解決したい表では、Select Caseで指定する値の数が、最大10個ぐらいだたのですが、値が多くなることも考えらるので、時間が出来たら教えていただいたループで試してみたいと思います。 フラグを付ける、というのは使えそうです。 本当にありがとうございました。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

そのまま、 With WorkSheets("シート名") Case .Range("A1"), .Range("A2"), .Range("A3") End With でいいでしょう。 あるいは、それぞれのセルの値を変数に入れてもいいでしょう。 a=.Range("A1") b=.Range("A2") c=.Range("A3") Case a,b,c とか。

MISAKI123
質問者

お礼

値の数は、今のところ多くても10個ぐらいなので、okormazd様の教えてくださったやり方でうまくいきました。 一致する場合に指定した処理をする、という流れなので、値の数が少ない場合はダミーの値を入れておけばいいということを、回答を読むまで思いつきませんでした。 本当にありがとうございました。

MISAKI123
質問者

補足

値の数は変動します。 A列で上から順番に値を入力されています。 そういうパターンに対応できる形にしたいです。 A列の空白以外のセルの数を取得したりするやり方はわかります。

関連するQ&A

  • エクセルVBAでSelect...Caseの構文

    エクセルVBAで ■ Select...Caseの構文は、次(構文1)のようになっているとのことですが、 構文2のような、意味でネストして使う使い方は許されているのでしょうか。 (参考 QNo.1965604 の#7に,#8に関係したところをお聞きします。) (構文1) Select Case 変数  Case 値1    変数が値1の時の処理  Case 値2    変数が値2の時の処理  Case Else    他のCaseに合わない場合(その他)の処理 End Select (構文2) Select Case 変数a  Case 値1    変数aが値1の時の処理       Select Case 変数b            Case 値1            変数bが値1の時の処理            Case 値2            変数bが値2の時の処理       Case Else        変数bが、他のCaseに合わない場合(その他)の処理 End Select  Case 値2    変数aが値2の時の処理  Case Else    変数aが、他のCaseに合わない場合(その他)の処理 End Select

  • VBA Select Caseについて

    エクセルVBAでLike演算子とSelectCase構文を組み合わせたいのですが、以下ではエラーになってしまいます。 どう修正すればいいのでしょうか? ABCを含む文字列、DEFを含む文字列、その他、についての処理の分岐方法です。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Value Case Like "*ABC*" `処理A Case Like "*DEF*" `処理B Case Else `処理C End Select End Sub

  • Select Case文でこのようなことは可能でしょうか?

    こんにちは。 「Select Case」の条件の一つに、文字列で○○を含むというのは指定できるのでしょうか? 例えば・・・ Select Case strName Case "ABC" 処理1 Case "D"を含む 処理2 Case Else 処理3 End Select 上記の様なことがしたいのですが、可能でしょうか? 可能でしたら、「"D"を含む」の部分はどのように書いたらいいですか?? 教えてください。宜しくお願いしますm(_ _)m

  • ExcelVBA Select Caseについて

    Select Case Cells(i, k) Case "" Case "AB","EF","G","IJ","K",,"LM","S","MNO","P","T","V","Z" 処理1 Case "CDE","H" 処理2 Case Else 処理3 End Select 上記の文字を条件にして処理を変えたいのですが、まったく同じ条件の分岐がマクロ上に数箇所あります(それぞれ処理は違います) コピーして貼り付けてしまえばいいのですが、見栄えが悪くなるし、訂正が発生したら直すのが大変だし、という状態です 最初に変数か何かに入れておいて、そこで比較できればかなりすっきりするのでは? と思いついたのですが、書き方が分かりません もしかしたら構文の関係で出来ないのかもしれませんが、できるとしたらかなりうれしいです 教えて下さい、よろしくお願いします

  • Select Case の条件式

    VBAの初心者です。 家計簿の品目に対して値段を自動で入力したいです。 以下のように、Select Case の条件式の指定方法で、 列に入力された文字列の条件に対して、 自動でとなりのセルに入力したいのですが解らなくて困っております。 Sub TEST() ' A列セルの条件(文字列)でとなりのセルに文字列を入れたい Select Case Range("A1").Value 'A1をどうすればいいのでしょうか。 Case "a": Range("列のセルのとなりに入力したい").Value = "リンゴ" Case "o": Range("列のセルのとなりに入力したい").Value = "オレンジ" Case "b": Range("列のセルのとなりに入力したい").Value = "バナナ" Case Else: Range("列のセルのとなりに入力したい").Value = "error" End Select End Sub ご存じの方がおられましたら教えていただけませんでしょうか。 よろしくお願いします。

  • select case文について

    VB6.0のSelect Case文について質問です。 現在、ある文字列(mojiretu)の中から特定の文字を検索して その文字が文字列(mojiretu)の中に存在したらチェックボックスにチェックという一連の処理を行いたいのですがうまくいきません>< このSelect Case文のどこを直すべきでしょうか? select case mojiretu case instr(mojiretu,"abc") chk1.value=1 case instr(mojiretu,"def") chk2.value=1 case else chk3.value=1 end select

  • ExcelVBAで

    お世話になってます。 ExcelVBAのSelect Caseについての質問です。 例えば、 Select Case 得点 Case Is>=80 評価="優" Case Is>=70 評価="良" ・ ・ ・ とあります。 ここで、条件の80以上というのを決まった値ではなくセルの値としてできないのでしょうか?例えばDの列の値を条件として設定できないのでしょうか? また、評価="優"というのも、決まった値ではなくEの列といったようにできないのでしょうか? 教えて下さい。

  • Select case の条件にOrは使えない???

    いつもお世話になっています。 ASP(VBScript)でプログラミング中です。 多分VBでは出来たと思うのですが、 Select case A case 1 Or 2       処理A End Select のように、Aが1でも2でも通って欲しい処理があるのですが、 上記のように書いた場合 Aが1でも2でも 処理Aを通ってくれません。 こういう記述の仕方って出来ませんでしたっけ? Select case A case 1       処理A   case 2 処理A End Select のように2回同じことを書かなきゃいけないんでしょうか・・・ それとも何か他のところでミスってるだけで、こういう書き方はOKなのでしょうか?困ってます。よろしくお願いします。

  • Select Case組み合わせ条件について

    例えば、「Aの値」&「Bの値」で処理をする場合には Select Case "A"&"B" Case "11" '(A=1&B=1の場合) で処理できると思うのですが、「B=1~5」として組み合わせることは可能でしょうか? 現在、下記のようにSelect文の中にSelectを組み合わせていますが、 どうにか上記のようにひとつのSelect文で処理できないかな~と思っています。 Select Case "A" Case 1 Select Case "B" Case 1 To 5 ご存知の方がいらっしゃいましたら、ぜひご回答の程お願いいたします。

  • Select Caseでorは使えないのでしょうか?

    Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" Or "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub これだとエラーになるのですが ケースが「あ」もしくは「い」の場合は同じ処理をしたい場合はどうすればいいのでしょうか? Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" MsgBox "「あ」もしくは「い」です。" Case "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub このコードをまとめるはどうすればいいのでしょうか? よろしくお願い致します。

専門家に質問してみよう