VBAで下記のように変数を使用しシート名の変更をしたいと考えています。
ActiveSheet.Name = nen & "." & getsu
nenには年が、getsuには月が入っていて、2009.12のような名前にするつもりです。
ただ、既に同じブック内に同じ名前のシートが存在する場合、
2009.12(2)のように、普通にシートをコピーしたときにつく連番と同じように、
自動的に連番をつけたいと考えているのですが、よい方法が分かりません。
なお、2009.12と2009.12(2)があれば、2009.12(3)となるように、
イメージとしては()の数字が同名のシートの数分増えるようにしたいと思っています。
なにとぞご教授いただけますでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
エラーなしでシンプルな方法です。
Sub macro()
Dim nen As Integer
Dim getsu As Integer
Dim W As Workbook
nen = 2009
getsu = 12
Set W = ActiveWorkbook
ActiveSheet.Move
ActiveSheet.Name = nen & "." & getsu
ActiveSheet.Move after:=W.Worksheets(W.Worksheets.Count)
End Sub
No.4
- 回答日時:
こんにちは。
>Excel VBA シート名変更時、重複していたら連番を付けたい
こうすればよいのでは?
>2009.12と2009.12(2)があれば、2009.12(3)となるように、
ということですから、 i = 2 '枝番初期値 というように、2にしてあります。
'-------------------------------------------
Sub SheetChangeName()
Const nen As String = 2009
Const getsu As String = 12
Dim i As Long
i = 2 '枝番初期値
On Error Resume Next
Do
Err.Clear
ActiveSheet.Name = nen & "." & getsu & "(" & CStr(i) & ")"
i = i + 1
Loop Until Err.Number = 0
On Error GoTo 0
End Sub
No.3
- 回答日時:
こんな感じで
Sub test()
Dim nen, getsu
Dim eda As String
Dim i As Integer, j As Integer
nen = 2009
getsu = 12
eda = ""
j = 0
Do
eda = IIf(j = 0, "", "(" & j & ")")
For i = 1 To Worksheets.Count
If Worksheets(i).Name = nen & "." & getsu & eda And ActiveSheet.Index <> i Then Exit For
Next i
j = j + 1
Loop Until i > Worksheets.Count
ActiveSheet.Name = nen & "." & getsu & eda
End Sub
No.2
- 回答日時:
nen、getsu、は定義済みかつ値が入っているものとしています。
Sub mmmm()
Dim s As String
Dim q As Long
Dim MaxNO As Long
Dim ws As Worksheet
Dim umu As Boolean
s = nen & "." & Right("00" & getsu, 2) '名前を作る
For Each ws In Worksheets 'すべてのWorksheetをひとつづつ処理
If Left(ws.Name, Len(s)) = s Then '名前が一致(年月のみ一致も含む
umu = True1 '一致したよ!
If ws.Name = s Then
q = 0 '完全一致のときqは0
Else
'そうじゃないとき括弧内の数字を取り出してqにいれる
q = Val(Replace(Left(ws.Name, Len(ws.Name) - 1), s & "(", ""))
End If
'以下3行でqの最大値をMaxNOに入れる
If q > MaxNO Then
MaxNO = q
End If
End If
Next
If umu = False Then
ActiveSheet.Name = s '年月も一致しないとき
Else
ActiveSheet.Name = s & "(" & MaxNO + 1 & ")" '一致したものがあるときMaxno+1を()付きで付加
End If
End Sub
2009年1月は2009.1ではなく2009.01になるようにしています。
テストはしていませんので不具合があったら補足してください。今酔ってます(^^;)
No.1
- 回答日時:
A.「2009.12」というシートが存在するか?
No→そのままシート名を変更
B.i=2
C.「2009.12(i)」というシートが存在するか?(iは変数)
No→シート名を変更。ループを抜ける
D.i=i+1 Cに戻る
E.おめでとう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
- Excel(エクセル) エクセルの日報作成について 3 2023/07/05 12:49
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
Excelシート名が重複してらシート名に連番を付加させる方法
Excel(エクセル)
-
-
4
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
5
シートをコピーして シートに1から連番をふる
Word(ワード)
-
6
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
7
VBAで同じシート名のコピー時は処理中止したいのですが・・・
Visual Basic(VBA)
-
8
特定のセルが空白だったら、その行を非表示にしたい。。。
Visual Basic(VBA)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
12
エクセルVBA 「On Error GoTo 0」について
Excel(エクセル)
-
13
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
14
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
15
ファイル名が同じ場合自動的に番号を付ける方法ありますか?
その他(データベース)
-
16
エクセルでエラーが出て困っています。
Excel(エクセル)
-
17
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
18
EXCEL あるセルに数字が入力されれば既存マクロ実行させたい
Excel(エクセル)
-
19
InputBoxに入力した言葉をシート名にしたい!
Excel(エクセル)
-
20
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポップコーンの捨て方
-
エクセルVBA 4行飛ばしで転記す...
-
フォルツァ バッテリーを外して...
-
車のシートでおもらし
-
エクセルで複数のシートをフォ...
-
ホンダ・レブルのシートのはずし方
-
原付 レッツシート開け方
-
Excel複数シートから日付と文字...
-
リアシート無しで運転してたら...
-
ドライブレコーダーのSDカード...
-
バイクのシートに傷
-
建築模型、カーブの作り方
-
適した両面テープを探していま...
-
パワーシートのモーターの消費...
-
自動車用シートの座面が長すぎ...
-
中学生です。体育館の床に敷く...
-
マジェスティ(4HC)のシート下...
-
メルセデスベンツ
-
貝シートを作りたいのですが!
-
両面粘着シートはどこで買えま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
電車のシートって何でこんな暑...
-
原付 レッツシート開け方
-
水の染み込んだバイクのシート...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
ポップコーンの捨て方
-
BRIDEのシート張り替えってでき...
-
車のシートでおもらし
-
リアシート無しで運転してたら...
-
ポケットにミシンでワッペンを...
-
エクセルVBA 4行飛ばしで転記す...
-
メルセデスベンツ
-
【Excel Online】Excelデータの...
-
癒着してしまったテレビの液晶...
-
【Excel Online】特定シートの...
-
フォルツァ バッテリーを外して...
-
クルマのこのシートは走りのイ...
-
アルファード 7人乗りから8人...
おすすめ情報