2016-09-06 3 views
0

Ich hoffe, ich habe eine gründliche Suche nach Antworten auf diese jedoch nach dem Versuch, Stück Dinge zusammen, ich konnte die Lösung nicht sehen. Ich versuche, Daten von einem Arbeitsblatt zu einem anderen zu kopieren, basierend auf Benutzereingaben der Zeile, um damit zu beginnen. Wenn sie zum Beispiel "9" eingeben, füge ich einen Buchstaben hinzu, der die Spalte angibt, und beginne mit dem Kopieren von Daten in eine andere Zelle. Hier ist der Code:Excel VBA kopieren Daten von einem Arbeitsblatt zu einem anderen aus der Benutzereingabe auf einem anderen Blatt

Sub Transfer() 

    Dim shSource As Worksheet 
    Dim cellValue As Range 

    Dim formatedCellBegin As Range 
    Dim formatedCellEnd As Range 


    Set shSource = ThisWorkbook.Sheets("Sheet1") 'Get info from user input  sheet 
    Set cellValue = shSource.Cells(4, "H") 'User input taken from "H4" on sheet1 received in regards to what row to start transfer 


    Set formatedCellBegin = "J" & cellValue 'Add J to the that row to get the cell to start at 
    Set formatedCellEnd = "K" & cellValue 'End at cell K - (whatever they pick) 


'Sheet 12 is the sheet with all the invoice info 
'Sheet 11 is the sheet to put all the info 

Sheets("Sheet12").Range("formatedCellBegin:formatedCellEnd").Copy Destination:=Sheets("Sheet11").Range("B20") 
End Sub 

Vielen Dank für Ihre Hilfe

+0

Ich glaube, Sie wollen, dass letzte Zeile 'Sheets zu sein ("Sheet12") Range (formatedCellBegin, FormatedCellEnd) .Copy ...', da 'formatedCellBegin.. Die Adresse sollte so lauten wie "J12". Wenn Sie das Makro mit "F8" durchlaufen, wenn es diese beiden Bereiche einstellt, geben Sie im Direktfenster (drücken Sie STRG + G, um zu sehen) "formatedCellBegin.address" ein, um sicherzustellen, dass es richtig eingestellt ist. – BruceWayne

+0

@Kevin Smith siehe Code und Erklärung in meiner Antwort unten –

Antwort

0

ich es bekam. Da 'formatedCellBegin' und die anderen, die als Strings deklariert wurden, nicht 'Set' haben müssen.

Sub Transfer() 

    Dim shSource As Worksheet 
    Dim cellValue As Range 

    Dim formatedCellBegin As String 
    Dim formatedCellEnd As String 
    Dim fullRange As String 


    Set shSource = ThisWorkbook.Sheets("Sheet10") 'Get info from user input sheet 
    Set cellValue = shSource.Cells(4, "H") 'User input received in regards to what row to start transfer 


    formatedCellBegin = ("J" & CStr(cellValue)) 'Add J to the that row to get the cell to start at 
    formatedCellEnd = ("K" & CStr(cellValue)) 'End at cell K - (whatever they pick) 

    fullRange = formatedCellBegin & ":" & formatedCellEnd 

'Blatt 12 ist das Blatt mit allen Rechnungs Info ' Blatt 11 ist das Blatt alle ThisWorkbook.Sheets die Infos zu setzen ("Sheet12") Range (Fullrange-) .Copy Destination:. = Thisworkbook .Sheets ("Sheet11"). Range ("B20") End Sub

0

in Ihrem Fall müssen Sie nicht formatedCellBegin und formatedCellEndAs Range, aber in Ihrem Fall definieren und wie Sie sie verwenden Sie definieren sie As String.

Auch Cellvalue ist ein Wert, den Sie von einer Zelle erhalten, eine Reihe darstellt, so dass Sie es definieren müssen As Long (oder Integer).

Versuchen Sie den geänderten Code unter:

Sub Transfer() 

Dim shSource As Worksheet 
Dim cellValue As Long  
Dim formatedCellBegin As String 
Dim formatedCellEnd As String 

Set shSource = ThisWorkbook.Sheets("Sheet1") ' Get info from user input sheet 
cellValue = shSource.Cells(4, "H") ' User input taken from "H4" on sheet1 received in regards to what row to start transfer 

formatedCellBegin = "J" & cellValue ' Add J to the that row to get the cell to start at 
formatedCellEnd = "K" & cellValue ' End at cell K - (whatever they pick) 

'Sheet 12 is the sheet with all the invoice info 
'Sheet 11 is the sheet to put all the info  
Sheets("Sheet12").Range(formatedCellBegin & "," & formatedCellEnd).Copy Sheets("Sheet11").Range("B20") 

End Sub 
Verwandte Themen