[[20210616184646]] 『VBA シート生成』(sima) ページの最後に飛ぶ

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

 

『VBA シート生成』(sima)

こんばんは。
sc枚のシートを生成したいのですがループしません。
一枚生成後に終わってしまいます。
どこが悪いのでしょうか。
よろしくお願いします。

Dim wbThis As Workbook, sc As Long, sh As Long, ws As Worksheet

Set wbThis = ThisWorkbook
sc = wbThis.Sheets("Macro").Cells(3, "G")

For sh = 1 To sc

    wbThis.Sheets("Template").Copy after:=wbThis.Sheets("Template")
    ActiveSheet.Name = "W" & sc
    Set ws = ActiveSheet
    sh = sh + 1
Next sh

< 使用 Excel:Office365、使用 OS:MacOSX >


 ループしないどころかエラーになりませんか?
(通りすがり) 2021/06/16(水) 18:59

 >sh = sh + 1

 ループの途中でカウントアップしちゃまずいでしょ。

 >ActiveSheet.Name = "W" & sc

 ループしてもここは変わりません。
 同じ名前のシートを複数作成することはできません。
(通りすがり) 2021/06/16(水) 19:02

 ActiveSheet.Name = "W" & sc
 ↓同じシート名になるので
 ActiveSheet.Name = "W" & sh
 ではないのかな
 sh = sh + 1
 不要だと思うけど
(どん) 2021/06/16(水) 19:05

 こういうこと?

Sub test2()

 Dim wbThis As Workbook
 Dim sc As Long, sh As Long
 Dim ws As Worksheet

  Set wbThis = ThisWorkbook
  sc = wbThis.Sheets("Macro").Cells(3, "G")

  For sh = 1 To sc

    wbThis.Sheets("Template").Copy after:=wbThis.Sheets("Template")
    ActiveSheet.Name = "W" & sh
    Set ws = ActiveSheet
    'sh = sh + 1
  Next sh

  Set wbThis = Nothing

End Sub
(通りすがり) 2021/06/16(水) 19:06


 >Set ws = ActiveSheet

 これも不要ですね。
(通りすがり) 2021/06/16(水) 19:08

お二方ありがとうございました!
解決しました。

@通りすがりさん
ちなみにこれってどういう役割ですか。
Set wbThis = Nothing

(sima) 2021/06/16(水) 19:14


 ご自分で調べてみましたか?
(通りすがり) 2021/06/16(水) 19:18

変数を無効にして効率化することはわかるのですが
どうしてworkbookのwbThisを無効にしなければならないのかわからないです。。

(sima) 2021/06/16(水) 19:29


今回は、プロシージャの最後で変数の解放を行っているので、厳密に
いったら変数のの解放は不要です。

ただし、複雑なコードを書くようになると、勉強の初めにきちんとした
コードの書き方を身に着けてないと苦労するようになりますよ。

https://www.sejuku.net/blog/78974
(通りすがり) 2021/06/16(水) 19:48


 >sc = wbThis.Sheets("Macro").Cells(3, "G")

 これも、

 sc = wbThis.WorkSheets("Macro").Cells(3, "G").Value

  としたほうがいいですね。

  SheetとWorksheetの違い、というのもあります。

 また、プロパティを略すと、デフォルトのValueプロパティと判断してくれますが。
 分かって略すのと、知らないで略すのでは、プロシージャの実行結果が
 違ってくる可能性がありますのでご注意。
(通りすがり) 2021/06/16(水) 19:54

なるほどですね!
勉強になりました。
丁寧に説明してくださりありがとうございました!
(sima) 2021/06/16(水) 20:41

コメント返信:

[ 一覧(最新更新順) ]


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