Hallo. Ich hätte da ein
Problem in Execl, wo ich nicht mehr weiter weiss.
Beispiel:
Tabelle 1:
In Zelle A1 bis A5 stehen informationen(die ich immer neu eingebe), die mir Excel in Tabelle 2
übertragen soll (kein Problem)
Aber ich möchte, das Excel die Information zb. jetzt in Tabelle 2 auf
A1 bis A5 einträgt. so und wenn ich jetzt in Tabelle 1 neue
Information eingebe, und es wieder in Tabelle 2 übertragen lassen
will, soll Excel jetzt nicht die Zellen A1 bis A5 in Tabelle 2
überschreiben, sondern die nächsten Freien Tabellen nehmen (B1 bis
B5) und so weiter…
Ich hoffe, das sie mir helfen können
Du mußt nur vor dem Einfügen in Tabelle 2 prüfen, ob da schon Werte in der Spalte stehen. Wenn ja, dann kannst Du z.B. mit Range(„XY“).Offset(0,i).Value die nächste Spalte auswählen.
Den Test, ob das Feld leer ist, machst Du in einer Do-Until- oder auch Do-While-Schleife.
Ich probier mal eben:
Sub Kopiere()
Dim i As Integer
i = 0
Do While Range("A1").Offset(0, i).Value ""
i = i + 1
Loop
Range("A1").Offset(0, i).Value = Wert1
Range("A2").Offset(0, i).Value = Wert2
Range("A3").Offset(0, i).Value = Wert3
Range("A4").Offset(0, i).Value = Wert4
End Sub 'Kopiere
Das habe ich nicht ausprobiert, aber es schildert die Idee. Wert1 bis 4 sind die Werte aus Tabelle 1.
Hallo nochmal.
Zuersteinmal Danke, das du mir hilfst. Leider kenne ich mich mit VBA fast nicht aus. Ich habe das Programm jetzt in VBA übertragen, aber es passiert nichts. Muß ich zuerst eingeben, welche Zeile er copieren soll?( Oder steht das schon in deinem Makro?)
Und wie kann ich ihm sagen, das er zb. die Zelle A1 von Tabelle 1 auf tabelle2 copieren soll?
Danke im voraus.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
So funktioniert´s:
Dann probiere mal das hier aus. Kopiere die beiden Prozeduren einfach in das VBA-Modul. Dann solltest Du die Tabelle 1 öffnen, mit der rechten Maustaste auf die Symbolleisten oben klicken, die Leiste „Formular“ oderso aktivieren, dort einen Button auswählen und ihn in der Tabelle platzieren. Es öffnet sich automatisch ein Fenster, in dem Du das Makro auswählen kannst.
Lege ggf. auch einen zweiten Knopf für die andere Prozedur an.
Kristian
Option Explicit
Sub Kopiere()
Dim i As Integer
Const Tabelle1 As String = "Sheet1"
Const Tabelle2 As String = "Sheet2"
Sheets(Tabelle2).Activate
'Falls Du die Tabellen nicht auf zwei verschiedenen Blättern,
'sondern in zwei verschiedenen Dokumenten hast, dann mußt Du
'"Sheets" durch "Workbooks" ersetzen und oben die entsprechenden
'Namen angeben. Diese findest Du notfalls heraus, indem Du die
'Prozedur "ZeigeWorkbookNamen" einmal startest.
i = 0
Do While Range("A1").Offset(0, i).Value ""
i = i + 1
Loop
With Sheets(Tabelle1)
Range("A1").Offset(0, i).Value = .Range("A1").Value
Range("A1").Offset(1, i).Value = .Range("A2").Value
Range("A1").Offset(2, i).Value = .Range("A3").Value
Range("A1").Offset(3, i).Value = .Range("A4").Value
Range("A1").Offset(4, i).Value = .Range("A5").Value
'Range("A1").Offset(0, 0) zeigt auf Feld A1 in Tabelle 2
'Range("A1").Offset(1, 0) zeigt auf Feld A2 in Tabelle 2
'Range("A1").Offset(1, 1) zeigt auf Feld B2 in Tabelle 2 usw.
'".Range("Ax").Value" bezieht sich wegen des "With" auf Tabelle 1.
'In diesen Zeilen wird also kopiert.
End With '
End Sub 'Kopiere
Sub ZeigeWorkbookNamen()
Dim i As Integer
Dim k As Integer
Dim Zeile As String
Zeile = ""
For i = 1 To Workbooks.Count
Zeile = Zeile & "Workbook " & i & ": " & Workbooks(i).Name & vbCr
For k = 1 To Workbooks(i).Sheets.Count
Zeile = Zeile & " Sheet " & k & ": " & Workbooks(i).Sheets(k).Name & vbCr
Next k
Zeile = Zeile & vbCr
Next i
MsgBox Zeile, vbInformation, "Hier sind sie alle:"
End Sub 'ZeigeWorkbookNamen
Hi. Danke nochmal.
Ich habe es so gemacht, aber ich bekomme andauernd die Fehlermeldung „Laufzeitfehler9 Index auserhalb des gültigen Bereichs“
und wenn ich testen anklicke, zeigt er auf die Zeile Sheets(Tabelle2).Activate
Dann hätte ich noch eine Frage, wie kann ich eine den wert einer Zelle copieren, ohne das ich die darin befindente Formel copiere?(Geht das auch mit Makro aufzeichnen)
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich habe es so gemacht, aber ich bekomme andauernd die Fehlermeldung „Laufzeitfehler9 Index auserhalb des gültigen Bereichs“ und wenn ich testen anklicke, zeigt er auf die Zeile Sheets(Tabelle2).Activate
Klar, dann hast Du nicht die korrekten Namen angegeben, so wie ich es ja im Kommentar darunter gesagt habe.
Dann hätte ich noch eine Frage, wie kann ich eine den wert
einer Zelle copieren, ohne das ich die darin befindente Formel
copiere?(Geht das auch mit Makro aufzeichnen)
Zeichne es auf und gucke es Dir an. Ich denke, das geht.