Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Nächste, leere Zeile finden - nur in Bereich

Mitglied: xaumichi

xaumichi (Level 1) - Jetzt verbinden

24.08.2010 um 15:38 Uhr, 4633 Aufrufe, 14 Kommentare

Hallo!

Ich habe ein kleines Programm geschrieben, das eine nächste leere Zeile sucht.

01.
.... 
02.
... 
03.
With Worksheets("Mitarbeiter") 
04.
            lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row 
05.
             
06.
            If lngZeile = 1 Then 
07.
                If Not IsEmpty(.Cells(1, 1)) Then lngZeile = lngZeile + 1 
08.
            ElseIf lngZeile < .Rows.Count And IsEmpty(.Cells(.Rows.Count, 1)) Then 
09.
                lngZeile = lngZeile + 1 
10.
            Else 
11.
                MsgBox "VOLL!":  Exit Sub 
12.
            End If 
13.
... 
14.
...

Nun ist dieser Code jedoch so, dass die gesamte Spalte kontrolliert wird, wo der letzte Inhalt steht.
Wie kann ich diesen Suchberich nun auf einen Bereich (A2:A30) begrenzen?

Lg mike
Mitglied: bastla
24.08.2010 um 16:03 Uhr
Hallo xaumichi!

Ungetestet etwa so:
01.
With Worksheets("Mitarbeiter") 
02.
            Voll = True 
03.
            For lngZeile = 2 To 30 
04.
                If IsEmpty(.Cells(lngZeile,"A")) Then 
05.
                    Voll = False 
06.
                    lngZeileFrei = lngZeile 
07.
                    Exit For 
08.
                End If 
09.
            Next 
10.
            If Voll Then 
11.
                MsgBox "VOLL!":  Exit Sub 
12.
            Else 
13.
                MsgBox "Frei: A" & lngZeileFrei 
14.
            End If 
15.
End With
Grüße
bastla
Bitte warten ..
Mitglied: 76109
24.08.2010 um 16:37 Uhr
Hallo Mike, Hallo bastla!

Code entfernt. Funktioniert leider nicht, wenn alle Zeilen leer sind

Gruß Dieter
Bitte warten ..
Mitglied: bastla
24.08.2010 um 16:43 Uhr
@Dieter: Hybsch

Grüße
bastla
Bitte warten ..
Mitglied: 76109
24.08.2010 um 16:47 Uhr
Zitat von bastla:
@Dieter: Hybsch
Danke Funktioniert aber nicht so wie gedacht (siehe letzte Antwort)

Gruß Dieter
Bitte warten ..
Mitglied: bastla
24.08.2010 um 16:55 Uhr
@Dieter: Hätte mir aber trotzdem gut gefallen ... - außerdem soll es ja in Zeile 1 offensichtlich eine Überschrift geben - daher also einfach den Bereich um diese Zeile erweitern ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
24.08.2010 um 17:12 Uhr
@bastla

Zitat von bastla:
@Dieter: Hätte mir aber trotzdem gut gefallen ... - außerdem soll es ja in Zeile 1 offensichtlich eine
Überschrift geben - daher also einfach den Bereich um diese Zeile erweitern ...
Stimmt, in diesem Fall würde es funktionieren Aber bei anderen Gegebenheiten funktioniert's dann leider nicht korrekt. Von Daher gesehen keine gute Lösung

Gruß Dieter
Bitte warten ..
Mitglied: xaumichi
24.08.2010 um 18:30 Uhr
Hm...dürfte doch nicht ganz so einfach sein!
Hätte jetzt auch ein bisschen herum probiert, hab aber auch leider nichts funktionstüchtiges zusammengebracht....

Lg Mike
Bitte warten ..
Mitglied: bastla
24.08.2010 um 18:49 Uhr
Hallo xaumichi!

Habe inzwischen meinen Ansatz getestet - bei mir funktioniert das ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
24.08.2010 um 19:31 Uhr
Hallo zusammen!

Yepp, dem stimme ich zu. Bastlas Ansatz funktioniert, wobei man allerdings die überflüssige Variable lngZeileFrei und Voll noch entfernen könnte, da der Zähler lngZeile ja schon das Ergebnis nach dem Schleifenabbruch beinhaltet bzw. bei Voll den ungültigen Wert 31 enthält. Also sollte ein Test mit
01.
If lngZeile > 30 Then MsgBox "Voll": Exit Sub
nach der For-Schleife ausreichend sein

