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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
Excelシート名が重複してらシート名に連番を付加させる方法
Excel(エクセル)
-
-
4
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
5
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
VBAで同じシート名のコピー時は処理中止したいのですが・・・
Visual Basic(VBA)
-
8
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
9
シートをコピーして シートに1から連番をふる
Word(ワード)
-
10
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
自動で複数セルの内容をシート名にする
Excel(エクセル)
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
14
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
15
VBA シート名重複した場合削除する
Access(アクセス)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
18
(Excel VBA)シートコピー時マクロはコピーしたくない
Excel(エクセル)
-
19
InputBoxに入力した言葉をシート名にしたい!
Excel(エクセル)
-
20
特定のシートの削除を禁止したい(ブックの保護でなく)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
原付 レッツシート開け方
-
Excel複数シートから日付と文字...
-
BRIDEのシート張り替えってでき...
-
エクセルVBA 4行飛ばしで転記す...
-
ホンダジョルノのイス シート...
-
Excel VBA シート名変更時、重...
-
車のシートがへたってきました...
-
IHクッキングヒーターの操作パ...
-
フォルツァ バッテリーを外して...
-
テントのグラウンドシートの自作
-
癒着してしまったテレビの液晶...
-
メルセデスベンツ
-
PET(ポリエチレンテレフタレー...
-
XJR400 のシートを替えようと思...
-
建築模型、カーブの作り方
-
リアシート無しで運転してたら...
-
R34GTRシートの流用は可能か?
-
XJR400Rのシートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
原付 レッツシート開け方
-
車のシートがへたってきました...
-
リアシート無しで運転してたら...
-
エクセルVBA 4行飛ばしで転記す...
-
IHクッキングヒーターの操作パ...
-
フォルツァ バッテリーを外して...
-
BRIDEのシート張り替えってでき...
-
車のシートでおもらし
-
バイクのシートを取り替えても...
-
ポップコーンの捨て方
-
建築模型、カーブの作り方
-
水の染み込んだバイクのシート...
-
シートベルトの固定解除
-
Excel VBA シート名変更時、重...
-
Excel複数シートから日付と文字...
-
原付2種に迷っています、おす...
-
台所流しの水音を小さくしたい
-
XR250BAJAのシートのはずし方を...
おすすめ情報