• ベストアンサー

Access ○or△文の書き方

2003です。 月のコントロールを作りました。 Me.月 = Year(Now) としています。 そこから、10月か11月か12月と、その他を分けたいです。 If Me.月 = 10 Or 11 Or 12 Then 1番 else 2番 end if としてみました。 実行してみたら、今4月なので、 2番を通ってくれると思いきや、 何故か1番を通っていました。 If Me.月 = 10 Then としてみたら、ちゃんと2番を通りました。 Case 10 to 12   1番 Case else   2番 とした場合も、2番を通ってくれました。 現在、この方法で、応急処置しています。 orを入れると1番を通ってしまうように見えるのですが、 何故なのでしょうか。

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

  • ベストアンサー
回答No.4

記述ミスった 【正】 'b = 4のとき b = 4 'ちなみにすべてに=を付ける場合 If (((b = 10) Or (b= 11)) Or (B=12)) Then Msgbox("真") Else ' (( 0 Or 0 ) Or 0) ' = (0 Or 0 ) '= 0 '= false Msgbox("偽") End If

-Jelly-
質問者

お礼

ご丁寧にどうもありがとうございました。 >a = (x < 10) '当方環境だとaに-1が代入された 同じく-1でした。 何か不思議ですよねぇ。 カッコもよく分からず今まで 算数の計算以外では使ったことなかったです。 関係ないんですけどhogeって何なんでしょうね(笑 自分のまわりにはhoge派はあんまりいないですけど… aaaaとかiとかixとかが多いんですけど、なんか面白いですね

その他の回答 (3)

回答No.3

Option Explicit Sub hoge() Dim a As Integer Dim x As Integer Dim b As Integer '0はfalse If 0 Then MsgBox ("0はtrueです") Else MsgBox ("0はfalseです") End If '0以外はtrue If 1 Then MsgBox ("1はtrueです") Else MsgBox ("1はfalseです") End If If -4 Then MsgBox ("-4はtrueです") Else MsgBox ("-4はfalseです") End If x = 5 a = (x < 10) '当方環境だとaに-1が代入された If x < 10 Then MsgBox ("x<10は" & CStr(a)) 'trueなので実行される End If If 10 Or 12 Then ' http://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83%E3%83%88%E6%BC%94%E7%AE%97 '10 = 1010 '12 = 1100 '14 = 1110 → 0以外だからtrue MsgBox ("10 or 12は" & CStr(10 Or 12)) End If '実際のコードではMe.月だが、書くの面倒くさいのでbで勘弁して 'b = 4のとき If (((b = 10) Or 11) Or 12) Then 'http://msdn2.microsoft.com/ja-jp/library/fw84t893(VS.80).aspx '(b = 10) = 0 '((b = 10) Or 11) = (0 or 11) = 11 '(((b = 10) Or 11) Or 12) = 11 or 12 = 15→0以外なのでTrue MsgBox (CStr(((b = 10) Or 11) Or 12)) ' 15 End If End Sub

回答No.2

If Me.月 = 10 Or Me.月 = 11 Or Me.月 = 12 Then としなければいけません。

-Jelly-
質問者

お礼

省略したらダメなんですね。 どうもありがとうございました orを使うと分がおかしくなるなんて普通じゃ考えられないというか 仕様として成り立たないですもんね。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

>Me.月 = Year(Now) Me.月 = Month(Now) ですよね。 >If Me.月 = 10 Or 11 Or 12 Then If Me.月 = 10 Or Me.月 = 11 Or Me.月 = 12 Then それぞれに Me.月 = が必要ですよ。

-Jelly-
質問者

お礼

>Me.月 = Month(Now) その通りです。 気付いたらYearと打ってました。すいません。 省略したらダメなんですね。 どうもありがとうございました

