
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も見ています
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
Excelシート名が重複してらシート名に連番を付加させる方法
Excel(エクセル)
-
-
4
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
EXCELのSheet番号って変更できる!?
Visual Basic(VBA)
-
7
シートをコピーして シートに1から連番をふる
Word(ワード)
-
8
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
9
VBAで同じシート名のコピー時は処理中止したいのですが・・・
Visual Basic(VBA)
-
10
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
11
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
12
excelで新規作成されるシート名をリセット
Visual Basic(VBA)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
15
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
16
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
17
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
18
エクセルで、セルの日付をシート名にしたい
Excel(エクセル)
-
19
エクセルVBA 同じ名前のシートがすでにあるとエラートラップに飛ばしたいのですがうまくいきません こ
Visual Basic(VBA)
-
20
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
フォルツァ バッテリーを外して...
-
建築模型、カーブの作り方
-
飛行機の座席について 3列シー...
-
エクセルVBA 4行飛ばしで転記す...
-
シートベルトの固定解除
-
Excel VBA シート名変更時、重...
-
2024年式タフトに乗っています...
-
原付 レッツシート開け方
-
グラストラッカー ビッグボー...
-
リアシート無しで運転してたら...
-
Excel複数シートから日付と文字...
-
Google スプレッドシート:FILT...
-
スマホの画面に気泡みたいなものが
-
車のシートがへたってきました...
-
スプレッドシートで、2つのシー...
-
BIKEのシートの取り外し方を教...
-
ZZ-R400に乗っているのですが・...
-
IHクッキングヒーターの操作パ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
原付 レッツシート開け方
-
BRIDEのシート張り替えってでき...
-
電車のシートって何でこんな暑...
-
ポケットにミシンでワッペンを...
-
エクセルVBA 4行飛ばしで転記す...
-
車のシートがへたってきました...
-
フォルツァ バッテリーを外して...
-
IHクッキングヒーターの操作パ...
-
Excel複数シートから日付と文字...
-
シートベルトの固定解除
-
中学生です。体育館の床に敷く...
-
リアシート無しで運転してたら...
-
癒着してしまったテレビの液晶...
-
台所流しの水音を小さくしたい
-
マジェスティ(4HC)のシート下...
-
水の染み込んだバイクのシート...
-
Excel VBA シート名変更時、重...
-
Google スプレッドシート:FILT...
おすすめ情報