Live-Forum - Die aktuellen Beiträge
Datum
Titel
02.12.2024 13:15:39
02.12.2024 12:41:41
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Daten aus tabelle in andere übertragen makro
Jens
Hallo Leute,
nachdem ich mich jetzt seit tagen mit Macros rumärgere dachte ich, ich wende mich mal an die Profis.
Also ich habe folgendes Problem:
Ich habe dein Tabellenblatt das eigentlich als eingabeblatt fungiert. Ich bräuchte ein Makro dass z.B.
Die Zelle B10 von Tabellenblatt1 in die Zelle A1 des Tabellenblatt3 kopiert. Gleichzeitig soll z.B. die Zelle G12 der Tabelle 1 in die Zelle A2 der tabelle 2. Also ich möchte im Tabellenblatt 3 eine zusammenfassung in einer Zeile haben und unterschiedliche Zellen der ersten tabelle in einer Zeile der zweiten Tabelle haben. Das Makro bekomm ich noch über den recorder hin. Aber jetzt kommts. Natürlich überschreibt es mir immer wieder die Daten da ich ja so immer nur auf die gleichen zellen komme. Ich braüchte also ein Makro dass mir die Daten in der zweiten Tabelle nebeneinander setzt aber immer die nächste spalte benutzt ohne die vorherigen Daten zu löschen. Ich verwende Excel 2007. Kann mir da jemand weiterhelfen bevor ich den Computer noch aus dem fenster werfe? Ich habe auch einige ansätze mit range und was weiß ich probiert aber das haut alles nicht hin!
Wäre super wenn mir da jemand helfen könnte.
Gruß Jens
AW: Daten aus tabelle in andere übertragen makro
02.08.2011 14:02:25
JoWE
Hallo Jens,
vermutlich hast Du eine Schaltfläche im Tabellenblatt, welche die entsprechende Aufgabe erledigen soll.
Dann könnte dies hier funktionieren:
Private Sub CommandButton1_Click()
Dim shQuelle, shZielTbl2, shZielTbl3 As Worksheet
Set shQuelle = ThisWorkbook.Sheets("Tabelle1")
Set shZielTbl2 = ThisWorkbook.Sheets("Tabelle2")
Set shZielTbl3 = ThisWorkbook.Sheets("Tabelle3")
With shQuelle
shZiel.Cells(shZielTbl2.Cells(shZielTbl2.Rows.Count, 2).End(xlUp) + 1, 1) = shQuelle. _
Range("B10")
shZiel.Cells(shZielTbl3.Cells(shZielTbl3.Rows.Count, 7).End(xlUp) + 1, 2) = shQuelle. _
Range("G12")
End With
End Sub

Gruß
Jochen
Anzeige
AW: Daten aus tabelle in andere übertragen makro
02.08.2011 15:08:09
Jens
Hallo Jochen,
danke für die schnelle Antwort aber irgendwie bekomme ich da einen Laufzeitfehler.
Vielleicht habe ich mich auch schlecht ausgedrückt:
Also vom Tabellenblatt 1 sollen die Zellen: B10, G10,G11, B26, H26 und G12 in das Tabellenblatt 3, nebeneinander in eine linie, also in A1, B1, C1, D1, E1, und F1. Die sollen dort auch gespeichert bleiben.
Wenn ich jetzt das Tabellenblatt 1 erneut öffne und die Daten ändere sollen wieder die geänderten Daten jetzt aber in A2, B2, C2 usw., so dass mir die vorigen daten nicht überschrieben werden. Es sollte also in der Tabelle 3 eine fortlaufende Auflistung der Daten stehen. Diesen makro würde ich dann nach der Eingabe über einen button ausführen.
Anzeige
AW: Daten aus tabelle in andere übertragen makro
02.08.2011 14:25:35
Henrik
Hallo Jens,
etwas ausführlicher erklärt, dass du es entsprechend anpassen kannst.
Die Variable ZEnde entspricht dem, womit Jowe arbeitet. Bei mir nur als Beispiel.
Probier mal aus, damit du für vba ein Gefühl bekommst. Eleganter, kürzer und schicker kommt später.
Im VBA-Editor Rechtskleck auf Arbeitsmappe -> einfügen -> modul dort folgendes einfügen
Sub KopiermichmalKreuzundQuer()
' erstmal Variablen definieren
Dim wksQuelle As String, wksZiel1 As String, wksZiel2 As String, zae As Integer, ZEnde
Dim ZE_Q As Integer, SP_Q As Integer
Dim ZE_Z1 As Integer, SP_Z1 As Integer
Dim ZE_Z2 As Integer, SP_Z2 As Integer
wksQuelle = "Tabelle1"      ' hier Name des Blattes von dem kopiert wird
ZE_Q = 10                   ' Variable für Zeilennummer
SP_Q = 2                    ' Variable für Spaltennummer  ="B10"=cells(ZE_Q,SP_Q)
wksZiel1 = "Tabelle3"       ' hier Name des Blattes in das kopiert wird
ZE_Z1 = 1                   ' Variable für Zeilennummer
SP_Z1 = 1                   ' Variable für Spaltennummer  ="A1"=cells(ZE_Z1,SP_Z1)
wksZiel2 = "Tabelle2"       ' hier Name des Blattes in das kopiert wird
ZE_Z2 = 2                   ' Variable für Zeilennummer
SP_Z2 = 1                   ' Variable für Spaltennummer  ="A2"=cells(ZE_Z2,SP_Z2)
' Und alles in einer Schleife (ich denke mal, du willst mehr als eine Zeile kopieren)
For zae = 0 To 9 Step 1   ' Schleife von 0 bis 9, immer um 1 erhöht
With ThisWorkbook
.Worksheets(wksZiel1).Cells(ZE_Z1 + zae, SP_Z1) = .Worksheets(wksQuelle).Cells(ZE_Q,  _
SP_Q)
.Worksheets(wksZiel2).Cells(ZE_Z2, SP_Z2 + zae) = .Worksheets(wksQuelle).Cells(ZE_Q,  _
SP_Q)
'Zeilennummer wo letzter Eintrag in der Spalte. Ab Zeile 50000 nach oben gesucht
ZEnde = .Worksheets(wksZiel1).Cells(50000, SP_Z1).End(xlUp).Row
End With
Next zae
End Sub
Gruß Henrik
Anzeige
AW: Daten aus tabelle in andere übertragen makro
02.08.2011 15:14:54
Jens
Hallo Henrik,
vielen Dank für die schnelle Antwort. Aber irgendwie komm ich damit garnicht klar wenn ich das makro modifiziere und ausführe schreibt er mir die daten 10 mal in eine spalte.
Vielleicht habe ich mich auch schlecht ausgedrückt:
Also vom Tabellenblatt 1 sollen die Zellen: B10, G10,G11, B26, H26 und G12 in das Tabellenblatt 3, nebeneinander in eine linie, also in A1, B1, C1, D1, E1, und F1. Die sollen dort auch gespeichert bleiben.
Wenn ich jetzt das Tabellenblatt 1 erneut öffne und die Daten ändere sollen wieder die geänderten Daten jetzt aber in A2, B2, C2 usw., so dass mir die vorigen daten nicht überschrieben werden. Es sollte also in der Tabelle 3 eine fortlaufende Auflistung der Daten stehen. Diesen makro würde ich dann nach der Eingabe über einen button ausführen.
Danke Jens
Anzeige
Dann auf die kurze Tour
02.08.2011 15:45:03
Henrik

Sub hopp()
Dim muh, zae, Ende
With ThisWorkbook.Worksheets(1)
muh = Array(.Range("B10"), .Range("G10"), .Range("G11"), .Range("B26"), _
.Range("H26"), .Range("G12"))
End With
With ThisWorkbook.Worksheets(3)
Ende = .Range("A50000").End(xlUp).Row
If IsEmpty(.Range("A1")) Then
Ende = .Range("A50000").End(xlUp).Row
Else
Ende = .Range("A50000").End(xlUp).Row + 1
End If
.Range(.Cells(Ende, 1), .Cells(Ende, 6)) = muh
End With
End Sub

