Zeilenbereich auf Tabelle übertragen
#1
Servus zusammen,
hoffe das mir jemand helfen kann :)
Hab natürlich schon meinen lieben Freund Google um Rat gefragt, allerdings finde ich nicht ganz das passende bzw ist es für mich recht schwierig einen VBA Code umzubauen wenn man es nie richtig gelernt hat ;)

Zu meinem derzeit größeren Problem:

ich habe es tatsächlich geschaft eine funktionierende Userform an mein Formular anzupassen ...
Alles was ich in der Userform eingebe, wird in meiner ersten Tabelle ab Zeile 8 eingetragen.

in Tabelle "Q" wird, ebenfalls mit der Userform, ein Kürzel eingetragen.
Jedes Kürzel hat einen Bezug zu einem Bestimmten Tabellenblatt.

Nun hätte ich gerne, das alle Daten die in der ersten Tabelle ab Zeile "8" eingetragen wurden, ihrem Kürzel entsprechend auf das richtige Tabellenblatt ab Zeile "33" kopiert werden.

- Die Reichenfolge sollte dabei nicht geändert werden

- Die Spalten zum kopieren, wären von "A" bis "S"
(Die Spalten beim Einfügen sind die selben)

- Die Übertragung der Daten könnte evtl.
Beim Öffnen des jeweiligen Blattes ausgeführt werden.

-Der Bezug von Kürzel und Tabellen-Namen, kann aus der letzten Tabelle erfolgen.
Spalte "A" Kürzel Spalte "B" Blattname


Ich hoff ich hab soweit an alles gedacht und hoffe sehr das mir jemand helfen kann.

Gruß Stefan


Angehängte Dateien
.xls   2Testdatei.xls (Größe: 288,5 KB / Downloads: 1)
Top
#2
Hallo Stefan

teste es mal so:


' **************************************************************
'  Modul:  DieseArbeitsmappe  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Workbook_Open()
 UserForm1.Show
End Sub

Private Sub Workbook_SheetActivate(ByVal sh As Object)
 Dim i As Long, j As Long, k As Long
 Dim rngVerweistabelle As Range
 Dim varKuerzel As Variant
 Dim varQ As Variant, varZ As Variant
 Set rngVerweistabelle = Worksheets("Nebenrechnungen").Range("A1:B7")
 varKuerzel = Application.Index(rngVerweistabelle, Application.Match(sh.Name, rngVerweistabelle.Columns(2), 0), 1)
 If Not IsError(varKuerzel) Then
   With Worksheets("Rolliste")
     varQ = .Range("A8:A" & Application.Max(8, .Cells(Rows.Count, 1).End(xlUp).Row)).Resize(, 19).Value
   End With
   ReDim varZ(1 To UBound(varQ, 1), 1 To UBound(varQ, 2))
   For i = 1 To UBound(varQ, 1)
     If varQ(i, 17) = varKuerzel Then
       k = k + 1
       For j = 1 To UBound(varQ, 2)
         varZ(k, j) = varQ(i, j)
       Next j
     End If
   Next i
   If k Then
     With sh.Range("A33:A" & Application.Max(33, sh.Cells(Rows.Count, 1).End(xlUp).Row))
       .Resize(, UBound(varQ, 2)) = ""
       .Resize(k, UBound(varQ, 2)).Value = varZ
     End With
   End If
 End If
End Sub
Der Code greift beim Aktivieren eines Blattes.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • lion7123
Top
#3
Servus und habe die Ehre  :21: 

also wenn du mir antwortest, kann ich mich eigentlich schon zurücklehnen und die Füße entspannt hochlegen :19: :19: :19:

hab den Code jetzt gerade in meine Testdatei hochgeladen und soweit ich es auf die schnell beurteilen kann, funktioniert auch alles  :17: 
Eine Spalte hab ich anscheinend falsch angegeben aber das schaff ich denk ich zum ausbessern und war somit auch mein Fehler Angel 
Die Wichtigen Spalten werden aber einwandfrei übertragen und ich sag schonmal tausend Dank !!!!

werd das ganze nun ins original einbauen was bischen zeit kostet damit ich nix kaputt mache Blush 
Sag aber dann nochmal bescheid!

In diesem Sinne, noch an schönen Tag und nochmal vielen Dank :100: 
Gruß
Stefan
Top
#4
Hi,

Zitat:werd das ganze nun ins original einbauen was bischen zeit kostet damit ich nix kaputt mache [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

zum Testen eignet sich am besten eine Kopie des Originals - dann geht auch nichts "kaputt". Wink
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • lion7123
Top
#5
So servus Blush
@ Willwissen: war falsch ausgedrückt von mir ... meinte natürlich ein Kopie des Originals Angel 


So nun zum eigentlichen ...:

Der Code funktioniert wie gesagt und die Spalten passen alle. Hab mich letztens nur verschaut Blush 

Allerdings sind mir ein zwei andere Sachen aufgefallen wo ich hilfe bräuchte Confused  habs die letzten Tage auch fleißig selbst versucht aber naja ....
Also ..
Wenn ich in der Userform Daten eingebe, überträgt dein Code alles Top auf die jeweiige Tabelle...
Sobald ich jetzt aber eine Zeile Lösche bleibt die Zeile trozdem in der Tabelle die angegeben war.

Das andere ist, mir ist leider erst in der Original Datei bzw. in einer Kopie davon Blush  aufgefallen das der Löschen button die ganze Zeile löscht.
Was blöd ist, weil im Anschluss noch Daten kommen die da stehn bleiben müssen.

Nun meine Idee ... wie bau ich den code der Userform so um, dass er nicht die ganze Zeile  löscht oder evtl. nur die Felder mit der Eingabe leert.
Die Leerzeilen wo dadurch entstehen, wären nich so tragisch, da es nicht so oft vorkommen sollte.

Außerdem müsste es dann auch möglich sein, wenn die Eingabe von ID und Kürzel weiter bestehen bleibt, die Eingabefelder im anderen Tabellenblatt zu leeren.

Ich hoffe des war ansatzweise verständlich ausgedrückt.

Danke schonmal und vielleicht bis später Blush



PS: ich such seit Monaten eine VBA Lösung, dass ein Command Button, mir die Zeile markiert (und ganz nach oben scrollt), wo der Wert einer Combobox steht
-- Das nur kurz zwischendurch weil es mich echt an den Rand der Verzweiflung treibt. -- :22:
Top
#6
Hallo,

Zitat:Das andere ist, mir ist leider erst in der Original Datei bzw. in einer Kopie davon aufgefallen das der Löschen button die ganze Zeile löscht.
Was blöd ist, weil im Anschluss noch Daten kommen die da stehn bleiben müssen.

Nun meine Idee ... wie bau ich den code der Userform so um, dass er nicht die ganze Zeile  löscht oder evtl. nur die Felder mit der Eingabe leert.

... ob mit Formeln oder mit VBA, einen Teil von Zeilen kannst Du nicht löschen.

Eine Möglichkeit wäre es, in den entsprechenden Zellen die Schriftfarbe der
Hintergrundfarbe der Zelle anzupassen. Eine andere Möglichkeit ist, die Zellinhalte
zu löschen.
Top
#7
@[b]Käpt'n Blaubär[/b]

So hab ich das auch gemeint Blush
also statt löschen, was ja sowieso nicht funktioniert,
dann eben die Eingabe löschen / leeren oder durch ein Leerzeichen ersetzen. :21:

Die Farbliche Variante ist an sich nich verkehrt, allerdings kann ich mich in der Hinsicht nicht so ganz damit anfreunden Confused
Top
#8
Hallo,

Zitat:Die Farbliche Variante ist an sich nich verkehrt, allerdings kann ich mich in der Hinsicht nicht so ganz damit anfreunden

... das wäre, beim Einsatz von VBA, ohnehin der gleiche Aufwand  :05:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste