Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1431 / 13646 ツリー ←次へ | 前へ→

【74531】マクロでシート名の変更 行方不明 13/7/18(木) 0:28 質問[未読]
【74532】Re:マクロでシート名の変更 kanabun 13/7/18(木) 0:36 発言[未読]
【74533】Re:マクロでシート名の変更 行方不明 13/7/18(木) 8:50 質問[未読]
【74534】Re:マクロでシート名の変更 kanabun 13/7/18(木) 12:11 発言[未読]
【74536】Re:マクロでシート名の変更 行方不明 13/7/18(木) 23:15 発言[未読]
【74537】Re:マクロでシート名の変更 kanabun 13/7/18(木) 23:47 発言[未読]
【74538】Re:マクロでシート名の変更 行方不明 13/7/19(金) 8:45 お礼[未読]

【74531】マクロでシート名の変更
質問  行方不明  - 13/7/18(木) 0:28 -

引用なし
パスワード
   VBAで複数名分の勤怠表を一括で作ろうとしています。

シート1には、勤怠表を作成したいスタッフの名前を入力する用のシート(”入力用”)として、B19を一人目として、その下に複数名の名前を入れる予定です。


シート2には勤怠表のひな型を作っていて、そのシート2のI6に氏名欄があり、
シート1のB19以下に入力された名前を、シート1に作成したマクロボタンを押すと、1人1シートとして、ひな型のI6に氏名が自動で入力されるVBAを作ろうとしてます。


試しに作ったVBAだと、B19以下に複数名の名前を入力すると、その入力分だけひな型のI6にその氏名が入力された勤怠表が、1人1シートで、
出来あがるようになりましたが、
そのシート名が1,2,3,,,,と数字になってしまいます。

これを、数字ではなく、B19以下に入力した氏名もシート名になるように(I6に飛ばしたように、シート名も同様に)変更するには
どのコードを変えればいいか、分らなくなっています。


どうか助けて下さい。


以下は作成したコードです。


Option Explicit

Type St_set0
  St As Object
  Rw As Long
  Rw_Staff As Long
  C_item As Integer
  C_Staff As Integer
End Type
Public St0 As St_set0

Type St_set1
  St As Object
  Rw As Long
  Rw_Depart As Long
  Rw_Staff As Long
  C_Depart As Integer
  C_Staff As Integer
End Type
Public St1 As St_set1

Sub Init()
  Set St0.St = Sheets("入力用")
  St0.C_item = 2
  St0.C_Staff = 2
  St0.Rw_Staff = 19
  
  St1.Rw_Staff = 6
  St1.C_Staff = 9
End Sub

Sub Test()
  Dim I As Long
  Init
  St0.St.Select
  St0.Rw = St0.Rw_Staff
  Do Until St0.St.Cells(St0.Rw + I, St0.C_item) = ""
    Sheets("ひな形").Select
    Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
    Set St1.St = ActiveSheet
    St1.St.Name = I + 1
    St1.St.Cells(St1.Rw_Staff, St1.C_Staff) = St0.St.Cells(St0.Rw_Staff + I , St0.C_Staff)
    I = I + 1
  Loop
End Sub


Sub Clear_Sheets()
  Dim I As Integer
  
  Init
  For I = Sheets.Count To 1 Step -1
    If Sheets(I).Name <> "入力用" And Sheets(I).Name <> "ひな形" Then
      Sheets(I).Select
      Application.DisplayAlerts = False
      Sheets(I).Delete
      Application.DisplayAlerts = True
    End If
  Next I
  St0.St.Select
End Sub


そして、別の標準モジュール2に

Sub Macro1()
'
' Macro1 Macro
'

'
  Sheets("ひな形").Select
  Sheets("ひな形").Copy After:=Sheets(2)
End Sub


お手数おかけしますが、
どうか教えて下さい

【74532】Re:マクロでシート名の変更
発言  kanabun  - 13/7/18(木) 0:36 -

引用なし
パスワード
   ▼行方不明 さん:

お疲れ様です

>そのシート名が1,2,3,,,,と数字になってしまいます。
>
>これを、数字ではなく、B19以下に入力した氏名もシート名になるように

