2017-10-30 8 views
1

アクティブなコントロールボタンに割り当てられたMarcoを使用して、同じスプレッドシート内の別のスプレッドシートにデータをコピーするマクロを書き込もうとしています。また、私は他のシートにコピーした後にフィールドからデータを消去するボタンを使用します。しかし、私はこのコードをデバッグするのに苦労しています。誰でも援助を提供できますか?マクロとアクティブコントロールボタンを使用して1つのスプレッドシートから別のスプレッドシートにデータをコピー

Private Sub CommandButton1_Click() 
    Dim OrderDate As String, Job As String, AccountManager As String 
    Dim Site As String, DueDate As String, BudgetedHours As String 
    `enter code here`Supervisor As String 
    Dim TotalPieces As String, Billedhours As String, UnitsCompleted As String 
    Dim EmployeeName As String, Task As String 
    Dim StartTime As String, FinishTime As String, TotalTime As String 
    Dim Notes As String 

    Worksheets("Assembly Work Form").Select 
    Date = Range("B3") 
    Job = Range("B4") 
    CustomerName = Range("B5") 
    AccountManager = Range("B7") 
    Supervisor = Range("B8") 
    Site = Range("B9") 
    DueDate = Range("B10") 
    BudgetedHours = Range("B11") 
    TotalPieces = Range("F5") 
    Billedhours = Range("F3") 
    UnitsCompleted = Range("F6") 
    EmployeeName = Range("B15") 
    Task = Range("B15") 
    StartTime = ("E17") 
    FinishTime = ("G17") 
    TotalTime = ("I17") 
    Notes = Range("K17") 

    Worksheets("AssemblyTotals").Select 
    Worksheets("AssemblyTotals").Range("A2").Select 

    If Worksheets("AssemblyTotals").Range("A3").Offset("1,0") <> "" Then 
     Worksheets("AssemblyTotals").Range("A2").End(xlDown).Select 
    End If 

    ActiveCell.Offset(1, 0).Select 
    ActiveCell.Value = Date 
    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = Job 
    ActiveCell.Offset(-1, 0).Select`enter code here` 
    ActiveCell.Value = CustomerName 
    Worksheets("Assembly Work Form").Select 
    Worksheets("Assembly Work Form").Range("DataFields").ClearContents 
End Sub 
+0

Range( "B15") 'を2回使用している理由を明確にすることはできますか?また、 'Date'、' Job'、 'CustomerName'だけを"コピー "したいですか?要するに、いくつかの余分な文脈が歓迎されるだろう。 最後に、[select and activeCellなど]を避けてください(https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba) –

+0

@RikSportelはい、私はユーザーがアクティブなコントロールボタンをクリックするたびに、日付、仕事、顧客名などを別のスプレッドシートにコピーするようにします。この個別のスプレッドシートはすべての情報を記録して保存します。 –

+0

答えを参照してください、それはあなたが必要なすべてを持っています。 –

答えて

0

基本的には、何がやりたいことは以下の通りです:もちろん

Private Sub CommandButton1_Click() 
    Worksheets("AssemblyTotals").Range("SomeTargetAddress").Value = Worksheets("Assembly Work Form").Range("SomeSourceAddress").Value 'Copy a value 
    Worksheets("Assembly Work Form").Range("SomeSourceAddress").ClearContents 'Clear the original value 
End Sub 

有効なセル参照に "SomeTargetAddress" と "SomeSourceAddress" に変更します。

Private Sub CommandButton1_Click() 
    Worksheets("AssemblyTotals").Range("A2:A100").Value = Worksheets("Assembly Work Form").Range("A2:A100").Value 'Do 99 cells at once 
End Sub 

をそして、あなたは最初の空行で開始する場合:また、あなたが一度に複数のセルを行うことができます覚えておいてください、あなたが意図していない限り、

Private Sub CommandButton1_Click() 
    Dim wr as Long 'Variable to store the row 
    wr = Worksheets("AssemblyTotals").Range("A2").End(xlDown).Row + 1 
    Worksheets("AssemblyTotals").Range("A" & wr).Value = Worksheets("Assembly Work Form").Range("A2:A100").Value 'Do 99 cells at once starting at the first empty row in Column A. 
End Sub 

最初の変数のすべてを保存する必要はありません後でそれらの変数をより多くの場所で使用することができます。また、私のコメントで述べたようにActiveCellSelectなどを使用しないでください。

上記に基づいて、今すぐ行う必要があるのは、セルを正しくマップするだけです。それだけです。

関連する問題