- ベストアンサー
VBAの算数とプログラミングの式の違い
- VBAにおいて算数とプログラミングの式は異なる扱いとなります。
- 算数では左から右に計算が進みますが、VBAでは式の逆順で計算されます。
- したがって、VBAの式では「i + 1」のように逆順で書く必要があります。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- プロシージャーの外で宣言した変数の値の破棄の仕
プロシージャーの外で宣言した変数の値の破棄の仕方について教えてください。 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i End Sub ++++++++++++++++++ を実行すると、どんどん値が増えていきますが、 回避するには、 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i i = 0 End Sub ++++++++++++++++++ とするしかないのでしょうか? ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i Set i = Nothing End Sub ++++++++++++++++++ としたら、エラーになりました。
- ベストアンサー
- Visual Basic
- Excel2007VBAプロシージャの引数について
●質問の主旨 下記コードのうち、 buf = buf & msg & vbCrLfについて 1.右辺の変数bufはどんな役割があるのでしょうか? 2.右辺のbufを省略したら、メッセージボックスに 表示される「Excel」の文字は3つから1つになります。 これはなぜでしょうか? ご存知の方ご教示よろしくお願いします。 ●コード Sub Sample8() Call Sample9("Excel", 3) End Sub Sub Sample9(msg As String, n As Long) Dim i As Long, buf As String For i = 1 To n buf = buf & msg & vbCrLf Next MsgBox buf End Sub
- ベストアンサー
- Visual Basic
- VBA 100億になると#が自動で付く
下記のコードを見てください。 Option Explicit Sub test1() Dim i As Long i = 1000000000 End Sub Sub test2() Dim i As Long i = 10000000000# End Sub test2の#は私が付けたものではありません。 test1より一つ多く0を付けたら勝手に付きました。 どうしてなのでしょう? 不思議です。
- ベストアンサー
- オフィス系ソフト
- エラーメッセージはコピペできないのでしょうか?
MsgBoxはctrl+cでコピペできるのですが エラーメッセージはコピペできないのでしょうか? Sub Sample() Dim i As Long i = "a" End Sub でエラーを発生させて、コピーしてみても何も起こりません。
- ベストアンサー
- Excel(エクセル)
- 奇数・偶数の判断 VBA
Sub Macro1() Dim i As Long i = 1 For i = 1 To 10 If i = ? Then '偶数ならと言うコード MsgBox "偶数です" Else MsgBox "奇数です" End If Next End Sub ここまでは自分で作れたのですが、iが奇数か偶数かを判断するコードがわかりません。 ご教授よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- vbaで配列に値を格納する場合
vbaで配列に値を格納する場合 変数の宣言はどちらを使った方が良いのでしょうか? Sub Sample1() Dim i As Long Dim myStr As String Dim tmp() As String myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub か Sub Sample1() Dim i As Long Dim myStr As String Dim tmp As Variant myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub でも問題なく動くのですが、 Variant型での宣言はあまりしない方が良いですか? あと Dim tmp() As String ならエラーにならないのですが Dim tmp As String だとエラーになってしまう理由がよくわからないので教えて頂けますか?
- ベストアンサー
- オフィス系ソフト
- VBAのプログラムでCheckboxの使い方
すみません。教えてください。 チェックボタンオブジェクト名を配列に格納したいのですが、可能でしょうか。 <内容> 例えば、チェックボタンオブジェクト名がcheckbox1~checkbox4まで在ったとき、"checkbox & 変数" にしたいのです。 <Sample> Sub CHECKBOX() Dim i As long For i = 1 To 4 With Worksheets(Sheet_No) On_Off(i) = .Controls("CheckBox" & i).Value End With Next i MsgBox (On_Off(2)) End Sub
- ベストアンサー
- Visual Basic
- VBAのシートイベントで教えてください
シートのN4以下で、既に同じ番号があれば「既に同じ番号があります」 と表示するようにしたく、下のように書きましたが、肝心な部分 の、どのように同じ番号をみつけるようにすのかわかりませんでした。 教えていただけないでしょうか。宜しくお願いします。 Private Sub worksheet_change(ByVal target As Range) Dim 範囲左 As Integer Dim 範囲右 As Integer Dim 範囲上 As Integer 範囲左 = 1 範囲右 = 16 範囲上 = 4 With target 'if '指定した範囲の列Nに既に同じ番号や文字列があれば MsgBox "既に同じ番号があります。" End If End With End Sub
- ベストアンサー
- オフィス系ソフト
- エラーが発生した場合は VBA
Sub Sample() On Error GoTo Err1 Dim i As Integer i = "あ" '←ココで構文エラーとなる。 MsgBox "あ" Debug.Print "無事終了します" Exit Sub Err1: Debug.Print "エラーになりました" i = 1 Resume Next 'エラーの発生した次の行から処理を続行します。 End Sub このようなエラー処理で エラーが発生した場合は MsgBox "あ" ではなく i = "あ" '←ココで構文エラーとなる。 に戻る事は出来ないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA2010 MsgBox
Sub 重複() Dim i As Long, j As Long For i = 6 To 500 For j = 3 To 3 If WorksheetFunction.CountIf(Range("C6:C500"), Cells(i, j)) > 1 Then Cells(i, j).Interior.ColorIndex = 6 End If Next j Next i End Sub このVBAに重複が何件ありますよというメッセージを出したいです。 MsgBoxの入れ方を教えてください。
- ベストアンサー
- Excel(エクセル)
お礼
やはりだめですね。ありがとうございました。