MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.11.2018, 21:10   #1
Aeil1967
Neuer Benutzer
Neuer Benutzer
Standard VBA - Eine Do-Schleife mit mehreren Variablen durchlaufen lassen

Hallo zusammen,

ich habe eine Liste mit Versuchsdaten, wo in jeder Zeile je ein Messpunkt mit Datum, Temperatur, Luftfeuchte, ... steht. Nun möchte ich diese Liste durchsuchen nach einem Anfangs-und einem Endpunkt. Dies mache ich mit einer Do-Until Schleife:

Code:

Do Until (Cells(aktZeile, Temperatur) > 85)
            If aktZeile = 1 Then
            Exit Do
            End If
            
            aktZeile = aktZeile - 1
            Loop
            Worksheets("Auswertung").Cells(n, 2).Value = Cells(aktZeile, 4)
            Worksheets("Auswertung").Cells(n, 3).Value = Cells(aktZeile, 5)
            Worksheets("Auswertung").Cells(n, 4).Value = Cells(aktZeile, 6)
In obiger Schleife wird im Auswertesheet immer dann eine neue Zeile geschrieben, wenn die Temperatur über 85°C ist. Das macht die Schleife so lange, bis sie oben angekommen ist, also können auch mehrere Ergebnisse denkbar sein.

Genau die gleiche Schleife möchte ich aber auch machen mit Feuchte >80% bzw. mit Temperatur <25°C bzw. weiteren Werten. Nun könnte ich ja alle Do-Schleifen untereinander schreiben, was aber nicht der Übersichtlichkeit dienlich ist.

Frage:

Ist es möglich, folgende Programmierung zu machen:

Code:

Versuchsbeginn = (Cells(aktZeile, Temperatur) > 85)
Call Schleife (Sub mit der Schleife)

Versuchsbeginn = (Cells(aktZeile, Feuchte) > 80)
Call Schleife (Sub mit der Schleife)

Versuchsbeginn = (Cells(aktZeile, Temperatur) < 25)
Call Schleife (Sub mit der Schleife)


Sub Schleife

Do Until Versuchsbeginn
            If aktZeile = 1 Then
            Exit Do
            End If
            
            aktZeile = aktZeile - 1
            Loop
            Worksheets("Auswertung").Cells(n, 2).Value = Cells(aktZeile, 4)
            Worksheets("Auswertung").Cells(n, 3).Value = Cells(aktZeile, 5)
            Worksheets("Auswertung").Cells(n, 4).Value = Cells(aktZeile, 6)

End Sub
Nun habe ich die Schleife nur einmal programmiert, möchte aber, dass er immer den Text aus der aktuelle Variable "Versuchsbeginn" als Bedingung nimmt.


Allerdings funktioniert das bei mir nicht. Hat mir von euch einer einen Tipp, wie man das gangbar machen kann?

Vielen Dank für Eure Hilfe!

Gruß
Albert
Aeil1967 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 21:25   #2
R J
MOF Meister
MOF Meister
Standard

Hi Albert,

die Do Schleife ist zum Suchen suboptimal. Wenn schon, dann wäre FindNext angebracht. Aber selbst FindNext ist für Deine Anforderung nur das Mittel 2. Wahl. Weshalb verwendest Du nicht den Spezialfilter? Da benötigst Du nicht einmal VBA. Es sei denn, Du willst den Filter automatisieren....

__________________

Ciao, Ralf

Kommt mir irgendwie bekannt vor...
Auf, zum Markplatz der Ideen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.


R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2018, 14:35   #3
Aeil1967
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke für Deinen Beitrag!

Die Suboptimalität ist zu erklären mit meinem Halbwissen im VBA.

Ich habe später mehrere Tabs unten mit mehreren Versuchen, diese möchte ich alle durchsuchen. Somit war mein Gedanken:


Code:

Versuchsbeginn = (Cells(aktZeile, Temperatur) > 85)
Call Schleife (Sub mit der Schleife)

Versuchsbeginn = (Cells(aktZeile, Feuchte) > 80)
Call Schleife (Sub mit der Schleife)

Versuchsbeginn = (Cells(aktZeile, Temperatur) < 25)
Call Schleife (Sub mit der Schleife)

Gehe zu nächstem Tab und fange nochmals von oben an, nach den gewünschten PArametern zu suchen.

Sub Schleife

Do Until Versuchsbeginn
            If aktZeile = 1 Then
            Exit Do
            End If
            
            aktZeile = aktZeile - 1
            Loop
            Worksheets("Auswertung").Cells(n, 2).Value = Cells(aktZeile, 4)
            Worksheets("Auswertung").Cells(n, 3).Value = Cells(aktZeile, 5)
            Worksheets("Auswertung").Cells(n, 4).Value = Cells(aktZeile, 6)



End Sub
Wie könnte man dies machen?
Aeil1967 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.