う〜ん、もう寝るので、よく見てないけど、

>    St1.St.Name = I + 1

ここを、目論見の処理に変更してください。

【74533】Re:マクロでシート名の変更
質問  行方不明  - 13/7/18(木) 8:50 -

引用なし
パスワード
   ▼kanabun さん:

ありがとうございます!!
何度もすみません。

>St1.St.Name = I + 1
>
>ここを、目論見の処理に変更してください。

いくつか変えてみたのですが、
”ひな形”のシートからコピーされたシートのI6をシート名にする場合、

St1.St.Name = Range(Sheets("ひな形").Range("I6"))

かなと思ったのですがエラーが出てしまいます。。。

何度もすみませんが、どのようにするか、教えて頂けますか?
宜しくお願いします(>_<)


>▼行方不明 さん:
>
>お疲れ様です
>
>>そのシート名が1,2,3,,,,と数字になってしまいます。
>>
>>これを、数字ではなく、B19以下に入力した氏名もシート名になるように
>
>う〜ん、もう寝るので、よく見てないけど、
>
>>    St1.St.Name = I + 1
>
>ここを、目論見の処理に変更してください。

【74534】Re:マクロでシート名の変更
発言  kanabun  - 13/7/18(木) 12:11 -

引用なし
パスワード
   ▼行方不明 さん:

>”ひな形”のシートからコピーされたシートのI6をシート名にする場合、
>
>St1.St.Name = Range(Sheets("ひな形").Range("I6"))
>
>かなと思ったのですがエラーが出てしまいます。。。

シートコピーしているなら、コピーされたシートの[I6]の値は
元の”ひな形”のシートの[I6]の値ですから、

 St1.St.Name = Sheets("ひな形").Range("I6").Value

ってことですよね?

【74536】Re:マクロでシート名の変更
発言  行方不明  - 13/7/18(木) 23:15 -

引用なし
パスワード
   ▼kanabun さん:

すみません、私の説明がヘタで(>人<;)

ひな型を元にして、入力用のシートに入力された名前が1人1シートとして、勤怠表が出来るようになってます。

なので、入力用シートに入力した名前が、ひな型をコピーしたI6にそれぞれ反映されてるので、その名前をシート名にも出来ないかと思いまして、、、

ややこしくて、申し訳ありません!


>▼行方不明 さん:
>
>>”ひな形”のシートからコピーされたシートのI6をシート名にする場合、
>>
>>St1.St.Name = Range(Sheets("ひな形").Range("I6"))
>>
>>かなと思ったのですがエラーが出てしまいます。。。
>
>シートコピーしているなら、コピーされたシートの[I6]の値は
>元の”ひな形”のシートの[I6]の値ですから、
>
> St1.St.Name = Sheets("ひな形").Range("I6").Value
>
>ってことですよね?

【74537】Re:マクロでシート名の変更
発言  kanabun  - 13/7/18(木) 23:47 -

引用なし
パスワード
   ▼行方不明 さん:


>ひな型を元にして、入力用のシートに入力された名前が1人1シートとして、勤怠表が出来るようになってます。
>
>なので、入力用シートに入力した名前が、ひな型をコピーしたI6にそれぞれ反映されてるので、その名前をシート名にも出来ないかと

なら、

  St1.St.Name = St1.St.[I6].Value

ですか?

【74538】Re:マクロでシート名の変更
お礼  行方不明  - 13/7/19(金) 8:45 -

引用なし
パスワード
   ▼kanabun さん:

ありがとうございます!
ただ、どうしてもデバッグになってしまうんです。。。
(アプリケーションまたはオブジェクト定義のエラー)

難しいですね!
マクロ自体を少し考え直して見ます!

いつも速い回をありがとうございました!


>▼行方不明 さん:
>
>
>>ひな型を元にして、入力用のシートに入力された名前が1人1シートとして、勤怠表が出来るようになってます。
>>
>>なので、入力用シートに入力した名前が、ひな型をコピーしたI6にそれぞれ反映されてるので、その名前をシート名にも出来ないかと
>
>なら、
>
>  St1.St.Name = St1.St.[I6].Value
>
>ですか?

1431 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free