Excel VBA. Wie kann ich eine Zelle in ein anderes Tabellenblatt in eine bestimmte Spalte einfügen?

1 Antwort

Dim sht As Worksheet
Dim sht2 As Worksheet
Dim rng As Range
Dim rng2 As Range

Set sht = ActiveWorkbook.Worksheets(1)
Set sht2 = ActiveWorkbook.Worksheets(2)

Dim lastRow As Long
lastRow = sht2.Cells(sht2.Rows.Count, "B").End(xlUp).Row

Set rng = sht.Cells(11, 1)
Set rng2 = sht2.Cells(lastRow + 1, 2)

'Nun hast du 2 Wege mit denen du deinen Wert übermitteln kannst
'Kopieren und Einfügen oder einfach die Value von rng1 auch in rng2 reinschreiben

'Option 1: Kopieren & Einfügen
rng.Copy
rng2.Select
sht2.Paste

'Option 2: Value übermitteln
rng2.Value = rng.Value

Ich würde dir Option 2 raten, aber wollte dir Option 1 nicht vorenthalten :)

MFG xGlumi

Woher ich das weiß:eigene Erfahrung – Programmier/IT Erfahrung seit 2009 (Freizeit und Beruf)
lula08 
Fragesteller
 19.07.2017, 19:46

Hallo xGlumi,
Vielen dank für deine Hilfreiche Antwort. Hat alles Funktioniert, wie es auch soll. Kannst du mir vielleicht bei einem weiteren Problem helfen? Unzwar: Das soll ein Rechnungsprogramm werden. Ich möchte jetzt, dass man auf ein Button klickt und es soll sich dann eine Userform öffnen, wo man dann die Rechnungsnummer suchen kann.(Userform+Button mit verknüpfung habe ich schon erstellt. Es fehlt nur der VBA Teil.) Die Rechungsnummer befindet sich mit allen anderen Daten wie Adresse, Datum, Menge,Produkt... in der Tabelle "Rechnungen". Nun soll Excel, wenn bei der UserForm die Rechungsnummer eingegeben hat und auf "Suchen" geklickt hat die Rechungsnummer mit den Daten, die ALLE in einer Zeile sich befinden (Also ein Kunde hat eine ganze Zeile) in das Tabellenblatt "Gesuchte Rechnung" in bestimmte Zeilen eintragen. Z.B. Die Rechnungsnummer in Zeile M21 oder die Kundendaten in A11. Und wenn es die Rechungsnummer nicht gibt soll dan eine Msgbox kommen, wo dann steht "die Rechnungsnummer gibt es nicht".
Wäre echt super wenn du mir da weiterhelfen kannst.

MFG lula08

0
xGlumi  20.07.2017, 09:52
@lula08

Wenn die Rechnungsnummer gefunden worde, soll dann die gesamte Zeile übertragen werden oder nur die Rechnungsnummer aus der Zelle?

MFG xGlumi

0
xGlumi  20.07.2017, 10:04
@xGlumi

Ich habe jetzt einfach beide Varianten in meinen Code reingenommen, und sie wieder mit Option 1 bzw. Option 2 gekennzeichnet.


Bitte sehr


Dim term As String
term = "Hier kommt dein Suchbegriff rein"

Dim lastCol As Long
Dim i As Long
Dim cell As Range
Dim found As Boolean

Dim rechnungenSheet As Worksheet
Dim gesuchteRechnungSheet As Worksheet
Set rechnungenSheet = ThisWorkbook.Worksheets("Rechnungen")
Set gesuchteRechnungSheet = ThisWorkbook.Worksheets("Gesuchte Rechnung")


lastCol = rechnungenSheet.Cells(rechnungenSheet.Rows.Count, "A").End(xlUp).Row 'A ersetzen mit dem Spaltenbuchstaben wo die Rechnungsnummern stehen

For i = 1 To lastCol
Set cell = rechnungenSheet.Cells(i, 1) '1 Musst du mit der Spaltennummer der Rechnungsnummer ersetzen

