Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Problem mit VBA Code - Werte aus Zellen in andere Zeilen übertragen
#1
    Hallo Profis,

ich bin sicher, das es hier ne Menge davon gibt und mir einer davon helfen kann. Smile

Ich bin purer Anfänger in VBA-Codes.
Ich habe mit unterem Code folgendes Problem:

Es sollen mehrere Zellwerte kopiert werden und im gleichem Tabellenblatt ab A7 bis F7 eingefügt werden.
Der Code funktioniert soweit "Ja", doch er soll beim nächsten Aufruf unter der nächst freien Zeile (also unter A7) die Werte eintragen. Das klappt bei also noch nicht, es wird immer wieder die Zeile A7 bis F7 überschrieben. Sad

Ich hoffe, das mir jemand hier schnell eine Lösung geben kann. Vielleicht gibt es auch noch einen besseren Code?

Hier mein Code:

Code:
Sub Nächster_Artikel()
  Dim wksEingabe As Worksheet
  Dim wksListe As Worksheet
  Dim lngZeile As Long, rngZelle As Range
  
  Set wksEingabe = Worksheets("Einkauf")  'Eingabetabellenblatt
  Set wksListe = Worksheets("Einkauf")      'Tabellenblatt in das die Daten geschrieben werden _
sollen
  
  With wksListe
    'nächste freie Zeile in Liste
    Set rngZelle = .Cells.Find(What:="*", after:=.Range("A1"), LookIn:=xlFormulas, _
        lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
    If rngZelle Is Nothing Then
      lngZeile = 1
    Else
      lngZeile = rngZelle.Row + 1
    End If
    
    .Cells(lngZeile, 1).Value = wksEingabe.Range("K5")
    .Cells(lngZeile, 2).Value = wksEingabe.Range("K6")
    .Cells(lngZeile, 3).Value = wksEingabe.Range("K10")
    .Cells(lngZeile, 4).Value = wksEingabe.Range("K20")
    .Cells(lngZeile, 5).Value = wksEingabe.Range("K14")
    .Cells(lngZeile, 6).Value = wksEingabe.Range("K22")
    'usw.

  End With
End Sub

Ich habe mal einem Bildausschnitt hier mit beigefügt.

Ich hoffe, das sich jemand mit meinem Problem befassen möchte. Smile

Ich bedanke mich jetzt schon ganz fest dafür.

Lg Mike

Code strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
 photo Raute_zps3ee56209.jpg
Moderator
?mage
to top
#2
Hi Mike,

(22.11.2014, 11:19)Mike4711 schrieb: Ich bin purer Anfänger in VBA-Codes.
Ich habe mit unterem Code folgendes Problem:
[...]
Ich habe mal einem Bildausschnitt hier mit beigefügt.

Ich hoffe, das sich jemand mit meinem Problem befassen möchte. Smile

es würden sich bestimmt ein paar mit Deinem Problem befassen wollen, aber wie sollen sie das Makro auf ein Bild anwenden, um es testen zu können?

Also stelle doch bitte (D)eine (Beispiel-)Tabelle als Excel-Datei zur Verfügung oder stelle die relevanten Ausschnitte hier dar, siehe die als Wichtige Themen markierten Forums-Beiträge!
Die farbigen Texte sind anklickbare Links:

Beitrag 1 Für Neulinge im Forum: Arbeitsmappen zur Verfügung stellen
Beitrag 2 Für Neulinge im Forum: Tabellenausschnitte im Forum einstellen

Sensible Daten können/sollten vor Einstellen anonymisiert werden.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#3
Hi Mike,

(22.11.2014, 11:19)Mike4711 schrieb: Es sollen mehrere Zellwerte kopiert werden und im gleichem Tabellenblatt ab A7 bis F7 eingefügt werden.
Der Code funktioniert soweit "Ja", doch er soll beim nächsten Aufruf unter der nächst freien Zeile (also unter A7) die Werte eintragen. Das klappt bei also noch nicht, es wird immer wieder die Zeile A7 bis F7 überschrieben. Sad

Ich hoffe, das mir jemand hier schnell eine Lösung geben kann. Vielleicht gibt es auch noch einen besseren Code?

mit dem folgenden Code kann die letzte belegte Zeile in Spalte A bestimmt werden:
Code:
Dim loLetzte&

'letzte benutzte Zelle anhand Spalte A feststellen
loLetzte = Cells(Rows.Count, 1).End(xlUp).Row

diese wird dann anstelle der Variablen "lngZeile" im Code (wegen WITH-Schleife mit Punkt vor Cells) verwendet, dann schreibt Excel immer in die erste freie Zeile:

Code:
Dim loLetzte&

With wksListe
    'letzte benutzte Zelle anhand Spalte A feststellen
    loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
    
    'erste freie Zelle:
    loLetzte = loLetzte + 1
    
    .Cells(loLetzte, 1).Value = wksEingabe.Range("K5")
    .Cells(loLetzte, 2).Value = wksEingabe.Range("K6")
    .Cells(loLetzte, 3).Value = wksEingabe.Range("K10")
    .Cells(loLetzte, 4).Value = wksEingabe.Range("K20")
    .Cells(loLetzte, 5).Value = wksEingabe.Range("K14")
    .Cells(loLetzte, 6).Value = wksEingabe.Range("K22")
    'usw.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
[-] Folgende(r) 1 Benutzer sagt Danke an Rabe für diesen Beitrag:
Mike4711
to top
#4
Hallo Mike,

Du willst doch nur in Spalte A auf die letzte belegte Zelle prüfen, also musst Du das auch so schreiben.

Statt Set rngZelle = .Cells.Find(What:="*", ...
also Set rngZelle = .Columns(1).Find(What:="*", ...

Gruß Uwe
to top
#5
Hallo Rabe,

an welcher stelle soll ich das in meinem Code einsetzen?

Lg Mie
to top
#6
Hallo, ich habe es hin bekommen,

mit diesem Code und er packt es immer unter die nächste Zeile.

Code:
Sub Nächster_Artikel()
    Dim i As Long
    Const NewConstSheet As String = "Einkauf"
    Dim bfound As Boolean
    Dim sMerk As String
    Dim sMaxZeile As Long
    Dim TB As Worksheet
    
    Application.ScreenUpdating = False
    
    'Prüfen ob Tabelle NewConstSheet schon angelegt ist
    For i = 1 To ActiveWorkbook.Sheets.Count
        If ActiveWorkbook.Sheets(i).Name = NewConstSheet Then
            bfound = True
            Exit For
        End If
    Next i
    
    'wenn nicht dann anlegen
    If bfound = False Then
        sMerk = ActiveWorkbook.ActiveSheet.Name
        ActiveWorkbook.Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        ActiveWorkbook.ActiveSheet.Name = NewConstSheet
        ActiveWorkbook.Sheets(sMerk).Activate
    End If
    
    Set TB = ActiveWorkbook.Sheets(NewConstSheet)
    
    'nächste leere Zeile ermitteln
    sMaxZeile = TB.Cells(TB.Rows.Count, 2).End(xlUp).Row + 1
    
    'Daten in neue Tabelle übertragen
    TB.Cells(sMaxZeile, 1) = ActiveWorkbook.ActiveSheet.Range("K5")
    TB.Cells(sMaxZeile, 2) = ActiveWorkbook.ActiveSheet.Range("K6")
    TB.Cells(sMaxZeile, 3) = ActiveWorkbook.ActiveSheet.Range("K10")
    TB.Cells(sMaxZeile, 4) = ActiveWorkbook.ActiveSheet.Range("K20")
    TB.Cells(sMaxZeile, 5) = ActiveWorkbook.ActiveSheet.Range("K14")
    TB.Cells(sMaxZeile, 6) = ActiveWorkbook.ActiveSheet.Range("K22")
    
    Application.ScreenUpdating = True
End Sub
to top
#7
Hallo Mike,

mal unabhängig von eventuellen weiteren Verbesserungsmöglichkeiten zwei Tips.

(1) Wenn Du was mit dem aktiven Blatt machen willst, dann brauchst Du das meist nicht anzugeben. ActiveWorkbook und ActiveSheet kannst Du Dir meistens sparen.
(2) Wenn Du mehrere Aktionen mit einem Objekt, hier z.B. einem Blatt, ausführen willst, gibt es das WITH. Wichtig dabei ist, dass dann der codeteil, der sich auf das mit WITH angesprochene Objekt bezieht, mit einem Punkt beginnt - siehe hier ".Cells" bzw. weiter oben Ralf's code.

Code:
[code]With ActiveWorkbook.Sheets(NewConstSheet)
.Cells(sMaxZeile, 1) = Range("K5")
...
End With
[/code]
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  VARIABLEN MITTELWERT AUF ANDERE ZELLEN ÜBERTRAGEN (relativer Spaltenbezug) suncruiser 4 71 24.11.2016, 06:11
Letzter Beitrag: BoskoBiati
  Werte übertragen mit Bedingung und Zeilen überspringen Asmus 9 132 19.11.2016, 19:25
Letzter Beitrag: Asmus
  Zeilen kopieren und mit Formeln und Format, aber ohne Werte einfügen Peter Pan 7 115 18.11.2016, 08:17
Letzter Beitrag: Kuwer
  Werte aus Blatt 1 nach Passworteingabe in Blatt 2 übertragen Atila2016 23 381 28.10.2016, 11:09
Letzter Beitrag: schauan
  (SQL)-Verbindung von einer Exceldatei in eine andere Übertragen Hans Huber 2 68 24.10.2016, 16:43
Letzter Beitrag: shift-del
  BESTIMMTE ZEILEN IN EINE ANDERE TABELLEN KOPIEREN Berndt 3 263 17.10.2016, 06:44
Letzter Beitrag: Berndt
  KKLEINSTE und Werte aus andere Spalte Udo 10 237 16.10.2016, 19:16
Letzter Beitrag: Udo
  Werte von einer Tabelle in die andere übertragen (automatisch) TheBug 9 313 19.09.2016, 10:52
Letzter Beitrag: TheBug
  Excel Zeilen in ausfüllbares PDF übertragen Steffen90 10 513 05.09.2016, 16:24
Letzter Beitrag: schauan
  Einzelne Zellen-Werte aus gefilterter Zeile Steffen90 4 252 26.08.2016, 09:01
Letzter Beitrag: Steffen90

Gehe zu:


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