• ベストアンサー

シートを追加したときにタイトルの連番も自動で

WindowsXP EXCELL2003 いつも御世話になります。 納品書と請求書が一緒になった 「納請書」 がブックには3シートを用意しています。 受注が追加されるごとにこの「納請書3」のコピーとして追加します。 図で言うと「納請書4」という具合にです。 この場合 「納請書3」のコピーですからタイトルは B3 納品書(3) B32 請求書(3)   となりこれを B3 納品書(4) B32 請求書(4) と自動的に変えられる方法はないでしょうか。 可能ならばご指導いただけませんでしょうか。 ※現在は 入力規則 でその都度、手動で対応していますが結構変更ミスが多く防止をしたいためです。 シートのコピーのマクロは以下です。 Sub シートの追加() Dim NewNo As Integer NewNo = Sheets("月請求書").Index Sheets("納請書3").Copy Before:=Sheets("月請求書") ActiveSheet.Name = "納請書" & NewNo End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

マクロを使わなくともB3セルにシート名から作成する次のような式を入力しておくことでコピーが作られてもそのシート名に対応した名前が表示されますね。 ="納品書 (" & MID(TRIM(MID(CELL("filename",B3),FIND("]",CELL("filename",B3))+1,10)),4,LEN(TRIM(MID(CELL("filename",B3),FIND("]",CELL("filename",B3))+1,10)))-3) & ")" また、B32セルには次の式を入力します。 ="請求書 (" & MID(TRIM(MID(CELL("filename",B32),FIND("]",CELL("filename",B32))+1,10)),4,LEN(TRIM(MID(CELL("filename",B32),FIND("]",CELL("filename",B32))+1,10)))-3) & ")"

dorasuke
質問者

お礼

いつも クリモトさん に御世話になります。 心より感謝します。 お陰でうまくいきました。 誠に有難うございました。

その他の回答 (2)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

