Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Cells Bereich mit Variablen -VBA

Cells Bereich mit Variablen -VBA
23.01.2018 13:40:49
Hendrik
Ein herzlichen Hallo an alle,
ich sitze hier schon etwas eine Stunde und komme nicht auf meinen Fehler.
Ich möchte eine bestimmte Zeile von Tabellenblatt 1 in Tabellenblatt 2 übertragen.
Da die Zeile variabel sein muss habe ich es mit Range(Cells.... versucht. Ich bekomme jedoch einen Anwendungsfehler: Laufzeitfehler '1004' zurück.
Kann mir jemand Licht ins Dunkle bringen?
Vielen Dank schon mal vorab!
Hier der Code zum Verständnis:
Sub eliminieren()
Worksheets("T-und S-Nummern").Select
Dim i As Integer
Dim Max As Long
Dim zeile As Long
Dim Wort As String
Dim w As Integer
w = 0
Max = Worksheets("Tabelle3").Range("AR1")
For i = 1 To Max
Dim obGef As Object
Wort = Worksheets("Tabelle3").Range("AO" & 2 + w)
With Worksheets("T-und S-Nummern").Columns(8) 'anpassen
Set obGef = .Find(Wort, LookIn:=xlValues, Lookat:=xlPart)
If Not obGef Is Nothing Then
Worksheets("Tabelle3").Range("AP2").Value = obGef.Row
End If
End With
zeile = Worksheets("Tabelle3").Range("AP2").Value
Worksheets("Tabelle3").Range(Cells(zeile + i, 1), Cells(zeile + i, 24)) = Worksheets("T-und S- _
Nummern").Range(Cells(zeile, 1), Cells(zeile, 24)) 

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cells Bereich mit Variablen -VBA
23.01.2018 13:55:54
Daniel
Hi
mal wieder der Klassiker.
bei Range(Cells(), Cells()) muss, wenn sich der Bezug auf ein anderes Blatt beziehen soll, das Blatt vor den beiden Cells stehen und nicht vor der Range (Ausnahme: der Code steht in einem Tabellenblattmodul, dann muss das Tabellenblatt vor der Range UND den beiden Cells stehen)
also:
Sheets("tabelle3").Range(Sheets("Tabelle3").Cells(...), Sheets("Tabelle3").Cells(...))
damit das nicht zu kompliziert wird, (vorallem wenn die WITH-Klammer schon anderweitig verwendet wird), sollte man Zellbereiche dann besser mit RESIZE beschreiben:
Worksheets("Tabelle3").Cells(Zeile + i, 1).Resize(1, 24) = _
Worksheets("T-und S-Nummern").Cells(Zeile, 1).Resize(1, 24)
Gruß Daniel
Anzeige
AW: Cells Bereich mit Variablen -VBA
23.01.2018 14:46:00
Hendrik
Hi Daniel,
vielen Dank Dir für die schnelle und verständliche Antwort!
Und "Resize" war mir vorher auch nicht bekannt!(=
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Cells Bereich mit Variablen in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen Bereich mit Variablen auszuwählen, kannst du den folgenden Ansatz verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, die auf dem im Forum diskutierten Problem basiert:

  1. Arbeitsblatt auswählen: Beginne mit der Auswahl des Arbeitsblatts, von dem du Daten übertragen möchtest.

    Worksheets("T-und S-Nummern").Select
  2. Variablen definieren: Definiere die notwendigen Variablen, einschließlich der Zeile, die du ansprechen möchtest.

    Dim zeile As Long
    zeile = Worksheets("Tabelle3").Range("AP2").Value
  3. Bereich definieren: Verwende Range in Kombination mit Cells, um den gewünschten Bereich dynamisch auszuwählen. Achte darauf, das Arbeitsblatt vor den Cells-Referenzen anzugeben.

    Worksheets("Tabelle3").Range(Worksheets("Tabelle3").Cells(zeile + i, 1), Worksheets("Tabelle3").Cells(zeile + i, 24)).Value = _
    Worksheets("T-und S-Nummern").Range(Worksheets("T-und S-Nummern").Cells(zeile, 1), Worksheets("T-und S-Nummern").Cells(zeile, 24)).Value
  4. Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um Laufzeitfehler zu vermeiden.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt häufig auf, wenn der Bezug auf ein anderes Arbeitsblatt nicht korrekt ist. Stelle sicher, dass du das Arbeitsblatt vor den Cells-Referenzen angibst.

  • Falsche Zellreferenzen: Überprüfe die Zellreferenzen in deinen Cells-Anweisungen, um sicherzustellen, dass sie gültig sind.


Alternative Methoden

Eine alternative Methode zur Definition eines Bereichs in Excel VBA ist die Verwendung von Resize. Hier ist ein Beispiel:

Worksheets("Tabelle3").Cells(zeile + i, 1).Resize(1, 24).Value = _
Worksheets("T-und S-Nummern").Cells(zeile, 1).Resize(1, 24).Value

Diese Methode ist oft einfacher zu lesen und reduziert das Risiko von Fehlern, besonders wenn du mit variablen Bereichen arbeitest.


Praktische Beispiele

Hier ist ein Beispiel, wie du einen Bereich mit Variablen definieren und die Werte übertragen kannst:

Sub DatenUebertragen()
   Dim zeile As Long
   Dim i As Integer
   Dim Max As Long
   Max = Worksheets("Tabelle3").Range("AR1").Value

   For i = 1 To Max
       zeile = Worksheets("Tabelle3").Range("AP2").Value
       Worksheets("Tabelle3").Cells(zeile + i, 1).Resize(1, 24).Value = _
       Worksheets("T-und S-Nummern").Cells(zeile, 1).Resize(1, 24).Value
   Next i
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende Fehlerbehandlung (z.B. On Error Resume Next), um unerwartete Fehler elegant zu handhaben.
  • Halte deinen Code sauber und gut strukturiert, um die Lesbarkeit zu verbessern und spätere Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich einen Bereich mit Variablen in VBA auswählen?
Du kannst Range(Cells(...), Cells(...)) verwenden, achte darauf, das Arbeitsblatt korrekt anzugeben.

2. Was ist der Unterschied zwischen Range und Cells in VBA?
Range wird verwendet, um einen Bereich von Zellen auszuwählen, während Cells auf eine spezifische Zelle innerhalb des Arbeitsblatts verweist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige