[[20200421140424]] 『「ステートメントの最後」の表記』(超初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「ステートメントの最後」の表記』(超初心者)

超初歩的な質問ですいません。

Dim i string
Dim k string

  For i = 6 To 11
      k = 4 to 8

と記載しているのですが、k = 4 to 8 部分に「ステートメントの最後」のエラーがでます。
○to×を複数宣言することはできないのでしょうか?

< 使用 Excel:Excel2016mac、使用 OS:Windows10 >


 で、
 k = 4 to 8
 これは何を意味するのか説明しないでエラーが出ると言うのでしょうか?
(BJ) 2020/04/21(火) 14:12

     Dim k     As Long
     Dim s     As String
     Dim fname As String
     Dim i     As String

     Application.ScreenUpdating = False
     For k = 6 To 11
         i = 4 to 8
         s = Cells(4, k).Value
         If s <> "" Then
             fname = ThisWorkbook.Path & _
                     "\" & _
                     Format(s) & _
                     Cells(5, k).Value
             Worksheets(i + 1).Copy
             ActiveWorkbook.SaveAs _
                     FileFormat:=xlOpenXMLWorkbook, _
                     Filename:=fname
             ActiveWorkbook.Close
         End If
     Next
     Application.ScreenUpdating = True

すいません、iとkが逆でした。
sheets(4)〜sheets(8)のうち、データが反映しているシートのみ、別ファイルで個別に名前をつけて保存したいです。

(超初心者) 2020/04/21(火) 14:26


 ですから、

 >i = 4 to 8

 これが何を意図したものか解らないと言っているんです。
 他のコードを見る気はないです。

(BJ) 2020/04/21(火) 14:31


下に記載のコードで、シート4〜8を指定したいものです
(超初心者) 2020/04/21(火) 14:36

 >i = 4 to 8
 >シート4〜8を指定したいものです
 >Worksheets(i + 1).Copy

 上記3つのつながりが見えません。
(BJ) 2020/04/21(火) 14:42

他のファイルで、
 >i = 4 to 8
 >Worksheets(i + 1).Copy
のコードでやりたいことが実行できていたので、それをコピペしています。

>sheets(4)〜sheets(8)のうち、データが反映しているシートのみ、別ファイルで個別に名前をつけて保存したいです。
これが実現できるコードを教えていただけないでしょうか。
(超初心者) 2020/04/21(火) 14:50


 なんかぶつかっったけど、↓的な??

for i = 4 to 8

  for k = 6 to 11
         s = Sheets(i).Cells(4, k).Value
         If s <> "" Then

(BJ) 2020/04/21(火) 14:57


型が一致しませんでした
(超初心者) 2020/04/21(火) 15:03

 ??

 >Dim i string 
(OK) 2020/04/21(火) 15:06

 >>i = 4 to 8
 >>Worksheets(i + 1).Copy
 >のコードでやりたいことが実行できていたので、それをコピペしています。

 本当ですか?
 2007だと、i = 4 to 8 で、コンパイルエラーなんだけど。

 >型が一致しませんでした

 すみません。
 意味が良く解りません。

 他の回答者の返答を待った方が良いですね。
(BJ) 2020/04/21(火) 15:07

 >○to×を複数宣言することはできないのでしょうか?

 To だけじゃなくて

 For 変数 = 初期値 To 終了値 Step 増分値
   繰り返し処理
 Next  

 と、セットで覚えないといけません。

https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/fornext-statement
 

 To は For文の中の1つの要素でしかありません。

 なので「○to×を複数宣言」ではなくて、「For文を入れ子にする」と考えます。
 BJさんがすでに書いてますね。

 言語は、文法どおりにしか解釈されないので、自己流で書いてもエラーになるだけです。
(´・ω・`) 2020/04/21(火) 15:31

そういうことなんですね。
理解できました!
ありがとうございます!
(超初心者) 2020/04/21(火) 15:38

iやkの繰り返し変数に、文字列変数(As String)は使えません。
LongとかIntegerなど数値系の変数にしないと。
(γ) 2020/04/21(火) 15:49

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.