[[20171017095134]] 『マクロのシートコピー&シート名の指定+α』(たぬき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロのシートコピー&シート名の指定+α』(たぬき)

おはようございます。
いつもお世話になっております。

今回 シートのコピー&シート名の指定のマクロを
ネットから調べて稼働してみたいのはいいのですが

どっちも短所と長所があり

両方からいいのを使いたいのですが
探しても探しても見つかりませんでした。
そもそも知識不足のためどういじればいいのか…
分からず指導を仰ぎたく何卒よろしくお願いいたします。

1つ目はシート列4から足していく面でいいが
シート名がかぶるとエラーになる。

2つ目はシート名かぶらないコードになっているが
シート列が一番右になる。

希望はシート列4から足して行きつつ
シート名がかぶらないコードになります…

1つ目
Sub Macro1()

    Sheets("フォーマット").Select    
    Sheets("フォーマット").Copy Before:=Sheets(4) 'シートコピーし、シート列番号〜シート作成
    ActiveSheet.Name = Format(Date, "yymmdd")

End Sub

2つ目
Sub macro2()

  Dim sh_name As String
  Dim n As Long

  sh_name = Format(Date, "yymmdd")
  ActiveSheet.Copy After:=ActiveSheet

  On Error Resume Next

  ActiveSheet.Name = sh_name

  n = 1
  Do Until Err.Number = 0
    Err.Clear
    n = n + 1
    ActiveSheet.Name = sh_name & "(" & n & ")"
  Loop
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


挿入したい位置は右から何番目のシートの前ですか?
それならシート数が変わっても位置の表現は変わらなくないですか?

まずは、
どのシートをコピーして、どのシートの前にしたい(あるいは後)かを日本語で(シート名か左からの位置、もしくは右からの位置)表現してみましょう^^

(まっつわん) 2017/10/17(火) 10:30


 macro2の
 >ActiveSheet.Copy After:=ActiveSheet
 これをMacro1同様、
 Sheets("フォーマット").Copy Before:=Sheets(4)
 とすればイケるのでは?

 あと、本題とは直接関係ないですが、
 なるべく
 On Error Resume Next
 に頼らない方法を採用すべきだと思います。

 せっかくループで重複確認するのだから、
 たとえば

    Sub Macro3()
        Dim sh_name As String, Sh As Worksheet, n As Long
        Sheets("フォーマット").Select
        Sheets("フォーマット").Copy Before:=Sheets(4) 'シートコピーし、シート列番号〜シート作成
        sh_name = Format(Date, "yymmdd")
        n = 1
        For Each Sh In Worksheets
            If Sh.Name Like sh_name & "*" Then n = n + 1
        Next
        If n > 1 Then sh_name = sh_name & "(" & n & ")"
        ActiveSheet.Name = sh_name
    End Sub

 みたいな感じで。

(白茶) 2017/10/17(火) 10:31


 >シート列4から足していく
 あ。
 右方向に増やしていくのかな?

 スミマセン
 これはまっつわんさんの仰る通りですね
(白茶) 2017/10/17(火) 10:37

白茶様

コードありがとうございました。
いけました。

もっと勉強します・・・

 On Error Resume Next
 に頼らない方法を採用すべき
その理由も調べてみます><

まっつわん様

そうでした、
シート4から足していくと
追加分は4って決まっているので
古いシートはどんどん右にいって最新は4で確認できる面を考えていました
すみません、説明分が足りなかったようで><

(たぬき) 2017/10/17(火) 12:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.