アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < 転職した

シートをコピーして名前を変更するプロシージャ

サンプルには記載していませんが、
シート操作はエラーが起きやすいので、必要に応じてエラー処理が必要になります。

左からA,B,Cとシートが並んでいるとき
コピー元としてシートB、コピーしたシートに付ける名前として「D」を引数にして
このサンプルを実行すると、A,D,B,C という並びになります。

'*
'* シートをコピーする
'*
'* in  wsBaseSheet   コピー元ワークシート
'*     sNewSheetName コピー後のシート名
'*
Private Sub SheetCopy(ByVal wsBaseSheet As Worksheet, ByVal sNewSheetName As String)

    Dim lFmtIndex As Long
    Dim lNewIndex As Long
    
    'シートをコピーして、コピー元の手前に置く
    wsBaseSheet.Copy Before:=wsBaseSheet
    
    'コピー元シートのインデックスを取得する
    lFmtIndex = Sheets(”コピー元シート名”).Index
    'コピー先のインデックスは「コピー元 - 1」
    lNewIndex = lFmtIndex - 1
    
    'コピー先シートの名前を変更する
    ThisWorkbook.Sheets(lNewIndex).Name = sNewSheetName

End Sub