質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

361閲覧

VBA を利用した、エクセルのタブの名前変更のやり方

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/06/10 00:36

VBA を利用した、エクセルのタブの名前変更のやり方について質問です。

Sub tab()
Dim i As Integer
Dim cnt As Integer

cnt=Application.Inputbox(括弧内略)

 For i = 1 to cnt
Worksheets("0001").Copy After:=Worksheets(i)
ActiveSheets.Name = "000" & Workshhts.Count - 1
Next i
End Sub

上記コードを利用したものを使っているのですが、10枚目以降が00010という名前になってしまいます。
これを0010という名前にしたいです。

これは変数cntの範囲を9までにして、10以降はFor 文を付け加えるという形を考えているのですがそれ以外にシンプルなコードにすることは可能でしょうか?
アドバイス頂けるとありがたいです。

また、エラートラップで100枚以上の指定をした場合止まる様にしたいのですが、こちらも変数を
cnt <= 100のように範囲を決めるというやり方が良いでしょうか?

上記2点が質問です。
よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

シート名について、数字4桁固定(先頭ゼロ埋め)で良いならこれでいかが?

VBA

1ActiveSheets.Name = Format(Workshhts.Count - 1, "0000")

また、エラートラップで100枚以上の指定をした場合止まる様にしたいのですが、こちらも変数を

100で止まるようにしたいならForループの前に

VBA

1If cnt > 100 Then 2 cnt = 100 3End If

エラー扱いで1回もループさせないのなら、上記のcnt = 100の部分でアラート表示して
Exit Sub (Exit Function?)ですかね。

投稿2020/06/10 01:10

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/10 01:13

回答頂きありがとうございます! やはり人によって色んな書き方があるんですね。 色々と考え方を身につけていきます!!
guest

0

ベストアンサー

これを0010という名前にしたいです。

VBA

1ActiveSheets.Name = Right("000" & Workshhts.Count - 1, 4)

また、エラートラップで100枚以上の指定をした場合止まる様にしたいのですが、こちらも変数を
cnt <= 100のように範囲を決めるというやり方が良いでしょうか?

InputBoxのあとで、If文で判定すればいいかと思います。

VBA

1cnt=Application.Inputbox(括弧内略) 2If cnt > 100 Then Exit Sub 3

ん?違うか。100枚より多く入力されても100枚までは処理するってことでしょうか?
だとすればループ内で判定ですね。

VBA

1For i = 1 to cnt 2 If i > 100 Then Exit For 3 Worksheets("0001").Copy After:=Worksheets(i) 4 ActiveSheets.Name = "000" & Workshhts.Count - 1 5Next i

投稿2020/06/10 00:42

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/10 01:10

回答頂きいつもありがとうございます! なるほど、4桁までに絞れば良かったんですね???? >> InputBoxのあとで、If文で判定すればいいかと思います。 こんなシンプルにコードかけるんですね! if文は凄い、、、 今回は100枚より大きく入力するとエラーになるというのを書きたかったです。 100枚までは処理するというパターンも書いて頂きありがとうございます。 この考え方も覚えておきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問