Es geht zwar auch über die .Cells(...).End(xlUp).Row-Methode, wobei anstatt Rows.Count der Wert der letzen Range-Zeile angegeben wird. Aber im Endeffekt ist diese Funktion etwas aufwendiger, weil bei dieser Methode, die letzte Zeile (Rows.Count oder sonstige Zeilenangabe) leer sein muss, ansonsten wird die Zeilennummer zurückgegeben, die sich aufwärts vor der nächsten Leerzeile befindet. D.h. wenn die letzte Zeile nicht leer ist und in Zeile 1 eine Überschrift steht, dann wird die Zeile 1 zurückgegeben. Deswegen sollte man diese Methode auch nur mit Rows.Count (Maxzeile) und der Sicherheit, das die allerletzte Zeile (bei mir 65536) leer ist, verwenden.

Gruß Dieter
Bitte warten ..
Mitglied: xaumichi
25.08.2010 um 08:19 Uhr
Jup, hat geklappt!

Danke schön!

Lg Mike
Bitte warten ..
Mitglied: bastla
25.08.2010 um 13:31 Uhr
@Dieter
Was "lngZeileFrei" anlangt hast Du natürlich Recht ...

Bei den wenigen Zeilen, um die es hier geht, wird der Sprung aus der Schleife wohl nicht wesentlich zu einer Verbesserung der Laufzeit beitragen - bei einem größeren Bereich dürfte es aber sinnvoll sein, nicht alle Zeilen durchlaufen zu müssen ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
25.08.2010 um 13:51 Uhr
Hallo bastla!

Zitat von bastla:
Bei den wenigen Zeilen, um die es hier geht, wird der Sprung aus der Schleife wohl nicht wesentlich zu einer Verbesserung der
Laufzeit beitragen - bei einem größeren Bereich dürfte es aber sinnvoll sein, nicht alle Zeilen durchlaufen zu
müssen ...

Der Vorteil des Schleifenabbruchs liegt ja gerade darin, die Zeilennummer ohne größeren Aufwand zu ermitteln:
01.
With Sheets("Mitarbeiter") 
02.
    For lngZeile = 2 To 30 
03.
        If IsEmpty(.Cells(lngZeile, 1)) Then Exit For 
04.
    Next 
05.
         
06.
    If lngZeile > 30 Then MsgBox "Voll!":  Exit Sub 
07.
     
08.
   '..... 
09.
End With
sieht dann auch etwas hübscher aus

Gruß Dieter
Bitte warten ..
Mitglied: bastla
25.08.2010 um 14:31 Uhr
Hallo Dieter!

Sorry - da war ich voll daneben ...

Mit der Einschätzung, dass Du das Ganze damit jetzt optimiert hast, sollte ich dann aber zur Abwechslung mal richtig liegen ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
25.08.2010 um 14:41 Uhr
Hallo bastla!

Zitat von bastla:
Sorry - da war ich voll daneben ...
Sehe ich auch so
Mit der Einschätzung, dass Du das Ganze damit jetzt optimiert hast, sollte ich dann aber zur Abwechslung mal richtig liegen
...
Was heißt denn zur Abwechslung? Kommt doch recht selten vor, dass Du den Wald vor lauter Bäumen nicht siehst

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

PowerShell nächste freie Nummer finden

gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Hallo, vor einem knappen Jahr hat mich Uwe bereits einmal zu dem Thema unterstützt. Ich möchte die damalige Anforderung ...

Batch & Shell

Batch: Zeile in Textdatei finden und dann diese Zeile und die nächsten beiden Zeilen in eine neue Datei kopieren

Frage von ole-objektBatch & Shell6 Kommentare

Hallo, in einem anderen Forum habe ich die angebliche Lösung für mein Problem gefunden, bekomme sie aber nicht wirklich ...

Batch & Shell

Backupscript soll automatisch die nächsten Unterordner finden und als Variable übergeben

gelöst Frage von ZunarasBatch & Shell7 Kommentare

Schönen guten Tag und frohe Weihnachten! Ich habe einen Foto-Ordner mit Unterordner in Jahren unterteilt. D:\Eigene Dateien\Bilder\2016 D:\Eigene Dateien\Bilder\2015 ...

Microsoft Office

Excel Tabellenblatt finden und Zeile kopieren

gelöst Frage von Florian86Microsoft Office3 Kommentare

Hallo, ich möchte anhand von Buttons einen Zugang bzw. einen Abgang auf bestimmte Tabellenblätter kopieren. Die Tabellenblätter entsprechen der ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 12 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 22 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...