In diesem Forum wurde ich böse angegangen da ich mich mit Excel und VBA nicht so gut auskenne und einige Fehler in mein Excel eingebaut habe, und halt mit dem Makrorekorder etwas zu erreichen.
... oder du bist einfach empfindlich. ?? Denn so ganz ergibt das was du schreibst keinen Sinn.
Wenn du hier wirklich "böse angegangen" wurdest, warum versuchst du es erneut? Warum nicht in einem anderen Foren, in dem das nicht passiert ist? Jedenfalls impliziert deine Behauptung genau das.
Jedenfalls: Foren sind nicht dafür gedacht sich Grundlagen erklären zu lassen. Dafür gibt es Tutorials - schriftlich, oder heutzutage sogar als Video - und Fachliteratur. Wenn dich also jemand angefahren hat, weil du einfach zu faul bist dir Grundlagen anzueigenen, dann würde ocj mich demjenigen sogar gerne anschließen.
Tipp: Wenn du im Internet unterwegs bist, dann leg dir ein dickeres Fell zu.
Jetzt zum eigentlichen Thema:
Set B_Kopf = Sheets("Aufträge").Range("b4")
Hier wird die Zelle B4 referenziert; unter dem Variablenamen B_Kopf und die ist dabei vom Datentyp Range.
Für dein geschildertes Wunschverhalten braucht man aber erstmal gar keine Variable. Es wäre ganz trivial so möglich:
Worksheets("Aufträge").Range("B4").Value = Worksheets("Eingabe").Range("E8").Value
Worksheets("Aufträge").Range("C4").Value = Worksheets("Eingabe").Range("E10").Value
Worksheets("Aufträge").Range("D4").Value = Worksheets("Eingabe").Range("E12").Value
Worksheets("Aufträge").Range("G4").Value = Worksheets("Eingabe").Range("E14").Value
Hinweis: Tabellenblatt (engl. Worksheet) und Blatt/Seite (engl. Sheet) steht für Tabellenblatt ODER Diagramblatt. => Daher, wenn man ein Tabellenblatt meint, nimmt man die Worksheets-Auflistung.
Nun sieht das in der jetzigen Form aber irgendwie nicht so schön aus, es ist auch ein wenig redundant (die Namen der Tabellenblätter kommen mehrfach vor). Also führen wir Variablen ein:
Dim wksEingabe As Excel.Worksheet
Dim wksAuftraege As Excel.Worksheet
Set wksEingabe = Worksheets("Eingabe")
Set wksAuftraege = Worksheets("Aufträge")
wksAuftraege.Range("B4").Value = wksEingabe.Range("E8").Value
wksAuftraege.Range("C4").Value = wksEingabe.Range("E10").Value
wksAuftraege.Range("D4").Value = wksEingabe.Range("E12").Value
wksAuftraege.Range("G4").Value = wksEingabe.Range("E14").Value
Wenn das ganze jetzt noch automatisch untereinander geschrieben werden soll, also nicht immer bei B4 beginnend, dann so:
Dim wksEingabe As Excel.Worksheet
Dim wksAuftraege As Excel.Worksheet
Set wksEingabe = Worksheets("Eingabe")
Set wksAuftraege = Worksheets("Aufträge")
Dim rngLeereZelle As Excel.Range
Set rngLeereZelle = wksAuftraege.Cells(wksAuftraege.Rows.Count, "B").End(xlUp).Offset(1)
If rngLeereZelle.Row < 4 Then
Set rngLeereZelle = wksAuftraege.Range("B4")
End If
wksAuftraege.Cells(rngLeereZelle.Row, "B").Value = wksEingabe.Range("E8").Value ' B4, B5, ... = E8
wksAuftraege.Cells(rngLeereZelle.Row, "C").Value = wksEingabe.Range("E10").Value ' C4, C5, ... = E10
wksAuftraege.Cells(rngLeereZelle.Row, "D").Value = wksEingabe.Range("E12").Value ' D4, D5, ... = E12
wksAuftraege.Cells(rngLeereZelle.Row, "G").Value = wksEingabe.Range("E14").Value ' G4, G5, ... = E14
Grüße
PS: Der Code ist freihand getippt. Tippfehler, und daraus folgende Kompilierungsfehler, sind daher möglich.
|