Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1116to1120
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
leere Zeile in variabler Range suchen
meixner
Hallo zusammen,
wenn eine leere Zelle in einem variablen Bereich gefunden wird, dann nehme den Wert aus der vorherigen Zelle und schreibe diesen Wert in die leere Zelle.
Mit unterem Makro komme ich nicht weiter, da der Bereich fix angegeben ist, während der Bereich eigentlich variabel ist.
Beispiel
1. Durchlauf Makro
gefundene Werte werden eingetragen in dem BEREICH (A8:Q15).
Anhand eines Makros soll jetzt in P8:P15 (Bereich variabel, beim zweiten Durchlauf des Makros kann es ein anderer Bereich sein) nach leeren Zellen gesucht werden. P8 wird als leere Zelle gefunden. In diese leere Zelle soll dann die Formel aus P9 eingetragen werden.
2. Durchlauf Makro
gefundene Werte werden eingetragen in dem BEREICH (A16:Q24 ).
Anhand eines Makros soll jetzt in P16:P24 (Bereich variabel, beim zweiten Durchlauf des Makros kann es ein anderer Bereich sein) nach leeren Zellen gesucht werden. P16 wird als leere Zelle gefunden. In diese leere Zelle soll dann die Formel aus P17eingetragen werden.
Kann mir jmd. einen Tip geben. Für einen festen Bereich habe ich kein Problem eine leere Zeile zu finden und auszufüllen, aber für variablen Bereich schon. Anbei unten das Makro.
Vielen Dank für die Unterstützung.
Dani
Sub special_dividend()
Dim strRIC As String, rngSuch As Range                         'Variablen deklarieren
Dim rngF As Range, lngZ As Long, lngErst As Long
Dim specialdividend As Double
Dim AS_Geschäft As Range
Dim rngRange As Range
specialdividend = Application.InputBox("Bitte Betrag der special Dividend " & _
"oder Capital Return eingeben:", "Dateneingabe:", , , , , , 1)
If specialdividend = False Then Exit Sub
' RIC wird gesucht in AlleBestände_alleFonds in Spalte C;
' Eingabe von RIC für das erste Bezugsrecht in A35, C8
strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls")
Set rngSuch = .Worksheets(2).Columns(3)
Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
If Not rngF Is Nothing Then
lngErst = rngF.Row
With .Worksheets(1)
lngZ = .Cells(.Rows.Count, 3).End(xlUp).Row  'letzte in Sp.C belegte Zeile
Do
Sheets(5).Range("B5").Value = strRIC
lngZ = lngZ + 1            ' nächste (leere) Zeile
.Cells(lngZ, 1) = rngF.Offset(0, -2)               ' a
.Cells(lngZ, 2) = rngF.Offset(0, -1)               ' b
.Cells(lngZ, 3) = strRIC                           ' C
.Cells(lngZ, 4) = rngF.Offset(0, 1)                ' d
.Cells(lngZ, 5) = rngF.Offset(0, 2)                ' e
.Cells(lngZ, 6) = rngF.Offset(0, 3)                ' f
.Cells(lngZ, 17) = rngF.Offset(0, 7)               ' Q
.Cells(lngZ, 12) = rngF.Offset(0, 5)               ' L
.Cells(lngZ, 20) = rngF.Offset(0, 13).FormulaR1C1  ' T
.Cells(lngZ, 18) = rngF.Offset(0, 12).FormulaR1C1  ' R
If .Cells(lngZ, 5) = .Cells(lngZ - 1, 5) Then _
.Cells(lngZ, 21) = specialdividend  ' schreibe in Spalte U
If .Cells(lngZ, 5) = .Cells(lngZ - 1, 5) Then _
.Cells(lngZ, 16) = Sheets("Parameter").Range("h8").FormulaR1C1  ' schreibe  _
in Spalte U
Set rngF = rngSuch.FindNext(rngF)
Loop While Not rngF Is Nothing And rngF.Row  lngErst
End With
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
For Each Zelle In Range("F8:F40")
last_trade_Aktie = Sheets("Parameter").Range("b3").FormulaR1C1
If Zelle  "" Then Zelle.Offset(0, 1) = last_trade_Aktie
Next Zelle
'sucht leere Zeele in Spalte U und füllt diese mit Zelle unterhalb. Bedeutet, dass Betrag  _
special Dividend in leere Zelle auch eingetragen wird. For Each rngRange In Sheets(1).Range("p8:p110") (HIER LIEGT DAS PROBLEM!!!!!!!!!!!!!!!!!!!)
If IsEmpty(rngRange) Then rngRange = rngRange.Offset(1, 0).FormulaR1C1
Next rngRange
End Sub

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

