• 締切済み

エクセルVBA シート追加に伴うシート名入力

宜しくお願いします。 勤怠管理(タイムカード)の表の扱いに伴って,合理的にしてみたいと思いました。 一番左シートが入力シート(名前/時給など)になっており,それから右のシートが各個人タイムカードになってます(タイムカードの雛形のコピーをしながら増やしていた)。 入力シートに「名前」を追加すると雛形シートが追加になり(シート名が「名前」),また入力シートの「名前」を消すとそのシートがなくなるようなものがあると助かります。 単純なシート追加とかは組めるのですが,それ以上になるとチンプンカンプンで...。

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 「入力シート」での「名前」のタテ(C4が最初の名前でC5,C6...)のセル以外でもクリックするとシートの追加になります。 ninja_macさんが、名前の欄を指定してないんだからどこをダブルクリックしても出来るように書いただけです。 ではとりあえずC4~C100に指定してみます。 > 時給などの諸設定を入力すると、その人のシートの所定のセルに数値が反映する どこのデータをどこに持っていくのか明確じゃないので、名前の右隣のセルにあるデータを新しいシートのA2セルに転記するようにしてみました。 Dim nm Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("C4:C100")) Is Nothing Then Exit Sub If Target.Value <> "" Then Sheets("雛形").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = Target.Value Sheets(Sheets.Count).Range("A2").Value = Target.Offset(0, 1).Value Else On Error GoTo line Sheets(nm).Delete End If Cancel = True Exit Sub line: MsgBox "その名前のシートが見つかりません。", vbCritical, "Σ( ̄ロ ̄lll) " End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) nm = Target.Value End Sub

ninja_mac
質問者

お礼

ありがとうございます。 とても勉強になりました。 感謝いたします。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

雛形という名前のシートがあるものとします。 1.標準モジュールではなく、入力シートのシートモジュールに以下のコードを張ってみてください。(入力シートのタグを右クリックで「コードの表示」でシートモジュールが出ます。) 2.入力シートに新しい名前を追加したら、その名前のセルをダブルクリックしてください。⇒新しい名前のシート(雛形をコピーしたもの)が一番右側に追加されます。 3.また入力シートの「名前」を消したら、その直後に消された空白セルでダブルクリックしてください。⇒その名前のシートを削除します。 以下のコードをコピペ↓ Dim nm Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Value <> "" Then Sheets("雛形").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = Target.Value Else On Error GoTo line Sheets(nm).Delete End If Cancel = True Exit Sub line: MsgBox "その名前のシートが見つかりません。", vbCritical End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) nm = Target.Value End Sub

ninja_mac
質問者

お礼

ありがとうございます。 目からうろこです。勉強になりました。 もう二点よろしければ、お願いします。 「入力シート」での「名前」のタテ(C4が最初の名前でC5,C6...)のセル以外でもクリックするとシートの追加になります。 1.クリックできる範囲指定 2.時給などの諸設定を入力すると、その人のシートの所定のセルに数値が反映する 自助努力にしないで申し訳ないのですが、宜しくお願いします。