• ベストアンサー

EXCELのVBAの中でMOD関数を使う方法

ExcelのVBAを使っていますが VBAのなかに UpDown = "=MOD(cBusNo,2)" という一行をいれているのですが 実行時エラー `13`: 型が一致しません のメッセージが出てしまいます ちなみに Updown とcBusNo は 共に Integer型 Double型の両方 指定しました(cBusNoはあるセルの入力値です) 単純にcBusNoが奇数か偶数かの判断をしたいのですが よろしくお願いいたします

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 算術演算子のModを使用します。 If cBusno Mod 2 Then MsgBox "奇数" Else MsgBox "偶数" End If

viva123
質問者

お礼

迅速な対応とても感謝いたします EXCELの中の関数とどうも混同してしまいます 実ははじめて使うものだったのでマクロの記録をしてVBAエディタに登録してそのまま使いました ダメですよね ありがとうございました 解決しました! VBA自体がよくわかっていないので 罫線を引くときなどはマクロを記録してそれを引用して 使っています 関数も同じように使ってしまいました・・・

その他の回答 (1)

回答No.2

----------------------------- イミディエイトウインドウ ----------------------------- ? "MOD(cBusNo,2)" MOD(cBusNo,2) ? cBusNo mod 2 0 ? 1 mod 2 1 ? 2 mod 2 0 このテストから、"MOD(cBusNo,2)"は文字列型であることが判ります。 更に、mod 演算子の使い方も違っています。 result = number1 Mod number2 これが、Mod 演算子の構文です。 MOD(n, d) = n - d*INT(n/d) というのは、VBAの Mod演算子ではなくExcelのMod関数の使い方。 つまり、Mod演算子とMod関数とは似て非なるものです。 VBAでは、通常はMod関数ではなくMod演算子を使います。 以上、二つの誤まりを正してから・・・。

viva123
質問者

お礼

迅速な対応とても感謝いたします なんだかとても馬鹿なことをしてしまいました 私がベストアンサーに選んだのは実はf_a_007さんでした 一番先に返事をいただいたので・・・ すぐに理解できましたし・・ でも入力するところを間違えたようです 以下のお礼分は間違えた方に送ったメッセージです 後から返事をいただいた方もとても親切でしたが 確認する前に返事をf_a_007さんに送っていると思い込んでました EXCELの中の関数とどうも混同してしまいます 実ははじめて使うものだったのでマクロの記録をしてVBAエディタに登録してそのまま使いました ダメですよね ありがとうございました 解決しました! VBA自体がよくわかっていないので 罫線を引くときなどはマクロを記録してそれを引用して 使っています 関数も同じように使ってしまいました・・・