AW: Dann auf die kurze Tour
02.08.2011 16:10:05
Jens
Super vielen Dank das funzt allerdings hab ich noch ein kleines problem:
In der Zelle G11 wird in Tabelle 1 das aktuelle Datum angezeigt also 02.08.2011 und im Tabellenblatt 3 steht dann nur 40757 ?
Anzeige
NumberFormat = "dd.mm.yyyy"
02.08.2011 16:15:45
Henrik

Sub hopp()
Dim muh, zae, Ende
With ThisWorkbook.Worksheets(1)
muh = Array(.Range("B10"), .Range("G10"), .Range("G11"), .Range("B26"), _
.Range("H26"), .Range("G12"))
End With
With ThisWorkbook.Worksheets(3)
If IsEmpty(.Range("A1")) Then
Ende = .Range("A50000").End(xlUp).Row
Else
Ende = .Range("A50000").End(xlUp).Row + 1
End If
.Range(.Cells(Ende, 1), .Cells(Ende, 6)) = muh
.Range("C1:C50000").NumberFormat = "dd.mm.yyyy"
End With
End Sub

AW: NumberFormat = "dd.mm.yyyy"
02.08.2011 16:34:05
Jens
Danke dir! Aber habs anderst gelöst habe im Tabellenblatt 3 die spalte einfach als Datumsformat deklariert und schon klappts ;-)
Aber vielen Dank für Deine super hilfe!"
Anzeige
AW: NumberFormat = "dd.mm.yyyy"
02.08.2011 17:46:50
Jens
Hallo Henrik,
ich trau mich fast garnicht zu fragen! ;-)
Hab jetzt alles hinbekommen und es klappt. Jetzt hab ich noch etwas vor. Ich habe noch ein anderes Makro laufen, welches mir eine Kopie des ersten Tabellenblattes als PDF ablegt. Diese Pdf´s befinden sich dann im Ordner: C:/Lieferscheine . Der Name wird aus G10 und B11 erzeugt (incl. .pdf) das funktioniert auch wunderbar. Wäre es denn jetzt möglich auf der zusammenfassung (Tabelle3) in dem aus G10 kopierten jetzt in der Spalte B stehenden feld automatisch einen hyperlink erstellen zu lassen der wiederum auf das pdf-dokument zugreift?
Wenn das zu aufwendig ist sags ruhig aber wenn ich das hinbekäme wäre super. Also mein jetziger Megamakro den ich aus vielen zusammengebastelt habe sieht im moment so aus:
Sub druck()
' druck Makro
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Lieferscheine\" & Format(Range("G10")) & " " & Format(Range("B11")) & ".pdf",  _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Dim muh, zae, Ende
With ThisWorkbook.Worksheets(1)
muh = Array(.Range("B11"), .Range("G10"), .Range("G11"), .Range("B26"), _
.Range("H26"), .Range("G12"))
End With
With ThisWorkbook.Worksheets(3)
Ende = .Range("A50000").End(xlUp).Row
If IsEmpty(.Range("A1")) Then
Ende = .Range("A50000").End(xlUp).Row
Else
Ende = .Range("A50000").End(xlUp).Row + 1
End If
.Range(.Cells(Ende, 2), .Cells(Ende, 7)) = muh
End With
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
Range("G12:G14").Select
Selection.ClearContents
Range("B11:B18").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 20
Range("B26:G33").Select
Selection.ClearContents
Range("H26:H33").Select
Selection.ClearContents
Range("C36:G38").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 23
ActiveWindow.SmallScroll Down:=11
Range("B46:B49").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 33
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("G10") = Range("G10") + 1
Range("B11").Select
ActiveWorkbook.Save
ActiveWorkbook.Save
End 

Sub

Anzeige

348 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige