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

Forumthread: VBA Anzahl Zeilen in Makro übernehmen

VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 16:48:48
Marko
Hallo,
wie kann ich in dieses Makro folgende Abfrage einbauen?
Die erste Zeile in der Tabelle "Nobilia" Spalte DC14 bis DC1000 ermitteln, deren Wert 0 ist. Als Beispiel sind die Zellen DC14 bis DC550 größer als 0. Diesen Zeilenwert (z.B. 551) möchte ich in dieses Makro einarbeiten, um das Kopieren von der Zeile 14 bis zu der ermittelten Zeile (z.B. 551) vorzunehmen.
Wie kann ich das lösen? Vielen Dank für Eure Unterstützung.
Sub Uebertragen()
Dim Daten As Variant
Dim BV As Variant
Dim raBereich As Range
Dim leereZeile
Dim X As Variant
Dim i As Long
Daten = Sheets("Nobilia").Range("DB14").Value
Application.ScreenUpdating = False
Sheets("Nobilia").Range("DB14,DC14,LA14:LH14").Copy
Sheets("BV").Activate
leereZeile = Sheets("BV").Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 1 To Sheets("BV").Cells(Rows.Count, 1).End(xlUp).Row
BV = Sheets("BV").Cells(i, 1).Value
If Daten = BV Then
X = Sheets("Nobilia").Range("DB14").Value
If WorksheetFunction.CountIf(Sheets("BV").Columns("A"), X) > 0 Then
If MsgBox("Der Block " & CStr(X) & " ist bereits vorhanden. Trotzdem einfügen?", vbYesNo) =  _
vbNo Then Exit Sub
End If
Else
Sheets("BV").Range("A" & leereZeile).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End If
Next
Application.CutCopyMode = False
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 17:13:16
onur
"um das Kopieren von der Zeile 14 bis zu der ermittelten Zeile (z.B. 551) vorzunehmen" - und WOHIN ?
VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 17:45:27
Marko
Hallo Onur,
das Makro kopiert aktuell den Wert aus dem Sheet ("Nobilia").Range("DB14,DC14,LA14:LH14").Copy in das Sheet ("BV") in die erste leere Zeile. (Sheets("BV").Range("A" & leereZeile).Select)...
Durch das Auslesen des Wertes z.B.551 möchte ich den Kopierprozess auf von "DB14,DC14,LA14:LH14" bis zur ermittelten Zeile z.B.551 "DB551,DC551,LA551:LH551"eingrenzen.
Anzeige
AW: VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 18:45:32
onur
Am Anfang der Sub:
Dim lz, RNG
lz = WorksheetFunction.Match(0, Sheets("BV").Range("A14:A1000"), 0) + 13

Statt:

Sheets("Nobilia").Range("DB14,DC14,LA14:LH14").Copy

Das:
Set RNG = Sheets("Nobilia").Range("DB14:DB" & lz & ",DC14:DC" & lz & ",LA14:LH" & lz)
RNG.Copy

Anzeige
VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 19:05:42
Marko
Vielen Dank.
Das Makro habe ich entsprechend ergänzt und in der Codezeile "lz = WorksheetFunction.Match(0, Sheets("BV").Range("A14:A1000"), 0) + 13" erhalte ich einen Laufzeitfehler 1004.
Woran kann das liegen?
Sub Uebertragen()
Dim Daten As Variant
Dim BV As Variant
Dim raBereich As Range
Dim leereZeile
Dim X As Variant
Dim i As Long
Dim lz, RNG
lz = WorksheetFunction.Match(0, Sheets("BV").Range("A14:A1000"), 0) + 13
Daten = Sheets("Nobilia").Range("DB14").Value
Application.ScreenUpdating = False
Set RNG = Sheets("Nobilia").Range("DB14:DB" & lz & ",DC14:DC" & lz & ",LA14:LH" & lz)
RNG.Copy
Sheets("BV").Activate
leereZeile = Sheets("BV").Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 1 To Sheets("BV").Cells(Rows.Count, 1).End(xlUp).Row
BV = Sheets("BV").Cells(i, 1).Value
If Daten = BV Then
X = Sheets("Nobilia").Range("DB14").Value
If WorksheetFunction.CountIf(Sheets("BV").Columns("A"), X) > 0 Then
If MsgBox("Der Block " & CStr(X) & " ist bereits vorhanden. Trotzdem einfügen?", vbYesNo) =  _
vbNo Then Exit Sub
End If
Else
Sheets("BV").Range("A" & leereZeile).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End If
Next
Application.CutCopyMode = False
End Sub

Anzeige
AW: VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 19:06:49
onur
Poste mal die Datei.
AW: VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 19:27:40
onur
Wahrscheinlich hast du keine einzige 0 im Bereich.
Mach es so:
On Error Resume Next
lz = WorksheetFunction.Match(0, Range("A14:A1000"), 0) + 13
On Error GoTo 0
If IsEmpty(lz) Then
MsgBox "Abbruch - Nix gefunden!"
Exit Sub
End If

statt
lz = WorksheetFunction.Match(0, Sheets("BV").Range("A14:A1000"), 0) + 13

Anzeige
VBA Anzahl Zeilen in Makro übernehmen
07.01.2021 19:42:47
Marko
Hallo Onur,
WOW, damit hattest Du recht. In dem Zellenbereich habe ich mit WENNFEHLER alles auf "" gesetzt, jetzt auf 0 und das Makro funktioniert. Vielen, vielen Dank.
Gruß, Marko
gerne!
07.01.2021 19:44:08
onur
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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