PDA

Vollständige Version anzeigen : Letzte Zeile in einem bestimmten Bereich ermitteln


Manuella
10.04.2012, 16:47
Hallo,

ich finde leider keinen passenden Code um die letzte Zeile in einem BESTIMMTEN Bereich zu finden... Nun seid ihr gefragt :)

Mein Problem:
Ich habe z.B. den Bereich "Bsp_1" der von B4 bis F17 geht. Dieser Bereich wird nun ausgefüllt und kann je nach Bedarf um eine beliebige Anzahl an Zeilen verlängert werden.
Ich soll nun innerhalb von Bsp_1 jede Zeile auf etwas prüfen, was mit einer For-Schleife funktionieren sollte. Leider komme ich aber nicht auf die letzte Zeile von diesem Bereich (welche die Abbruchbedingung für die Schleife wäre)
Wenn in dem Beispiel oben keine neue Zeile eingefügt wird, sollte dann 14 rauskommen

Hier mein bisheriger Code:

Sub Find()
Dim Column, Line
Dim lastLine

lastLine= ????

For Line = 1 To lastLine
Column = 1
If Worksheets("Sheet3").Range("Bereich1").Cells(Line, Column).Value <> "" Then
For Column = 2 To 4
If Worksheets("Sheet3").Range("Bereich1").Cells(Line, Column).Value = "" Then
MsgBox "Value missing in Line " & Line & " and Column " & Column
End If
Next Column
End If
Next Line
End Sub


Ich hoffe ihr versteht mich und einer von euch kann mir weiterhelfen :)
Manuella

Uwe (:o)
10.04.2012, 17:07
Hallo Manuella,
wenn ich Dich richtig verstehe, dann ist Bsp_1 eine vergebener Name, der dynamisch definiert ist?
Dann bekommst Du mit:
Range("Bsp_1").Rows.Count
die Anzahl der Zeilen in dem Bereich
Mit:
Range("Bsp_1").Row
Hättest Du die Nummer der ERSTEN Zeile in dem Bereich.
Ich bin mir nicht ganz klar, was Dein Code leisten soll, aber wenn Du nur alle Zelle im Bereich Bsp_1 "abklappern" willst, genügt auch ein:

Dim Zelle As Range
For Each Zelle In Range("Bsp_1")
Debug.Print Zelle.Address 'nur als Beipiel!
Next Zelle

Ich hoffe ich konnte Dir helfen.

CitizenX
10.04.2012, 17:31
Hi,

um fehlende Einträge in einen Bereiche zu prüfen brauchst du keine klapper Schleife.
Das erledigen die die cleveren Kollegen von der SpecialCell Akademie ;-)


<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
&nbsp;
<span class="TOKEN">Sub</span> Pr&uuml;fe()
<span class="TOKEN">On Error GoTo</span> ErrExit:
MsgBox &quot;Value missing in :&quot; &amp; vbNewLine _
&amp; Range(&quot;Bereich1&quot;).SpecialCells(xlCellTypeBlanks).Address(0, 0)
ErrExit:
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Manuella
11.04.2012, 11:15
bei mir kommt immer die Fehlermeldung "Run-time error '1004': Application-defined or object-defined error"


Manuella

CitizenX
11.04.2012, 12:02
Hi,

der Code befindet vermutlich NICHT in einem allgemeinem Modul sondern im Modul einer Tabelle die nicht dem zugewiesenen Namen entspricht.

Lösung :

-Code in ein allgemeines Modul verlagern
od.
Den Bereich über die Evaluate Methode ansprechen:

Option Explicit

Sub Prüfe()
On Error GoTo ErrExit:
MsgBox "Value missing in :" & vbNewLine _
& [Bereich1].SpecialCells(xlCellTypeBlanks).Address(0, 0)
ErrExit:

End Sub

Manuella
12.04.2012, 14:51
Jetzt funktionierts :)
Vielen Dank für eure Hilfe!
Manuella