[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
(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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.