2016-06-22 5 views
0

現在、私が作成しようとしているマクロをコンパイルする際に問題が発生しています。私は名前付き範囲または別のシート上の実際の範囲を使用しようとし、コピーして、現在のシートにそのデータを貼り付けています。今月の毎日このマクロを実行できるように、データを現在のシートに投稿します。ここで私はコンパイルしたものですが、何らかの理由でActiveSheetを使用できません。添付されたコードです。Excel VBAマクロの問題

Sub Macro1() 

' Daily Route Sheet 

    Sheets("2").Select 
    ActiveCell.Range("A1:H44").Select 
    Selection.Copy 
    Sheets("ActiveSheet").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End Sub 
+0

私はあなたが 'Sheets(" Sheet1 ")を持っていると思っています。選択しますが、何も選択せずにこれを行うのがベストでしょう。 –

+0

いいえ、私はシート2から情報を取得しようとしています - 私はそれを "2"と命名し、検査官がすぐにそれをクリックできるようにしました。だから私がやろうとしているのは、請負業者がコピー&ペーストしたいのですが、特殊なペーストを使用しないので、名前のついた範囲が壊れてしまいます。私は範囲を隠し、コピーして2日目とし、例えば23日目に入れることができるものを書こうとしています。別の日のデータをコピーして、作業中の現在のシートに投稿したい –

+0

名前が「ActiveSheet」のシートがある場合は、シートを削除するだけでよい場合は、シート(「ActiveSheet ")。選択 ' – Juanpablomo

答えて

3

の代わりに、選択しカット&ペースト、しかし、私はあなたのポイントにマットに同意

ActiveSheet.Select 

Sub Macro1() 
    Worksheets("Sheet1").Range("A1:H44").Value = Worksheets("Sheet2").Range("A1:H44").Value 
End Sub 
+0

ワークシート( "シート1")範囲( "A1:H44")=ワークシート( "シート2")範囲( "A1:H44")は意味がありますが、現在作業中のシート上でどのように取得できますか?これは私の問題です。 –

+1

'Worksheets(" Sheet1 ")。Range(" A1:H44 ").Valueを' ActiveSheet.Range( "A1:H44")。Value'に変更してください。元々のように '.Value'を省略しないでください。 –

+0

@hipster_pete - 作業中のシートを参照するように数式の左部分を変更するだけです。 「Sheet1」でない場合は、「mySheetName」などに変更してください。 – BruceWayne

0

変更

Sheets("ActiveSheet").Select 

を考えますから離れようとするべきです

+0

私もそれに同意します - 私は=部分が好きです、私は現在のシートに情報を得ることに固執しています –

-3

サブにMacro1() ActiveSheet.Range( "A1:H44")。値=ワークシート( "2")範囲( "A1:H44")。。値 End Subのマットへ

賞賛答えのために!

+2

しないでください。その代わりに、チェックマークをクリックして、Mattの回答を受け入れたものとしてマークしてください。 –

0

"ActiveSheet"は文字列です。 Activesheetはワークシートオブジェクトです。

Activesheet.range("A1").valueは、Sheets(Activesheet.name).valueまたはSheets(Activesheet.index).valueに相当します。 Sheets(またはWorksheets、ウィッヒが同じである)ためである

、(braquetsで参照することができます)トラフ自分の名前(文字列であること)、またはそのインデックス(番号、ウィッヒはワークブック内のシートの位置である)のいずれか。

Worksheetsは、ワークブックのシートのコレクション(コレクションでは、一種の配列を意味します)です。

Activesheetは、すでにアクティブなシートにアクセスするためのVBAの簡単な方法です。セルと同じ方法でActiveWorkbook' for workbooks, or ActiveCellとなります。それらはオブジェクトであり、ストリングではありません。