[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『for next 文について』(nori)
ディスクトップの「全国追加名簿」には、県名含み住所の住所列が有ります。
特定の3県の住所を、県名と県名無し住所に分離表示したく、次のマクロを作成しました。
[ステップイン(S)]で確認したところ、中ほどの「If todofuken = “” Then Next n」のところで、
「コンパイルエラー: Nextに対応するForがありません。」とのエラーが出てしまします。
初心者で解決できません。解決法をご教示ください。
Dim strleft, todofuken, moto, jyusho As Variant
Workbooks.Open Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\全国追加名簿.xlsx"
For n = 2 To 16 moto = Cells(n, 12) strleft = Left(Cells(n, 12), 4)
If strleft = "神奈川県" Then todofuken = "神奈川県" ElseIf strleft = "和歌山県" Then todofuken = "和歌山県" ElseIf strleft = "鹿児島県" Then todofuken = "鹿児島県" Else todofuken = "" End If
If todofuken = "" Then Next n End If ‘----県名欄(11列)に県名を表示 Cells(n, 11) = todofuken '----件名の4文字県を削除する。 jyusho = Mid(moto, 5) '----住所欄(12列)には県名削除の住所を表示。 Cells(n, 12) = jyusho Next n
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(白茶) 2023/11/16(木) 12:14:40
気持ちを忖度するとこんなことですか?
Sub test() Dim strleft, todofuken, moto, jyusho As Variant
Workbooks.Open FileName:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\全国追加名簿.xlsx" For n = 2 To 16 moto = Cells(n, 12) strleft = Left(Cells(n, 12), 4) If strleft = "神奈川県" Then todofuken = "神奈川県" ElseIf strleft = "和歌山県" Then todofuken = "和歌山県" ElseIf strleft = "鹿児島県" Then todofuken = "鹿児島県" Else todofuken = "" End If
If todofuken <> "" Then '----県名欄(11列)に県名を表示 Cells(n, 11) = todofuken '----件名の4文字県を削除する。 jyusho = Mid(moto, 5) '----住所欄(12列)には県名削除の住所を表示。 Cells(n, 12) = jyusho End If Next n End Sub
Next n というので、次のnにジャンプしたいという気持ちでしょうけど、 Nextに そういう使い方はありません。(★ 既にご指摘いただいています。)
その他のコードについても、改善したほうがよいところはありますが、保留しておきます。
その他。 ・モジュールの先頭に Option Explicitと入れて下さい。(自動的に挿入される設定にできます。そうしておくことを推奨) ・そして、変数は必ず宣言するようにしてください。 ・また、変数はVariantではなく、文字列変数なら、As Stringというように宣言してください。 (xyz) 2023/11/16(木) 12:24:31
こんな感じでも同じ動作になりますね。
Sub test() Dim n As Long, moto As String, strleft As String
Workbooks.Open Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\全国追加名簿.xlsx" For n = 2 To 16 moto = Cells(n, 12) strleft = Left(moto, 4) Select Case strleft Case "神奈川県", "和歌山県", "鹿児島県" Cells(n, 11) = strleft Cells(n, 12) = Mid(moto, 5) End Select Next n End Sub
左4文字が"神奈川県", "和歌山県", "鹿児島県"のどれかなら分割すると、 シンプルに考えればコードもシンプルになります。
(hatena) 2023/11/16(木) 14:01:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.