ここから本文です

VBAマクロについてです。「Nextに対応するForがありません。」と出てくるのですが...

ym4********さん

2013/2/508:53:24

VBAマクロについてです。「Nextに対応するForがありません。」と出てくるのですがどうすればいいかわかりません。具体的におうすればいいか教えてください。

チェックボックスをつかったマクロです


Dim i As Integer
For i = 9 To 19
Dim k As Integer
For k = 8 To 19


If Cells(3, 7).Value = "TRUE" Then
If Cells(5, 7).Value = "FALSE" Then
Cells(8, 13).Value = "2008年-2009年"
Cells(i, 13).Value = Cells(i, 11).Value - Cells(i, 12).Value
End If




ElseIf Cells(5, 7).Value = "TRUE" Then
If Cells(3, 7).Value = "FALSE" Then
Cells(8, 13).Value = "2009年-2008年"
Cells(i, 13).Value = Cells(i, 12).Value - Cells(i, 11).Value
End If



ElseIf Cells(3, 7).Value = "FALSE" Then
If Cells(5, 7).Value = "FALSE" Then
Cells(k, 13).Value = ""
End If


ElseIf Cells(3, 7).Value = "TRUE" Then
If Cells(5, 7).Value = "TRUE" Then
Cells(k, 13).Value = ""
End If

Next i
Next k

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
29,910
回答数:
5
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

リクエストマッチ

編集あり2013/2/513:29:50

    
まず、見た感じで・・・
>「Nextに対応するForがありません。」と出てるようですが、
実際は、End If が1ヶ所抜けているためと思います。
コードを記述するときにキチンとインデントを付けていますか?

・プロシージャ内で使用する変数は、プロシージャ内の先頭に纏めて宣言します。
> Dim i As Integer
・シートの行に使用する変数は、Long型を適用します。
> チェックボックスをつかったマクロです
> If Cells(3, 7).Value = "TRUE" Then
・この ↑ Cells(3,7)が、チェックボックスのLinkedCellになっていて
その値を比較するつもりの"TRUE"(文字列)であれば、
このIfの論理式は、Trueになることは、無いと思います。
Boolean型のTrue か False かと。
もし、文字列を比較するならValueではなく
If Cells(3, 7).Text = "TRUE" Then とすべきかと。

まぁ、やろうとしている詳細は、分かりませんが、こんな感じかな。

Sub test()
Dim i As Long
Dim k As Long
For i = 9 To 19
    For k = 8 To 19
        If Cells(3, 7).Value = True Then
            If Cells(5, 7).Value = False Then
                Cells(8, 13).Value = "2008年-2009年"
                Cells(i, 13).Value = _
                        Cells(i, 11).Value - Cells(i, 12).Value
            End If
        ElseIf Cells(5, 7).Value = True Then
            If Cells(3, 7).Value = False Then
                Cells(8, 13).Value = "2009年-2008年"
                Cells(i, 13).Value = _
                        Cells(i, 12).Value - Cells(i, 11).Value
            End If
        ElseIf Cells(3, 7).Value = False Then
            If Cells(5, 7).Value = False Then
                Cells(k, 13).Value = ""
            End If
        ElseIf Cells(3, 7).Value = True Then
            If Cells(5, 7).Value = True Then
                Cells(k, 13).Value = ""
            End If
        End If '      <--- 抜けている
    Next k '         <--- k と i が逆
Next i '             <---     〃
'(キチンとインデントを付けてk & i は省略する)
End Sub

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

prs********さん

2013/2/610:35:13

次の行を訂正しました。エラーはでませんでした。
6, 10, 11, 15, 16, 19, 20, 23, 24 確認して下さい。
Dim i As Integer
For i = 9 To 19
Dim k As Integer
For k = 8 To 19


If Cells(3, 7).Value = "TRUE" Then
ElseIf Cells(5, 7).Value = "FALSE" Then
Cells(8, 13).Value = "2008年-2009年"
Cells(i, 13).Value = Cells(i, 11).Value - Cells(i, 12).Value
End If




If Cells(5, 7).Value = "TRUE" Then
ElseIf Cells(3, 7).Value = "FALSE" Then
Cells(8, 13).Value = "2009年-2008年"
Cells(i, 13).Value = Cells(i, 12).Value - Cells(i, 11).Value
End If



If Cells(3, 7).Value = "FALSE" Then
ElseIf Cells(5, 7).Value = "FALSE" Then
Cells(k, 13).Value = ""
End If


If Cells(3, 7).Value = "TRUE" Then
ElseIf Cells(5, 7).Value = "TRUE" Then
Cells(k, 13).Value = ""
End If

Next k
Next i

por********さん

リクエストマッチ

2013/2/512:50:54

こんにちは。
end ifがひとつたりません。
nextの手前に追加。

dim をfor の内側にしない。

next は、iなどを設定しないでいいです。 いれこの問題になるので。

エラーメッセージの原因はifの構造です。
(コンパイルエラーと論理エラーと複数になっています)

rio********さん

リクエストマッチ

2013/2/509:16:58

別件ですが。

Dim i As Integer
For i = 9 To 19
Dim k As Integer
For k = 8 To 19

これだと変数:kは何度も
変数宣言されちゃいますよ。

Dim i As Integer
Dim k As Integer

For i = 9 To 19
For k = 8 To 19

こうじゃないですかね?

jta********さん

2013/2/509:04:41

Dim i As Integer
For i = 9 To 19
Dim k As Integer
For k = 8 To 19
(中略)
Next i
Next k

↑これではiのループとkのループがちゃんと入れ子になっていませんよ。少なくとも
For i = 9 To 19
For k = 8 To 19
(中略)
Next k
Next i
の形でないとループの入れ子にならない。

# それでうまくいくかどうかはわからんけど、「Nextに対応するForがありません。」っていうエラーが出るのは上記のことが理由だと思う。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる