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

Frage Microsoft Microsoft Office

Mitglied: xaumichi

xaumichi (Level 1) - Jetzt verbinden

24.08.2010 um 15:38 Uhr, 4623 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
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 7 StundenWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 9 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...