• ベストアンサー

selectステートメント

Masazo-の回答

  • ベストアンサー
  • Masazo-
  • ベストアンサー率48% (12/25)
回答No.1

Select Caseステートメントの記述方法が違います。 「Select Case p」とするなら「Case 10」ですね。 「Case is > 10」のような感じで使えればいいのですが 使えるかどうかはわかりません。 のでかっこよく(自分が思っているだけですけど) sub test(p) select case True case (p<10) response.write "A" case (p>=10 and p<20) response.write "B" case (p>=20) response.write "C" end select end sub ってのはどうですか。(動作確認はしていませんので・・・)

関連するQ&A

  • SELECTボックスの内容を動的に変えるには

    2つのSELECTボックスを用意し、1つ目のSELECTボックスの内容により 2つめのSELECTボックスの内容(項目数も含め)を変える方法を教えてください。 下記のようなHTMLを作ってみましたが、2つ目のSELECTボックスに項目がないため「オブジェクトがありません」のエラーが出ます。 ------------------------------------------------------- <html> <head> <SCRIPT language="vbscript"> <!-- option explicit sub selchng() dim strsel strsel = sel1.selectedIndex Select Case strsel Case "1" sel2.item(0).value = "1" sel2.item(0).text = "1" sel2.item(1).value = "2" sel2.item(1).text = "2" Case "2" sel2.item(0).value = "a" sel2.item(0).text = "a" sel2.item(1).value = "b" sel2.item(1).text = "b" sel2.item(2).value = "c" sel2.item(2).text = "c" Case else sel2.item(0).value = "A" sel2.item(0).text = "A" End Select end sub --> </SCRIPT> </head> <body> <select name="sel1" onchange=selchng()> <option value="1" selected>1</option> <option value="2" >2</option> <option value="3" >3</option> </select> <select name="sel2"> </select> </body> </html>

  • fortran 外部サブルーチンの読み込みについて

    c c main.f c dimension x(2) x(1)=1 x(2)=2 y=5 call sub(x,y,z) write(*,*)'x1=',x(1) write(*,*)'x2=',x(2) write(*,*)'y=',y write(*,*)'z=x1+x2+y=',z stop end c---------------------------------- c sub.f c subroutine sub(a,b,c) dimension a(2) c=a(1)+a(2)+b write(*,*)'b=',b return end  以上のようなプログラムをmain.fとsub.fに分離して、別々にコンパイル。最後にそれぞれの実行ファイルをつなげるといったことがしたいのですが、どのようにすればいいのでしょうか。 サブルーチンをメインプログラムが参照するといったことがしたいです。

  • VBAのプロシージャについて質問です

    以下にA、B2つのプロシージャを書きます。 A  Sub kubun( ) Dim taipu As String Select Case Range("C27").Value Case 100,110,120 taipu="乗用車" Case 201,211,221 taipu="RV・4WD" Case 300,305,310 taipu="スポーツカー" Case Else taipu="正しいコードを入力してください" End Select MsbBox taipu ←←←← End Sub B  Sub iro( ) Select Case Range("C34").Value Case "RED" Range("C34").Font.ColorIndex=3 Case "BLUE" Range("C34").Font.ColorIndex=5 Case "PINK" Range("C34").Font.ColorIndex=7 Case "GREEN" Range("C34").Font.ColorIndex=10 Case Else MsbBox "RED,BLUE,PINK,GREENのいずれかを入力してください"←←←←     End Select End Sub A,Bの←←←←の部分ですが、End Selectの前に入れるか、 後ろに入れるかはどうやって決めるのですか。 こういう場合は前に入れる、こういう場合は後ろに入れるといった 決めごとを教えてください。 宜しくお願いいたします。

  • Tiny Basicのプログラムです。。

    Tiny Basicのプログラムで 試験の成績を入力し、30点未満なら青点、30点以上50点未満なら赤点、50点以上なら合格と表示するプログラムを作成せよ。青点、赤点、合格を判定する部分は副プログラムとして作成せよ。 という問題があったんです。 それで僕は Cls input A Call Q Sub Q END Select Case A=A Case A=<29 print"青点" Case A=>50 print"合格" Case else print"赤点" End Select End sub というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?

  • Select Caseステートメント 「Is」

    VBAについて質問です。 http://excelvba.pc-users.net/fol6/6_2.html の Sub test() Dim intPoint As Integer intPoint = InputBox("点数を入力してください") Select Case intPoint Case Is >= 80 MsgBox "優です。" Case Is >= 70 MsgBox "良です。" Case Is >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub は、 なぜ Sub test2() Dim intPoint As Integer intPoint = 75 Select Case intPoint Case intPoint >= 80 MsgBox "優です。" Case intPoint >= 70 MsgBox "良です。" Case intPoint >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub では、だめなのでしょうか? test2を実行すると、 Case Elseの MsgBox "再テストです。" になってしまいます。 本当は、"良です。"が正しいのに。 testをF8でステップインしながら実行した時に、 「Case Is >= 80」 の来た時に、isにカーソルをあてても、InputBoxで入力した数値が表示されません。 なぜ、この場合、Case intPoint >= 80 ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

  • 【Access】SELECT文の書き方について

    下記の【クエリ(Q_Select)】を実行すると【現在のクエリ実行結果】のようになりますが、これを下記の【希望するクエリ実行結果】のような表示にしたいと思います。 その為、同じT_Sub.main_idがある場合は、最新のT_Sub.dayのフィールド列のみ抽出し、同じT_Sub.main_idで最新のT_Sub.dayが複数あった場合は一番大きいT_Sub.idのフィールド列を抽出しようと思ったのですが、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 【現在のクエリ実行結果】 T_Main.id|field1|T_Sub.id|day|field2 1|A|1|2011/03/01|100 2|A|1|2011/03/02|2000 3|B|2|2011/03/04|400 4|B|2|2011/03/03|500 5|C|3|2011/03/10|300 6|C|3|2011/03/10|200 【希望するクエリ実行結果】 T_Main.id|field1|T_Sub.id|day|field2 2|A|1|2011/03/02|2000 3|B|2|2011/03/04|400 6|C|3|2011/03/10|200 【クエリ(Q_Select)】 SELECT T_Main.id, T_Main.field1, T_Sub.id, T_Sub.day, T_Sub.field2 FROM T_Main INNER JOIN T_Sub ON T_Main.id = T_Sub.main_id; 【テーブル(T_Main)】 id|field1 1|A 2|B 3|C 【テーブル(T_Sub)】 id|main_id|day|field2 1|1|2011/03/01|100 2|1|2011/03/02|2000 3|2|2011/03/04|400 4|2|2011/03/03|500 5|3|2011/03/10|300 6|3|2011/03/10|200 以上、よろしくお願いします。

  • ダブルクリック 条件 分岐 

    こんばんは VBAの勉強をはじめたばかりの素人です。 いろいろ調べたのですが自分の学習不足もあってかなかなか 回答に結びつかなかったので質問させてください。 シートの("A:A")をダブルクリックしたらフォーム1を表示する シートの("B:B")をダブルクリックしたらフォーム2を表示する シートの("C:C")をダブルクリックしたらフォーム3を表示する といった簡単なイベントなのですがうまくできません。 '----------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If ActiveCell.Address = ("A:A") Then 1.Show ElseIf ActiveCell.Address = ("B:B") Then 2.Show ElseIf ActiveCell.Address = ("C:C") Then 3.Show End If End Sub '----------------------------------------------- 又は '----------------------------------------------- Private Sub Workbook_Open() ActiveWorkbook.Worksheets("Sheet1").OnDoubleClick = "Test" End Sub Public Sub Test() A列 = 1 B列 = 2 C列 = 3 現在位置列 = ActiveCell.Column 現在位置行 = ActiveCell.Row Select Case ActiveCell.Address Case 現在位置列 = A列 1.Show Case 現在位置列 = B列 2.Show Case 現在位置列 = C列 3.Show End Select End Sub '----------------------------------------------- などがが今の私ができる最大限の内容ですが、全く違うようです。 素人質問で大変申し訳ありません。 勘違いが多々あるかもしれませんが教えてください。 以上宜しくお願いいたします。

  • エクセルVBAでTargetのセルに設定された「名前の定義」の取得方法は?

    例えば、A1、B2、C3セルに「名前の定義」で、それぞれ入力A、入力B、入力C という名前がつけてあります。 それらのセルに入力があった場合、Select Caseで分岐させ作動するマクロをつくりました。 簡略化すると以下のようなもので、一応正しく作動します。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub Select Case Target.Address(0, 0) Case "A1" MsgBox "A処理します。" Case "B2" MsgBox "B処理します。" Case "C3" MsgBox "C処理します。" End Select End Sub ただ、せっかくセルに名前を定義してあるのに、個々の入力セルの判定をTarget.Addressでしているのが不満です。 ( ̄~ ̄;) 定義された名前を使えないかと以下のようにやってみましたが実行時エラーで「サポートしてません」となってしまいます。 (T.T) Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub Select Case Target.Names.Name 'ここでエラー Case "入力A" MsgBox "A処理します。" Case "入力B" MsgBox "B処理します。" Case "入力C" MsgBox "C処理します。" End Select End Sub どうやったら、Targetに設定されている名前を取得できるのでしょうか? (^∇^`)? 実際の例はもっと対象が多いので、Select Caseを使わない以下の方法は避けたいのです。 If文の羅列(これでも正しく作動はします。) Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub If Not Intersect(Target, Range("入力A")) Is Nothing Then MsgBox "A処理します。" ElseIf Not Intersect(Target, Range("入力B")) Is Nothing Then MsgBox "B処理します。" Else MsgBox "C処理します。" End If End Sub なにとぞよろしくお願いします。 (o。_。)oペコッ

  • ずばりこのステートメントを教えてください

    Sheet2から右へ最終のシートまでのB5:K15の範囲を、Sheet1のA1から順に隙間無く下へ貼り付けていきたいのですが、そのステートメントをSubからEnd Subまで、教えてください。 他の質問など似たような感じのモノはありますが、応用が利かないもので・・・。 よろしくお願いします。

  • For Each ~ Nextステートメント

    今、1つのブックに200前後のワークシートがあるとします。 For Each ~ Nextステートメントを使って以下のようなプログラムを全てのワークシートに適用したいと考えています。 Sub test() Dim mySht As Worksheet For Each mySht In Worksheets If Range("A2").Value <> "1990/01/31" Then Rows("2:2").Select Selection.Insert Shift:=xlDown Range("A2").Select ActiveCell.FormulaR1C1 = "1990/01/31" End If If Range("A3").Value <> "1990/02/28" Then Rows("3:3").Select Selection.Insert Shift:=xlDown Range("A3").Select ActiveCell.FormulaR1C1 = "1990/02/28" End If ・・・(中略)・・・ Next End Sub しかし、これを実行しても、うまくいきません。 全てのワークシートについて、必ずしもA2のセルが 1990/01/31であるとは限らないことが原因かとは思うんですが、自身ではどうしてもうまくプログラムを書くことが できません。良いお知恵を拝借できればと思います。