If term = cell.Value Then
found = True
cell.EntireRow.Copy 'Option 1: Gesamte gefundene Zeile kopieren
Exit For
End If
Next i

If Not found Then
MsgBox ("Nicht gefunden")
Else
gesuchteRechnungSheet.Select 'Option 1: Anderes Tabellenblatt auswählen
gesuchteRechnungSheet.Rows(1).EntireRow.Select 'Option 1: Gesamte Zeile im neuen Tabellenblatt selektieren (Ersetze die 1 mit der gewünschten Zeilennummer)
gesuchteRechnungSheet.Paste 'Option 1: Gesamte kopierte Zeile in die gewünschte neue Zeile im neuen Tabellenblatt einfügen
gesuchteRechnungSheet.Cells(1, 1).Value = cell.Value 'Option 2: Die Value der gefundenen Rechnungsnummerzelle in die neue Zelle einfügen (1,1 musst du noch ersetzen mit der gewünschten Zeilen, Spaltennummer)
End If


MFG xGlumi

1
lula08 
Fragesteller
 20.07.2017, 20:53
@xGlumi

Erstmal vielen Dank für die gute, schnelle und hilfreiche antwort! Eins verstehe ich aber noch nicht ganz genau. Dein Code bezieht sich doch aber speziell auf eine Rechnungsnummer? Richtig? Ich frage, weil am Anfang ja steht "Hier kommt dein Suchbegriff rein" und "' 1 Musst du mit der Spaltennummer der Rechnungsnummer ersetzten". Es soll ja möglich sein, dass man in der Userform eine Rechnungsnummer sucht, von z.B. 1000 Stück und die in der Zelle stehenhende Rechnungsnummer z.B. A24 hat rechts bis Spalte AV Kundendaten drinne. Also als Beispiel: Ich suche die Rechnungsnummer 14. Die Nummer steht dann in "Rechnungen" in der Zelle A15. In B15 steht dann seine Adresse. In C15 den Artikel den er gekauft hat... die Werte sollen dann in ein anderes Blatt "Gesuchte Rechnung" Also dann: Von "rechnungen" A15 soll dann in "Gesuchte Rechnung" in M21. Und so weiter. Hoffentlich war das von mir Verständlich.

MFG

0
xGlumi  20.07.2017, 21:24
@lula08

Alle Rechnungsnummern stehen doch in einer Spalte oder nicht?
Und die Spaltennummer sollst du bei "1" eingeben.

Da ich deine logik noch nicht verstanden hab wie sich die Zielzeile ergibt kann ich dazu nichts sagen.

MFG xGlumi

0
lula08 
Fragesteller
 20.07.2017, 21:54
@xGlumi

Kann doch kommentieren. Sorry... Ich habe mich verlesen. Ich habe an Zeilennumer gedacht und war verwirrt... Aber ich glaube dein Code kann nicht jetzt, wenn ich Rechnungsnummer 2 suche von "Rechnungen" A2 in Sheet "Gesuchte Rechnungen" in B15 eintragen, von "Rechnungen" B2 in Sheet "Gesuchte Rechnung" C6 usw. Okay unten habe ich gesehen das Option 2 von dir das kann, doch das bezieht sich doch nur auf die Rechnungsnummer? Richtig? Der Code kann doch nicht das gleiche für die Kundendaten, Kaufdatum, Produkt... machen oder? Und nochmal sorry für dieses hin und her :)

MFG

  A  B             C           D       E     ...
1 1 Max Müller 20.07.2017 Kleber 4€
2 2 Peter Schmidt 19.07.2017 Reifen 59€
3 3 Klaus Mann 15.06.2017 Stift 1,20€
4 4
5 5
6 6
7 7
8 8
9 9
10 10
...

In Spalte A steht die Rechnungsnummer

In Spalte B stehen die Kunden Daten

In Splate C steht das Kaufdatum

In Spalte D steht das Produkt

In Splate E steht der Preis

0