[[20170503220251]] 『シートを連番にしたい』(おさむし) ページの最後に飛ぶ

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

 

『シートを連番にしたい』(おさむし)

マクロの初心者です…
マスターのシートをコピーして、
シート名を
年-月-001
みたいな感じに作成したいです。
例え的には
17-05-001
17-05-002
17-05-003



と連番にしたマクロってできますか?
シート自体は依頼が来た時に一個ずつ作成していきたいので、マクロを実行すると一気に何個もできるのではなく一個づつ出来るようにしたいです。

文章能力があまりなく、意味不明だとは思いますが、よろしくお願い致します。

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


[[20170503013803]] と同じ方ですか?

(γ) 2017/05/03(水) 22:18


(Y)さん

[[20170503013803]] と一緒ではないです。
同じ感じのをやりたくて探して検索でヒットして
このサイトに来ました!

がーひさんの場所にあるものを試したのですが、
少しだけ、自分がやりたいものとは違かったので
投稿させていただきました。

似たものを投稿してしまいすみません…
(おさむし) 2017/05/03(水) 22:38


 ああ、そうでしたか?それは失礼しました。

 それではどこまでできていますか?
 というか、どこで詰まっていますか?
 それを教えてください。

 >一個づつ出来るようにしたいです。 
 ということなら、順次、一番右にシートをふやしていくとして、
 最後のシートにある連番がわかれば、それに 1 を加算して作れますね。
     Dim s As String
     s = Sheets(Sheets.Count).Name   'これが一番右のシートのシート名
     Debug.Print Format(CLng(Right(s, 3)) + 1, "000")
     ' 下3桁を整数にしてから1を加算。もう一度3桁にします。
 こんなコードが参考になりませんか?

(γ) 2017/05/03(水) 22:52


ありがとうございます。
いまは、コピーをしたところまでは、できております。

Sub test1()

  Dim i
  i = "001"
  Worksheets("マスター").Copy After:=Sheets(Worksheets.Count)
  On Error GoTo errhandle
  ActiveSheet.Name = "17" & "-" & "05" & "-" & i
  Exit Sub

errhandle:

  i = i + 1
  Resume
End Sub

この状態でやっておりますが、
17-05-001はできるのですが、つぎから17-05-2・17-05-3のように、
なっております。

(おさむし) 2017/05/03(水) 23:25


 最終シートの名前を分析して、それをカウントアップする方法を提案しましたが、
 貴君のコードを最大限活かすなら、下記のようにするのでしょう。
 参考にして下さい。
 Sub test1()
     Dim i As Long

     i = 1
     Worksheets("マスター").Copy After:=Sheets(Worksheets.Count)
     On Error GoTo errhandle
     ActiveSheet.Name = "17" & "-" & "05" & "-" & Format(i, "000")
     Exit Sub

 errhandle:
     i = i + 1
     Resume
 End Sub

 Format(CLng(Right(s, 3)) + 1, "000") あたりを理解してもらえば、
 自力で修正ができたかもしれませんよ。
(γ) 2017/05/04(木) 07:13

ありがとうございます。
出来ました!

後、とても恐縮なんですが、
コピーしたシート名を『依頼日』
というシートのセルに反映ってできるのですか?
重ね重ね申し訳ないのですが、よろしくお願い致します。

例え
C3 ⇒ 17-05-001
C4 ⇒ 17-05-002
C5 ⇒ 17-05-003



という感じで、シートのをピーをしたら、依頼日に反映するということは出来ますでしょうか?
ゴールデンウイーク中に申し訳ないですが
宜しくお願い致します。
(おさむし) 2017/05/04(木) 08:06


 >請求番号というシートにもその連番を反映させろ
 ということですね?
 単純な繰り返しのコードですよ。簡単な話なので、連休中にトライしてみて下さい。
 絶対にご自分で出来る話です。

(γ) 2017/05/04(木) 08:41


請求番号ではなく、依頼日ですが…
どういう意味でしょうか!?
とりあえず、今入院中なので頑張ってやってみます!
ありがとうございました!
(おさむし) 2017/05/04(木) 08:49

「依頼日」って、シートのセルに『17-05-001』と、必要なタイミングで書いていって
増えたセルに対してシートコピーってするのはどうですか?

つまり、依頼日入力→シートコピー の順で、やるってころです。
(とみ) 2017/05/04(木) 09:51


 おはようございます。

 今はγさんの以下の記述になってると思いますけど。
 >ActiveSheet.Name = "17" & "-" & "05" & "-" & Format(i, "000")
 この記述は今が2017年の5月だからですよね?

 年月の部分を固定値にしたら、来月は06に修正しないといけません。
 年月が変わるたびに都度コードそのものを修正しなくてはいけなくなりますよ。
 固定値にするなら"17-05-"で十分ですし、別ける意味もないです。

 自力ではちょっと難しいかな?
 以下のような記述になります。
 Format(Date, "yy-mm-") & Format(i, "000")

 依頼日シートのC列にシート名を追加するのは、C列の最終行の一つ下ですよね。
 なら最終行を取得出来れば記述できると言う事も分かりますね。
 最終行の取得などで検索して下さい、例が山ほど出てきます。

 γさん

 余談ですけど、Format(CLng(Right(s, 3)) + 1, "000") のCLngは必要ないですよ。
 Format関数やTEXT関数は、文字の数字でも数値として扱います。
 それに+1の時点で勝手に数値に変換されますしね。

(sy) 2017/05/04(木) 10:32


(とみ)さん
ありがとうございます。
入院をきっかけにマクロの勉強をしようと思っておりましたが、
まだまだわからないので、とみさんのおっしゃるようにしたいと思います。

(sy)さん
ありがとうございます。

Format(Date, "yy-mm-") & Format(i, "000") これをやりたかったです!

これで、月ごとにいじらなくてすみます!!
本当に、ありがとうございます!

マクロを触り始めて、2日ほどしかたっておらず、何もわからないので
最終行の取得のやり方は、まだまだ出来ないかもしれませんが、
頑張ってみます!
また、何かございましたら宜しくお願い致します。
(おさむし) 2017/05/04(木) 17:58


syさん、ご指摘ありがとうございます。
実直すぎましたか。
 
# 私は決してスレなどとは言わず、きちんとスレッドと言います。
# カキコなどと言う人は信じられない。
# ちょっと関係無かったですか。

質問者さんは入院されたなら療養に務めて頂きたい。
(γ) 2017/05/04(木) 20:47


コメント返信:

[ 一覧(最新更新順) ]


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