2017-09-29 3 views
1

vlookupを問題なく使用できるように、現在のアクティブなワークシートを変数として設定したいと考えています。なぜなら、このマクロを毎日実行し、毎日アクティブなワークシートに新しい名前(新しい日付)が設定されているからです。今私のマクロの中で私はActiveSheetを使用していますが、私は多くのvlookupを使用して前後に行きますので、それは挫折します。私はもっと明確になるようにコードの始めを提供します..私が必要とするのは、アクティブブックを変数として使用します。あなたがアクティブなワークシートを2回変更する見ることができるように、この方法では、でも、アクティブなワークシートが変更された場合、古い現在のワークシートが..変数式で作業するために現在のワークシートを変数として設定する

Application.DisplayAlerts = False 
ActiveSheet.Cells.Copy 
Worksheets.Add.Name = ActiveSheet.Name & "_Daily_RCCP" 
With ActiveSheet 
.Cells.PasteSpecial xlValues 
.Cells.PasteSpecial xlFormats 
End With 
Application.DisplayAlerts = True 

として保存されますので、私は最後のアクティブなワークシートなどを設定したいです変数

+6

Worksheet'として '薄暗いWSと' WS = ActiveSheet'設定されていますか? –

+0

2つのアクティブなワークシートを作成したい場合は、最初のワークシートがある場合、Dim ws1をワークシートとして設定し、ws1 = ActiveSheetを設定し、他の現在のアクティブワークシートが使用されている場合、ワークシートとしてDim ws2を設定し、ws2 =両方のワークシートは名前が付けられているかのように保存されますか? –

答えて

3

@ScottCranerがコメントで言及したものを引き出す。

Dim ws1 as Worksheet 
Set ws1 = ActiveSheet 

Worksheets.Add.Name = ws1.Name & "_Daily_RCCP" 

Dim ws2 as Worksheet 
Set ws2 = ActiveSheet 'bc adding a sheet automatically makes it active 

ws1.Cells.Copy 

With ws2.Cells 
    .PasteSpecial xlValues 
    .PasteSpecial xlFormats 
End With 

'n.b. - i would personally avoid copying all the cells in a worksheet 
'instead copying the usedrange or some defined range 
3

私は少しスコット・ホルツマンの答えを書き直したい:タブ名、ユーザーが見ている(.Name)、およびすることができます他の名前:

Dim ws1 as Worksheet, ws2 as Worksheet 

Set ws1 = ActiveSheet 
'here you add a sheet and directly assign it to a variable 
Set ws2 = Worksheets.Add.Name = ws1.Name & "_Daily_RCCP" 

ws1.Cells.Copy 

With ws2.Cells 
    .PasteSpecial xlValues 
    .PasteSpecial xlFormats 
End With 

はまた、各シートは、2名を持っていることがわかり取りますVBE(.CodeName)からのみ参照してください。
実際には、Sheet1(CodeName)の背後にいくつかのコードを置く場合は、ThisWorkbookを使用してコードを含むブックを指定するのとまったく同じように、Me(現在のクラスオブジェクト)を使用して参照することもできます。

そのため、この方法の上に書き換えることができます:

Dim ws2 as Worksheet 
'here you add a sheet and directly assign it to a variable 
Set ws2 = Worksheets.Add.Name = Sheet1.Name & "_Daily_RCCP" 
'No need for an extra variable ws1 since we use the CodeName 

sheet1.Cells.Copy 

With ws2.Cells 
    .PasteSpecial xlValues 
    .PasteSpecial xlFormats 
End With 

またはコードは、シート1の背後にある場合:

Dim ws2 As Worksheet 
Set ws2 = Worksheets.Add 
ws2.Name = Me.Name & "_Daily_RCCP" 
'No need for an extra variable ws1 since we use Me 
Me.Cells.Copy 

ws2.PasteSpecial xlPasteValuesAndNumberFormats 
関連する問題