おや、どこかで見たコードだなぁ。。。(^^;; というこで、今回も回答せねば。。 '--------------------------------------------- Sub シートの追加()  Dim NewNo As Integer  NewNo = Sheets("月請求書").Index  Sheets("納請書3").Copy Before:=Sheets("月請求書")  ActiveSheet.Name = "納請書" & NewNo  ActiveSheet.Range("B1").Value = "納 品 書(" & NewNo & ")"  ActiveSheet.Range("B32").Value = "請 求 書(" & NewNo & ")" End Sub '-------------------------------------------- 以上です。  

dorasuke
質問者

お礼

No3にて解決しました。 いつも御世話になります。 心より感謝します。 誠に有難うございました。

dorasuke
質問者

補足

前回は有難うございました。 テストして、 シートを追加して「納請書3」をコピーして 納品書4 請求書4 はうまくいきました。 このタイトルが左寄りになってセンター寄せにしたいのですが。 半角で17回エンターを寄せればセンターに来るのですがどうすればいいでしょうか。 恐れ入りますが宜しくご指導いただけませんか。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

Range("B3").Value = "納品書(" & NewNo & ")" Range("B32").Value = "請求書(" & NewNo & ")"

dorasuke
質問者

お礼

No3にて解決しました。 いつも御世話になります。 誠に有難うございました。

関連するQ&A

  • マクロでのシートの連番について

    WindowsXP EXCELL2003 いつも御世話になります。 「マクロ実行」でシートの追加はすでに下記でご指導いただきました。 http://oshiete1.goo.ne.jp/qa5351508.html ご指導を仰ぎたいのは、 「納請書」が現在 1~3 迄は作成しています。 例えば 下記マクロを実行して このシート(納請書)を順次追加した時に シート名が「納請書4」「納請書5」「納請書6」と表示することは可能でしょうか Sub シートの追加() Sheets("納請書3").Copy Before:=Sheets("月請求書") ActiveSheet.Name = "納請書" & Worksheets.Count End Sub  このマクロで実行すると「納請書10」からはじまります。 現在、シート数は 9シートを使用している結果だと思います。 もし可能ならば、 ご指導よろしく御願いしくます。

  • 同ブック内でシートを追加したときにシート名と連番が

    WindowsXP EXCELL2003 いつも御世話になります。 何とか自分で作りたく色々調べてトライしましたが分からなくなりご教授を願う事になりよろしく御願いします。 仰ぎたいのは 納品書と請求書が一緒になった ・シート名「納請書1」、 がA4で1枚になったシートがあります。 とりあえずこの納請書なるものは3シート用意しています。 受注が追加されるごとに「納請書3」のシートコピーをして「納請書4」その都度追加します。 これをマクロの実行とか何かの方法で追加することは可能でしょうか。 もし可能ならばいい方法をご指導いただけませんでしょうか。 取り合えず1例で下記のマクロを Sub シートの追加とプロパティ操作() Dim NewWS As Worksheet Set NewWS = Worksheets.Add(After:=Worksheets("納請書3")) With NewWS .Name = "納請書4" .Columns.ColumnWidth = 20 End With End Sub このやり方は私か調べた物でトンチンカンかも知りません。 「マクロの実行」 Sheet3シートの追加とプロパティ操作 で「実行」すると次のように出ます。 「インデックスが有効範囲にありません」

  • マクロで値なしでシートをコピーしたい

    受注が追加されるたびに「納請書3」をペースに下記のマクロでシートを追加コピーします。 シートを追加すると G4 の発行日の値もそのままにコピーされ追加の都度消しています。 ご指導を仰ぎたいのは、 シートをコピーしたときは G4  の値は表示させたくないことが可能でしょうか。 可能ならご指導いただけませんでしょうか。 ※C10 に件名を入れたときにG4に発行日が表示されるマクロは下記です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub ※シートの追加のマクロです。 Sub シートの追加() Dim NewNo As Integer NewNo = Sheets("月請求書").Index Sheets("納請書3").Copy Before:=Sheets("月請求書") ActiveSheet.Name = "納請書" & NewNo End Sub 宜しく御願いします。

  • シートの移動又はコピー したシートの値のクリアー

    WINDOWS XP EXCELL 2003です。 「値のクリァー」のマクロはすでに、 ここで御指導いただいたマクロは下記です。 http://okwave.jp/qa/q6663748.html Sub Clear() On Error Resume Next range("H2,G4,C10,C15,F15,G15").SpecialCells(xlCellTypeConstants).ClearContents End Sub 上記マクロは「納請書3」にそうにして「シート追加」で「納請書4」作成したところ下記のマクロを実行すると「納請書3」のシートの値がクリアーになります。 御指導いただきたいのは既に「納請書3」値が有りこれはクリアーしたくありません。 新たにシートを追加してゆくと前のシートの値か残り追加シートの値をクリアーするにはクリアーは可能でしょうか。 もし可能ならば「値のクリアー」のマクロをどう変更すればいいのかご教授いただけないでしょうか。 よろしく御願いします。 ※ 参考で既に「納請書3」のシートには下記マクロの2点が登録しています。 1  「シートの追加」のマクロが下記です。 Sub シートの追加()    Dim NewNo As Integer   NewNo = Sheets("月請求書").Index Sheets("納請書3").Copy Before:=Sheets("月請求書")   ActiveSheet.Name = "納請書" & NewNo   ActiveSheet.Range("G4").Value = "" End Sub 2  日付とシート表示の色付け    Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If If Target.Address = "$G$15" Then ActiveSheet.Tab.ColorIndex = 49 End If End Sub

  • IFの数式の作り方

    いつも御世話になります。 A4のページに納品書と請求書をまとめたシート(納請書)があります。 このシートはとりあえずブックとしては3シート(納請書1~3)を用意してあります。 必要に応じ納請書4~増やします。 この時月締めになると1枚の請求書(月請求書)にまとめます。 月請求書について質問します。 No3 B17 =INDIRECT("納請書"&ROW(A3)&"!$B15") C17 =INDIRECT("納請書"&ROW(A3)&"!H2") D17 =INDIRECT("納請書"&ROW(A3)&"!C41") というように式を入れています。 この時納請書4を追加したときは上の式をB18 C18 D18とオートフィルしています。 この手動を自動化したく空白の時は空白のままにしたいのですが、ご指導いただけませんでしょうか。

  • 印刷時に表示されないように

    WINDOWS XP EXCELL2003 いつも御世話になります。 現在は「条件付書式で 0より値が小さい フォントを白にしています。」 理由は 納請書2 以降にまだ値か入っていない場合、印刷をしないように対応しています。 ご指導を仰ぎたいのは 現在の数式が白のままで2行毎にパターンを追加した場合に ※ 図のように  ##### が表示されないようにするのには お知恵をお貸し下さい。 この時「=MOD(ROW(),2)=0」を条件書式を追加すると フォントの白 が設定できません。 それぞれに下記の数式が設定しています。 B15 =INDIRECT("納請書"&ROW(A1)&"!$B15") B16 =INDIRECT("納請書"&ROW(A2)&"!$B15") B17 =INDIRECT("納請書"&ROW(A3)&"!$B15") ここからは現在は作成していませんが受注が増えた場合は 納請書3 のコピーをして順次追加します。 B18(納請書4)~B24(納請書10)と取りあえず追加が可能です。 「納請書4」以降の場合 =IF(ISERR(INDIRECT("納請書"&ROW(A4)&"!B15")),"",INDIRECT("納請書"&ROW(A4)&"!B15")) ~

  • Execel VBA でシートの作成後、コピペがうまくいかない。

    シートのコピー&ペーストがしたくて、以下のPGを 組みましたが、うまくいきません。 (1)(2)と二通り試してみましたが、両方だめでした。 どなたか、おわかりになるかた、教えてください。 for i = 1 To page_cnt (1)Sheets.Add ActiveSheet.Name = "請求書(控)" & i Sheets("請求書" & i).Select sheet_name = "請求書(控)" & i Sheets(sheet_name).Cells("A1").Select Selection.Paste (2) Sheets.Add ActiveSheet.Name = "納品書(控)" & i Sheets("納品書" & i).Cells.Copy Sheets("納品書(控)" & i).Paste Next

  • エクセルVBA 追加したシート名をハイフン(-)を入れて連番にする方法

    エクセル2003です。 シートをコピーし追加、 一つ前のシートの一部セルをセル参照するコードを作成しました。 今の段階ではコピーしたシート名が請求書1、請求書2、請求書3・・・となるのですが シート名を請求書1-1、請求書1-2、請求書1-3・・・とすることは可能でしょうか? "請求書"を"請求書1-"にするとコピーしたシートのセル参照をした部分が うまく参照されずエラーになってしまいます。 シート名にハイフンを入れてもエラーが出ない方法をご存じの方いらっしゃいましたら 是非ご教授をお願い致します。 Sub test1() Dim i As Integer Worksheets(2).Select For i = 2 To 5 Worksheets(2).Copy after:=ActiveSheet ActiveSheet.Name = "請求書" & i With Worksheets("請求書" & i) .Range("H15").Formula = "=請求書" & i - 1 & "!F10" End With Next i End Sub

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • シートをコピーして シートに1から連番をふる

    (マスター)というシートがありまして、そのシートをコピーしてシート名に1からの連番をふる マクロをお教え下さい。 Sub sub_CopySample() Dim myLooP As Integer For myLooP = 1 To 10 Sheets("マスター").Copy After:=Sheets(myLooP) Next myLooP For myLooP = 1 To 10 Sheets(myLooP + 1).Name = myLooP Next myLooP End Sub これだと止まりません。 1シートづつ増やしたいのですが。

専門家に質問してみよう