Betreff
Benutzer
Anzeige
AW: leere Zeile in variabler Range suchen
23.11.2009 20:38:33
fcs
Hallo Meixner,
dann muss du die 1. Zeile die ausgefüllt wird in einer Variablen speichern. So kannst du dann zum Schluss einen entsprechenden Range definieren in dem die leeren Zellen ausgefüllt werden sollen.
Die angepassten Zeilen in deinem Code hab ich markiert.
Gruß
Franz

Sub special_dividend()
Dim strRIC As String, rngSuch As Range                    'Variablen deklarieren
Dim rngF As Range, lngZ As Long, lngErst As Long
Dim ZeileStart As Long                                     '#### fcs
Dim specialdividend As Double
Dim AS_Geschäft As Range
Dim rngRange As Range
specialdividend = Application.InputBox("Bitte Betrag der special Dividend " & _
"oder Capital Return eingeben:", "Dateneingabe:", , , , , , 1)
If specialdividend = False Then Exit Sub
' RIC wird gesucht in AlleBestände_alleFonds in Spalte C;
' Eingabe von RIC für das erste Bezugsrecht in A35, C8
strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls")
Set rngSuch = .Worksheets(2).Columns(3)
Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
If Not rngF Is Nothing Then
lngErst = rngF.Row
With .Worksheets(1)
lngZ = .Cells(.Rows.Count, 3).End(xlUp).Row  'letzte in Sp.C belegte Zeile
ZeileStart = lngZ + 1                        'Startzeile merken #### fcs
Do
Sheets(5).Range("B5").Value = strRIC
lngZ = lngZ + 1            ' nächste (leere) Zeile
.Cells(lngZ, 1) = rngF.Offset(0, -2)               ' a
.Cells(lngZ, 2) = rngF.Offset(0, -1)               ' b
.Cells(lngZ, 3) = strRIC                           ' C
.Cells(lngZ, 4) = rngF.Offset(0, 1)                ' d
.Cells(lngZ, 5) = rngF.Offset(0, 2)                ' e
.Cells(lngZ, 6) = rngF.Offset(0, 3)                ' f
.Cells(lngZ, 17) = rngF.Offset(0, 7)               ' Q
.Cells(lngZ, 12) = rngF.Offset(0, 5)               ' L
.Cells(lngZ, 20) = rngF.Offset(0, 13).FormulaR1C1  ' T
.Cells(lngZ, 18) = rngF.Offset(0, 12).FormulaR1C1  ' R
If .Cells(lngZ, 5) = .Cells(lngZ - 1, 5) Then _
.Cells(lngZ, 21) = specialdividend  ' schreibe in Spalte U
If .Cells(lngZ, 5) = .Cells(lngZ - 1, 5) Then _
.Cells(lngZ, 16) = Sheets("Parameter").Range("h8").FormulaR1C1 _
' schreibe in Spalte U
Set rngF = rngSuch.FindNext(rngF)
Loop While Not rngF Is Nothing And rngF.Row  lngErst
End With
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
For Each Zelle In Range("F8:F40")
last_trade_Aktie = Sheets("Parameter").Range("b3").FormulaR1C1
If Zelle  "" Then Zelle.Offset(0, 1) = last_trade_Aktie
Next Zelle
'sucht leere Zeele in Spalte U und füllt diese mit Zelle unterhalb. Bedeutet, _
dass Betrag special Dividend in leere Zelle auch eingetragen wird.
'in Spalte 16 (P) leere Zellen auffüllen                            '####fcs
With Worksheets(1)                                                  '####fcs
For Each rngRange In .Range(.Cells(ZeileStart, 16), .Cells(lngZ, 16)) '####fcs
If IsEmpty(rngRange) Then rngRange = rngRange.Offset(1, 0).FormulaR1C1
Next rngRange
End With                                                              '####fcs
End Sub

Anzeige
AW: leere Zeile in variabler Range suchen
24.11.2009 09:09:42
meixner
Makro funktioniert super!
Vielen Dank.
Dani

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige