[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ 新しいシートを作って同じ名前なら後ろに連番を付けたい』(はぁ〜と)
お世話になります
セルb4に入力された名前を シートに反映させるのですが
同じ名前になると エラーが発生します
同じ名前の時は 名前(1) 名前(2)と連番になるように
していきたいのですが 色々検索したり試したりしましたが
うまくいきません
Sub Macro1()
Sheets("見積書").Select
Sheets("見積書").Copy Before:=Sheets(6)
Columns("B:W").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B4:R5").Select
Application.CutCopyMode = False
ActiveSheet.Name = Range("b4").Value
End Sub
ご教授よろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
普通にコピーで連番になりませんか?
Sheets("見積書").Copy Before:=Sheets(6)
(OK) 2020/11/05(木) 16:34
>同じ名前の時は 名前(1) 名前(2)と連番になるように >していきたいのですが
セルの内容の名前で重複した場合は連番ということですか? 見落としてました。 (OK) 2020/11/05(木) 16:36
ActiveSheet.Name = Range("b4").Valueのように
セルb4をシートの名前にするので・・・(-_-;)
(はぁ〜と) 2020/11/05(木) 16:52
Dictionaryオブジェクトを使って既存のシート名を 配列に格納し、配列に格納されているシート名か 否かを判定する、という方法がありますがエラー処理 を使った方法もあります。
Sub tst() Dim wsmei As String wsmei = ActiveSheet.Cells(1, 1).Value MsgBox umu(wsmei) End Sub
Function umu(ByVal shtmei As String) As Boolean Dim celval As String umu = False Err.Clear On Error Resume Next celval = Worksheets(shtmei).Cells(1, 1).Value If Err.Number = 0 Then umu = True 'エラーにならない=シートが存在する On Error GoTo 0 End Function
質問内容がシート名ではなくファイル名ですが、考え方は同じです。
[[20200829163928]] 『自動保存で上書きされないようにしたい』(96)
[[20200910171657]] 『自動保存で上書きされないようにしたい2』(96)
(OK) 2020/11/05(木) 17:12
Sub ChangeSheetName 〜 End Sub までコピーして、
ActiveSheet.Name = Range("b4").Value
の代わりに
ChangeSheetName ActiveSheet, Range("b4").Value
としたらどうでしょう (´・ω・`) 2020/11/05(木) 17:16
ご返信ありがとうございます。
ですが マクロの理解度0に等しいので
どのように使用して良いかわかりません
(一応 いじっては見ましたが・・・(*_*;)難解すぎて)
もう少し優しく教えて頂ければ幸いです。
よろしくお願いします<m(__)m>
(はぁ〜と) 2020/11/05(木) 17:39
ありがとうございました。
できました!!
私のためお時間頂きお手数おかけいたしました
本当にありがとうございました(^^♪
(はぁ〜と) 2020/11/05(木) 17:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.