プロが教えるわが家の防犯対策術!

シート複製のやり方を教えて下さい。

sheet1を原紙といたします。"C3"に 日付(6/1) が入っています。
"E3"に1班~4班とリスト表示しています。
作成のボタンを作りボタンを押すことによりコピーしてシート2に複製したいです。
例えば、
複製シート名を"C3"に日付(6/1)と"E3"に1班をピックアップして
シート名を " 6,1(1班)と緑色" と表示。
(2班)を青色表示。(3班,4班)をオレンジ色に 一覧と紐付の左側に最新複製シート表示したいと思います。どの様にしたら良いのか教えて下さい。
お願いします。

「ExcelのVBAを教えて下さい。」の質問画像

A 回答 (6件)

sh1,sh2みんな要らないですね。



Worksheets("原紙").Copy After:=Worksheets(Worksheets.Count)
with Worksheets(Worksheets.Count)
.name=format(Range("C3"),"m.d")&Range("E3")
.Tab.ColorIndex = 8
End With
でどうでしょう?
    • good
    • 0
この回答へのお礼

有難うございます。あと少し教えて下さい。Range("E3")のE3のセルの値が変われば、コピーして追加のシートに色を変更かけたいのですが
どようにしたらよいのでしょうか。E3に1班→2班になれば追加シートにオレンジ色という内容になります。お願いします。

お礼日時:2017/06/08 14:06

怒っているのでは、ありません。


あなたは多分意識していないと、思ったので
客観的にみるとこうですよと、伝えたかっただけです。

つまり出来なかったときは、その症状詳細を伝えるための
分析が必要、そこからあなたの理解も始まっているんです。
それをすっ飛ばして聞いてたら右から左へ受け流すだけ。

どこがおかしいか、ひとつづつ解決しないとプログラムなんて
出来っこありません。姿勢が大切なんです。

例えば
Application.ScreenUpdating = False
こんなの完成してから、入れるべきもので
人に訊くのに入れてる時点で、程度が知れます。

〇最初の 
With sh1
どうして withが必要?

〇また答えてもらってないけど尋ねた
sname =Mid$(Range("C3")."m/d") & Range("E3")
がWithの中にある目的は?

format(Range("C3"),"m.d")&Range("E3")
がしたいことじゃないのかな?

ね、一行一行真剣に取り組まないとちゃんとしたものなんて
出来ないんです。

〇まずね、複製は原紙から作るんですよね。
その時シートの名前は原紙(2)とかにならないですか?

For cnt = 1 To Worksheets.Count
で名前探してるけど、変えたい名前はまだ探しても
ないんじゃないかな?


一気に仕上げたいのは、誰でもそうですけど
一行一行動作確認しなきゃいけないのも、また事実なんです。


全部一気に訊こうと思わないで、どうしても動かないのが
理解できないポイントひとつづつを尋ねるのがきっと
あなたのためになると思います。

ステップ実行や、ブレークポイントは理解していますか?
それは、最低限マスター願います。
    • good
    • 0

>としましたが出来ません。

教えて下さい。
出来ませんだけしか言わないのはとても失礼なことです。

あなただけがエラーが起きた、もしくは思い通りにならなかった
症状を確認しています。エラーなら発生した行をみているのも
あなただけなんです。
それらを伝えないで、いちから考えろというのは非合理的以外の
何物でもありません。

>sname =Mid$(Range("C3")."m/d") & Range("E3")

これって何がしたいんですか?
Rangeに"m/d"なんてメンバーあるわけないと思いますけど。
    • good
    • 0
この回答へのお礼

怒らしてしまってすみませんでした。
大変、身勝手なことだと思います。
申し訳ございませんでした。

お礼日時:2017/06/08 00:14

VBAの勉強目的であれば、No.1・No.2の回答者さんの仰る方法でよいと思います。



実務目的なら、一つずつ手でやりましょう。
例え分類するシート数が300あっても30分もあれば作業は終わります。
(どう考えても今回限りの作業のようなんです)
    • good
    • 0
この回答へのお礼

有難うございます。分かりやすい表ですが実際は、更に関数やシートが複数存在します。
ただ多数の人が携わっているためか原紙が消せらてたり関数が勝手に違うセルを指定されているのが現状です。
いくつものシートを先に作成するとどれがどれなのか入力がなかったりしてしまいます。サービス残業を極力へらしたいと思っています。

お礼日時:2017/06/07 22:16

とりあえずエクセルのVBAの本を購入しましょう。


それを読んで、ある程度わかれば、あなたのやりたいことはかなえられます。
    • good
    • 1
この回答へのお礼

有難うございます。この様にしてみたのですが…
Sub シート複製()

Dim sh1 As Worksheet, sh2 As Worksheet
Dim cnt As Integer
Dim sname As String
Application.ScreenUpdating = False
Set sh1 = Worksheets("原紙")
With sh1
.Copy After:=Worksheets(Worksheets.Count)
sname = Mid$(Range("C3")."m/d") & Range("E3")
End With
For cnt = 1 To Worksheets.Count
If Worksheets(cnt).Name = sname Then
sname = sname & "(2)"
Exit For
End If
Next cnt
Set sh2 = Worksheets(Worksheets.Count)
With sh2
.Name = sname
.Tab.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub

としましたが出来ません。教えて下さい。

お礼日時:2017/06/07 22:21

とりあえず、マクロを記録する状態にしてやってみるとどうやればいいかわかります。


https://kokodane.com/2010/excel2010macro_05.htm
    • good
    • 1
この回答へのお礼

有難うございます。
月日が6/1を6.1に変換出来ませんでした。
教えて下さい。

お礼日時:2017/06/07 22:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!