関連するQ&A

  • if文からcase文への置き換え

    ピクチャボックスをクリックしたら、チェック ボックスがチェックされるメソッドを作りたいと 思っています。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click 'ここから If sender Is PictureBox1 Then If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If ElseIf sender Is PictureBox2 Then If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End If 'ここまで End Sub 上記のif文をCase文に置き換えたくて、 'ここから Select Case sender Case PictureBox1 If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If Case PictureBox2 If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End Select 'ここまで 上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。 Case文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?

  • AND、OR文にすると選択後の編集が出来ない

    Private Sub 選択_Click() If NewRecord Then MsgBox "編集できません。選択しなおしてください。" Me.Undo End If End Sub 上記の命令が効いていないようです。メッセージも出ません。 Private Sub 編集_Click() Dim strFil As String strFil = "[選択]=" & True DoCmd.OpenForm "編集F", , , strFil 'DoCmd.Close acForm, "スタート画面F" '選択.Value = Null End Sub 上記のスタート画面は消したくないので’を付けてあります。 選択.Value=Null でコンパイルエラーが発生していますので’を付けています。 Private Sub 検証_Click() Dim strFil As String If IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then MsgBox ("コンボボックスの選択がされていません") Exit Sub End If If Not IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then strFil = "[ステータス] ='" & Me![ステータスリスト] & "'" End If If IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then strFil = "[申請内容] = '" & Me.申請リスト & "'" End If If Not IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then If MsgBox("二つの条件でAND検索をしますか", vbYesNo) = vbYes Then MsgBox ("二つの条件でAND検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'" Else MsgBox ("二つの条件でOR検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" End If End If Me.Filter = strFil Me.FilterOn = True End Sub 上記はそのままです。 選択のチェックボックスにチェックを入れてもそのデータが編集画面に反映されない現象が発生してしまいました。どこが悪いのか教えて頂ければ幸いです。

  • アクセスvba if文の記述方法

    検索フォームを作成しました。 入力項目は「氏名」「カナ」で入力チェックをおこなっております。 (未入力)メッセージを表示「未入力です」 (入力有)結果一覧のフォームを表示 未入力チェックは正常に処理されておりメッセージが表示されます。 項目に値を入力した場合フォームが起動しません。 if文から外した場合は正常に実行されます。 この条件の場合if文でどのように記述したらよいのでしょうか。 宜しくお願いします。 Private Sub 検索_Click() Dim mct As Control Dim flg As Boolean flg = False For Each mct In Me.Controls  If mct.ControlType = acTextBox Then   If mct.Tag = "Check" Then    If Not IsNull(mct) Then     flg = True     Exit Sub    End If   End If  End If Next mct If flg = True Then  Dim str As String  str = "[氏名] Like ""*" & Me!氏名 & "*"" And [カナ] Like ""*" & Me!カナ & "*"""  DoCmd.OpenForm "結果一覧", , , str Else  MsgBox ("未入力です") End If End Sub

  • VBA の if 文の質問です

    下記のようなif文を実行したのですが Or のあとの条件が無視されてしまっているようなのですが、このような書き方ではだめなのでしょうか? else if で地道に分岐させたほうがいいのでしょうか? If Cells(1, 1).Value <> "" Or Cells(1, 2).Value <> "test" Or Cells(1,3) <> 0 Then 処理内容 End If

  • CASE文での問い合わせ

    下記のSQLでWHEREでnow_tが存在しないとでてSQLを実行できません。 どのようにしたらnow_tをWHEREで判定できるでしょうか。 WHEREが先に実行される為に存在しないというエラーがでるのは わかるんですが、でないようになんとかできないでしょうか? SELECT CASE WHEN s = 1 THEN 1 ELSE 2 END AS now_t FROM test WHERE now_t = 1

  • VBAでif文にorを使う場合の仕様

    http://www.relief.jp/itnote/archives/vba-if-or.php このページにも書かれてあるのですが、 Sub textss() aaa = 2 If aaa = 0 Or 1 Then bbb = 1 ElseIf aaa = 2 Then bbb = 2 End If ccc = bbb End Sub を実行すると cccには2が代入されそうなのですが、実際には1が代入されてしまいます。 If aaa = 0 Or aaa = 1 Then と入力する必要があります。 それでは、 If aaa = 0 Or 1 Then とした時、プログラムではどういう処理がなされているのでしょうか?

  • 2つの選択をOr、とAndに分けて操作したい

    現在、考えてorの場合とandの場合とIF文で作ってみましたが、うまくいきません。どうぞお知恵を拝借願えないでしょうか。 Private Sub 検証_Click() If "[ステータス]= '" & Me.[ステータスリスト&] Then Me.Filter = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" Me.FilterOn = True If "[ステータス]= '" & Me.[申請内容&] Then Me.Filter = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" Me.FilterOn = True Else Me.Filter = "[申請内容] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" End If End If Me.Filter = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'" Me.FilterOn = True End Sub

  • Accessの検索フォーム(CLng)で。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 (項目1-5は数値データなのであいまい検索はしたくありません。) 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If If Me!項目1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 = " & CLng(Me!項目1.Value) & ")" condKoumoku2 = "(T_マスタ.項目2 = " & CLng(Me!項目1.Value) & ")" condKoumoku3 = "(T_マスタ.項目3 = " & CLng(Me!項目1.Value) & ")" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempCond = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '((OR OR))' の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? Access2000です。

  • エクセル

    TEXTBOX1 button1 button2 button3 TEXTBOX2 button4 button5 button6 comanndobuton1 Private Sub CommandButton1_Click() Dim cnt As Long cnt = Cells(Rows.Count, 1).End(xlUp).Offset(1).Row If Me.OptionButton1 = True Then Cells(cnt, 1) = Me.TextBox1 Else Cells(cnt, 1) = "" If Me.OptionButton4 = True Then Cells(cnt + 1, 1) = Me.TextBox2 Else Cells(cnt + 1, 1) = "" End If End If If Me.OptionButton2 = True Then Cells(cnt, 2) = Me.TextBox1 Else Cells(cnt, 2) = "" If Me.OptionButton5 = True Then Cells(cnt + 1, 2) = Me.TextBox2 Else Cells(cnt + 1, 2) = "" End If End If If Me.OptionButton3 = True Then Cells(cnt, 3) = Me.TextBox1 Else Cells(cnt, 3) = "" If Me.OptionButton6 = True Then Cells(cnt + 1, 3) = Me.TextBox2 Else Cells(cnt + 1, 3) = "" End If End If End Sub これで実行するとbutton1がtrueでありbutton4がtrueのように    bu2とbu5 bu3とbu6が一緒の時だけうまく以下なのですが ご指摘いただけないでしょうか

  • Access2000のVBAについて

    下記のプログラムだと挿入が可能になります。 Private Sub 削除_コマンド_Click() If IsNull(Me.社員コード) Then MsgBox ("社員コードが入力されていません") Else Dim strSQL As String strSQL = "INSERT INTO 社員情報テーブル(社員コード,作成日) " _ & " VALUES ('" & Me.社員コード & "', now());" DoCmd.RunSQL strSQL End If End Sub しかし、下記のプログラムだとinsert文の『Me.社員コード』で エラーが発生します。 エラーメッセージは 『メソッドまたはデータメンバが見つかりません』 と表示されます。 上と下とどう違うのでしょうか。 Private Sub 削除_コマンド_Click() If IsNull(Me.社員コード) Then MsgBox ("社員コードが入力されていません") Else Dim strSQL As String strSQL = "INSERT INTO 社員情報テーブル(社員コード,氏名(氏),作成日) " _ & " VALUES ('" & Me.社員コード & "','" & Me.氏名(氏) & "', now());" DoCmd.RunSQL strSQL End If End Sub

専門家に質問してみよう