関連するQ&A

  • エクセルで偶数か奇数かを調べるにはどうすればいいですか?

    エクセルで関数の入ったセルの答えが偶数か奇数かでセルの色を変えたいのですが、 そんなことはできるのでしょうか? 数値の入ったセルはMOD関数などで偶数or奇数の判断が出来るので、条件付書式で偶数セルと奇数セルの色分けが出来たのですが、 数式の入ったセルの答え(表示されている数値)が偶数か奇数かを判断することができず困っています。 もしかして不可能なことなのでしょうか? どなたかご指導下さい。よろしくおねがいします!

  • 再度・・・エクセルVBAで mod関数

    いつもお世話になっております。 先ほどは意味不明な質問をしてしまい申し訳ありませんでした。 再度質問をさせていただきます。 エクセルVBA初心者のも社会人です。 エクセルシート上にコマンドボタンを作成しました。 そのボタンを押す度に二つの命令を交互に繰り返すVBAの記述を考えています。 コマンドボタンを一回押すとセル"A1"の文字の色が白くなり、もう一回押すとセル"A1"の文字の色が青くなるようにしたいです。 つまりコマンドボタンを奇数回押すとセル"A1"の文字の色が白くなり、偶数回押すとセル"A1"の色が青くなるということです。 あえて論理記述にmodを使わなくてもかまいません。 何に使うのかと思う方もいるかもしれませんが、ご教授のほどをよろしくお願いします。

  • エクセルのVBAについて(エクセル2003)

    エクセルのVBAで、セルを下のように指定したのですが If .Row = 3 And .Column = 16 Then ここで、 セル 16(P)の3と、17(Q)の3を結合したら、 実行時エラー'13': 型が一致しません。 というエラーが出てしまいます。 P3とQ3のセルを結合した場合の、番地の記述方法を教えていただけませんでしょうか? マクロに全く無知なため、あさってな質問でしたら申し訳ありません。 よろしくお願いいたします。

  • excelで偶数と奇数のセルの色をわけたい

    点数 55 59 60 63     47 68 66 62  このような集計表で偶数または奇数のセルに色をつけたいです。 ググると「条件付書式」で、=MOD(A1,2)=0 と出てきますが いくら設定しても反映されません。(奇数のセルにも色がつき、MOD=1にすると全部のセルが色がつかない) そもそもなぜ=MOD(A1,2)=0でA1のセルが関係するのかよく分かりません。 A1のセルは関係なく、他の複数のセルに色をつけたいのですが。 以上、よろしくお願い致します。

  • VBAで関数を使うには?

    こんな感じだったとします。   A1      B1 2002/9/2 2002/9/3 2002/9/4 2002/9/5   : このB1にそれぞれの曜日を表示させるVBAを以下のようにしました。 Sub youbi() Dim i As Integer For i = 3 To 10 Cells(i, 3).Value = Weekday(Cells(i, 2), "aaa") Next End Sub もちろんエラーでした。 (メッセージは「型が一致しません」です。) そこで以下のように変更しました。 Sub youbi() Dim i As Integer For i = 3 To 10 Cells(i, 3).Value = "=text(Weekday(b3), ""aaa"")" Next End Sub するときちんと曜日が表示されたのですが、もちろん全部B3のセルの日付の曜日です。 ここを変数にするにはどうしたらいいのでしょうか? とっても簡単なことのように思えますが、意外とハマってしまって抜け出せません。 よろしくお願いします。

  • excel・VBAで奇数・偶数の分岐がうまくいかない。

    一覧が入っているシートから宛名用のシール印刷をするために、VBAを使用しています。 ラベル印刷は ┏━━━━┓┏━━━━┓ ┃ 奇数 ┃┃ 偶数 ┃ ┗━━━━┛┗━━━━┛ みたいな感じです。 奇数:一覧シートの奇数行 偶数:一覧シートの偶数行 ですが、奇数の方はうまく出るのですが、偶数の方が1つおきになってしまいます。 これのどこが間違っているのでしょうか? Worksheets("Sheet1").Select Last = Cells(1).CurrentRegion.Rows.Count For i = 2 To Last Worksheets("Sheet1").Select Yuubin = Cells(i, 1) Name = Cells(i, 6) Dim AllCount As Integer Worksheets("TEST").Select Kotae = i / 2 Amari = i Mod 2 AllCount = i / 12 If Amari = 0 Then Ichi = (((Kotae - 1) * 9) + 1) - AllCount Cells(Ichi, 2) = "〒" & Left(Yuubin, 3) & "-" & Right(Yuubin, 4) Cells(Ichi + 7, 4) = Name & " 様" ElseIf Amari = 1 Then Ichi = (((Kotae - 1) * 9) + 1) - AllCount Cells(Ichi, 17) = "〒" & Left(Yuubin, 3) & "-" & Right(Yuubin, 4) Cells(Ichi + 7, 19) = Name & " 様" & i End If '奇数偶数分岐 Next ' 全件分終るまで よろしくお願いします。

  • Excel条件付で偶数・奇数を判断するには?

    Excel上でセルの値が偶数か奇数かにより色つけをしたく 条件付書式の機能を調べていたのですが 偶数行、奇数行を色付けするには、という例は見つかるのですが セルの値を偶数か奇数かを判断し色付けする という方法が見つかりませんでした。 セル行列数を判断するのではなく、セル値を判断する方法はどうしたらよいのでしょうか。 例 1,3,4,6,7,99,115,11… 2,4,6,8,65,78,… と書かれたシートで偶数は赤文字、奇数は青文字にするには?

  • セルの値が「#VALUE!」の場合 vba

    セルの値が「#VALUE!」の場合、 VBAで If Cells(lastRow, Col_本体価格) = Empty Then とすると、 「実行時エラー 13 型が一致しません。」 となります。 セルの値が「#VALUE!」の場合でも、 VBAでifステートメントを使えるようにするには どうすればいいですか?

  • EXCELのVBAで

    EXCELで、セルの内容をVBAでCSVにしたいのですが・・・ Dim S As String, I As Integer, D As Date I = 123 S = "文字" D = 2005/3/18 Open ・・・ Write #1, I, S, D Close ・・・ とすると、 123,"文字",#2005-03-18# ・・・ となります。 123,"文字",2005/03/18 ・・・ とするには、何か方法ありますか? また、文字の前後についている、"(ダブルコーテーション)を外して、 123,文字,2005/03/18 ・・・ とは出来ませんでしょうか?

  • VBA UsedRangeで選択範囲を取得したい

    セルに aaa bbb ccc と入力し、vbaで Sub Macro() MsgBox ActiveSheet.UsedRange End Sub を実行すると、 型が一致しません。(Error 13) と言うエラーになります。 "$A$1:$D$3"と言うような値を取得したいのですが、どのようなVBAにすればいいのでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう