Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere Zellen ansprechen VBA

mehrere Zellen ansprechen VBA
26.02.2020 09:39:45
Nico264
Hallo liebes Forum,
ich habe einen Code bei dem ich eine neue Zeile unter der aktuellen zeile einfügen lasse. Dadurch sind aber die Formeln die ich in Excel eingegeben habe natürlich nicht in der eingefügten Zeile vorhanden.
Ich habe im Forum einen Beispielcode entdeckt und diesen für meine Bedürfnisse angepasst. Jedoch bin ich ein Amateur und ich lasse jetzt jede Zelle einzeln durchlaufen und die Formel nach unten kopieren. Weiß jemand wie ich das vereinfachen kann, damit es nicht so lange braucht diese funktion umzusetzten?
Hier mein Code:
Sub T_LOP_Unterpunkt_click(Optional uhu As Boolean)
'-- keine Sprache
Dim z_nummer, z_titel As Range, r_zeile, ii, i As Integer, zellwert As String
r_zeile = ActiveCell.Row
' Pr?fen zeile ob unter Filterzeile
If r_zeile (kleiner) T_versteck.Range("K29").Value Then
ActiveCell.Offset(1, 0).EntireRow.Insert
'-----------Formeln "runterziehen" f?r die neu eingef?gte zeile----------
Dim lngLetzte As Long 'letzte Zeile
With ActiveSheet
'letzte Zeile auffinden:
lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
.Range(.Cells(r_zeile, 9), Cells(r_zeile + 1, 9)).Formula = .Cells(r_zeile, 9).Formula 'Formel aus i10 runterkopieren:
.Range(.Cells(r_zeile, 10), Cells(r_zeile + 1, 10)).Formula = .Cells(r_zeile, 10).Formula
.Range(.Cells(r_zeile, 11), Cells(r_zeile + 1, 11)).Formula = .Cells(r_zeile, 11).Formula
.Range(.Cells(r_zeile, 14), Cells(r_zeile + 1, 14)).Formula = .Cells(r_zeile, 14).Formula
.Range(.Cells(r_zeile, 15), Cells(r_zeile + 1, 15)).Formula = .Cells(r_zeile, 15).Formula
.Range(.Cells(r_zeile, 16), Cells(r_zeile + 1, 16)).Formula = .Cells(r_zeile, 16).Formula
.Range(.Cells(r_zeile, 17), Cells(r_zeile + 1, 17)).Formula = .Cells(r_zeile, 17).Formula
.Range(.Cells(r_zeile, 18), Cells(r_zeile + 1, 18)).Formula = .Cells(r_zeile, 18).Formula
.Range(.Cells(r_zeile, 19), Cells(r_zeile + 1, 19)).Formula = .Cells(r_zeile, 19).Formula
End With
Ich Danke euch schon mal im Voraus und Gruß
Nico
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Zellen ansprechen VBA
26.02.2020 09:57:56
Nepumuk
Hallo Nico,
ein einfaches Copy mit anschließendem PasteSpecial sollte es tun.
Beispiel:
Public Sub Test()
Call ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.EntireRow.Copy
ActiveCell.Offset(1, 0).EntireRow.PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
End Sub

Gruß
Nepumuk
Anzeige
AW: mehrere Zellen ansprechen VBA
26.02.2020 10:04:06
Nico264
Hallo Nepumuk,
Danke für deine schnelle Antwort. Ich habe vergessen zu erklären dass ich nur bestimmte Zellen ansprechen bzw kopieren will und nicht die ganze Zeile. Dein Code kopiiert die ganze Zeile oder?
Mein Fehler.
Gruß Nico
AW: mehrere Zellen ansprechen VBA
26.02.2020 10:11:04
Nepumuk
Hallo Nico,
du fügst doch eine ganze Zeile ein.
Gruß
Nepumuk
Anzeige
AW: mehrere Zellen ansprechen VBA
26.02.2020 10:47:19
Nico264
Hi Nepumuk,
du hast recht, aber ganz allgemein gefragt:
gibt es eine einfacherer Möglichkeit nur den Inhalt der sechs Zellen zu kopieren und nicht die ganze Zeile? Der Rest soll kann erstmal außen vor bleiben.
Ich Danke dir
Gruß
AW: mehrere Zellen ansprechen VBA
26.02.2020 12:13:07
Klaus
Hallo Nico,
Dim i As Long
For i = 9 To 19
.Range(.Cells(r_zeile, i), Cells(r_zeile + 1, i)).Formula = .Cells(r_zeile, i).Formula
Next i
LG,
Klaus M.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Zellen ansprechen in VBA


Schritt-für-Schritt-Anleitung

  1. Zelle ansprechen: Um in VBA mehrere Zellen anzusprechen, kannst Du den Bereich mit Range oder Cells definieren. Beispiel:

    Dim rng As Range
    Set rng = Range("A1:A10")
  2. Formeln kopieren: Wenn Du Formeln aus einer bestimmten Zelle in mehrere Zellen kopieren möchtest, kannst Du eine Schleife verwenden. Hier ein einfaches Beispiel:

    Dim i As Long
    For i = 1 To 10
       Cells(i + 1, 1).Formula = Cells(i, 1).Formula
    Next i
  3. Einfügen einer neuen Zeile: Um eine neue Zeile unter der aktuellen Zeile einzufügen, nutzt Du:

    ActiveCell.Offset(1, 0).EntireRow.Insert
  4. Kopieren von spezifischen Zellen: Wenn Du nur bestimmte Zellen innerhalb einer Zeile ansprechen möchtest, kannst Du dies mit einer Schleife tun:

    Dim i As Long
    For i = 9 To 19
       Cells(r_zeile + 1, i).Formula = Cells(r_zeile, i).Formula
    Next i

Häufige Fehler und Lösungen

  • Fehler: Zelle nicht gefunden: Wenn Du versuchst, eine Zelle anzusprechen, die nicht existiert, erhältst Du einen Laufzeitfehler. Stelle sicher, dass die Zelle innerhalb des gültigen Bereichs liegt.

  • Fehler: Formel wird nicht korrekt kopiert: Überprüfe, ob Du die richtige Zelle angesprochen hast. Verwende Debug.Print um den aktuellen Wert zu überprüfen.


Alternative Methoden

  • Copy und PasteSpecial: Eine einfache Möglichkeit, mehrere Zellen zu kopieren und einzufügen, ist die Verwendung von Copy und PasteSpecial. Beispiel:

    ActiveCell.EntireRow.Copy
    ActiveCell.Offset(1, 0).EntireRow.PasteSpecial xlPasteFormulas
  • Zellen in einem Array speichern: Du kannst Werte in ein Array speichern und dann in die Zielzellen einfügen. Dies kann die Performance verbessern, besonders bei großen Datenmengen.


Praktische Beispiele

  1. Kopieren von Formeln in mehrere Zellen:

    Sub KopiereFormeln()
       Dim i As Long
       Dim r_zeile As Long
       r_zeile = ActiveCell.Row
       For i = 9 To 19
           Cells(r_zeile + 1, i).Formula = Cells(r_zeile, i).Formula
       Next i
    End Sub
  2. Einfügen einer Zeile und Kopieren spezifischer Zellen:

    Sub NeueZeileEinfügen()
       Dim r_zeile As Long
       r_zeile = ActiveCell.Row
       ActiveCell.Offset(1, 0).EntireRow.Insert
       Dim i As Long
       For i = 9 To 19
           Cells(r_zeile + 1, i).Formula = Cells(r_zeile, i).Formula
       Next i
    End Sub

Tipps für Profis

  • Nutze With-Anweisungen, um den Code lesbarer zu machen und die Performance zu steigern.
  • Vermeide das wiederholte Ansprechen von Zellen. Speichere Werte in Variablen oder Arrays.
  • Teste Deinen Code schrittweise, um Fehler schnell zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen in einer Zeile ansprechen?
Du kannst Cells in einer Schleife verwenden, um spezifische Zellen in einer Zeile anzusprechen, wie im obigen Beispiel gezeigt.

2. Was ist der Unterschied zwischen Range und Cells?
Range wird verwendet, um einen Bereich von Zellen anzusprechen, während Cells eine spezifische Zelle innerhalb eines Bereichs adressiert.

3. Kann ich auch leere Zellen in den Kopiervorgang einbeziehen?
Ja, Du kannst leere Zellen mit xlPasteFormulas kopieren, aber sie erhalten dann auch die Formel, die Du kopierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige