Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: schleife mit mehreren Abfragen

schleife mit mehreren Abfragen
19.07.2007 12:23:32
Hubertus
Hallo alle miteinander,
ich habe hier ein für mich recht anspruchsvolles Problem.
In einer Tabelle soll in der ersten Spalte nach einem gegebenen Durchmesser (d) gesucht werden. dieser kann auch mehrfach vorkommen. Wenn die erste Übereinstimmung vorliegt, soll in der entsprechenden Zeile ein Wert Y kopiert werden.
Mit diesem wird folgendermaßen gerechnet:
1.) P = Fr + Fa * Y --> (Fr, Fa gegeben)
2.) Co = P * (fl / fa) --> (fl, fa gegeben)
dann soll der berechnete Wert Co mit dem Wert Co aus der gewählten Zeile verglichen werden. ist der berechnete Wert GRÖSSER, soll die gleiche Rechnung in der nächsten Zeile mit demselben Durchmesser d wiederholt werden.
Sobald aber CoRechnung > CoTabelle ist, soll aus der Spalte "Bezeichnung" die Bauteilbezeichnung ausgegeben werden.
Das ganze soll als Excel-VBA Makro hinterlegt sein und bei geöffneter Mappe (aber nicht geöffnetem Blatt) automatisch aktuell gehalten werden. Sprich sobald sich d,Fa oder Fr ändert, sollen die Berechnungen neu laufen. wenn das nicht möglich ist, soll auf einem Anderen Blatt per "Aktualisieren- Schaltfläche" die Berechnung aufgerufen werden.
So, hoffe das war verständlich :-)
Ganz untätig war ich auch net - mier meine ersten Versuche:

Function Lagerwahl()
Application.Volatile
Dim d As Long
Dim Z As Long
Dim x As Integer
Dim y As Integer
Dim Fr As Long
Dim Fa As Long
Dim c0B As Long
Dim fl As Integer
Dim fn As Integer
Dim P As Long
Fr = Worksheets("Lagerauswahl").Range("A5").Value
Fa = Worksheets("Lagerauswahl").Range("A9").Value
d = Worksheets("Welle").Range("U10").Value
Cells(136, 42) = d
Cells(137, 42) = y
Cells(138, 42) = P
Cells(139, 42) = c0B
For Z = Cells(8, 30) To Cells(134, 30)
On Error Resume Next
If Cells(Z, 30) = d Then
Sheets("Tabellen").Cells(Z, 41).Copy
ActiveSheet.Paste Destination:=Sheets("Tabellen").Cells(137, 42)
Cells(138, 42).Value = Cells(137, 42) * Fa + Fr
Cells(139, 42).Value = Cells(138, 42) * (Cells(141, 42) / Cells(142, 42))
While Cells(139, 42).Value > Cells(Z, 34) And Cells(Z, 30).Value = d
Z = Z + 1
Sheets("Tabellen").Cells(Z, 41).Copy
ActiveSheet.Paste Destination:=Sheets("Tabellen").Cells(137, 42)
Cells(138, 42).Value = Cells(137, 42) * Fa + Fr
Cells(139, 42).Value = Cells(138, 42) * (Cells(141, 42) / Cells(142, 42))
If Cells(139, 42).Value  d Then
MsgBox ("Kein Lager für diesen Wellendurchmesser vorhanden!")
GoTo ende
End If
Wend
End If
Next Z
ende:
End Function


Haut aber net ganz hin - und starten NICHT automatisch!
Ich hoffe auf Eure Hilfe, bin echt bald verzweifelt!!!
Mit einem FETTEN DANKE im Vorraus
Gruß
Hubitz
Ach ja - hier die Tabelle: https://www.herber.de/bbs/user/44237.xls
Leider passen die Spaltenbezüge nicht mehr überein, da ich die Tabelle kopiert habe. hoffe es klappt trotzdem...
THX

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: schleife mit mehreren Abfragen
19.07.2007 12:55:43
Wolli
Hallo Hubertus,
Du hast etwas grundlegendes zum Thema "Funktion" nicht verstanden. Schau Dir bitte mal mein Mini-Beispiel (extra für Dich!) an.
https://www.herber.de/bbs/user/44240.xls
Gruß, Wolli

AW: schleife mit mehreren Abfragen
19.07.2007 13:12:00
Hubertus
Hallo Wolli,
danke für deine Schnelle Antwort.
Das Makro hatte ich auch erst als Sub- Anweisung geschrieben, dann aber als Function "Umdeklariert" ;-)
Hat ja auch fast geklappt (Vor allem weil die Syntax völlig unterschiedlich ist.)
Soll das also heissen, das ich eine Function genauso wie eine Excel- Formel schreiben muss? wo ist denn dann da der Vorteil?
Als sub funktioniert mein Makro ja schon fast. ich kriegs nur net hin, das es sich automatisch aktualisiert. hättest Du denn da ne Idee?
Danke für Deine Hilfe,
Hubitz

Anzeige
AW: schleife mit mehreren Abfragen
19.07.2007 13:26:22
Wolli
Hallo Hubertus, dann lass es besser als "sub" laufen. Was Du brauchst ist eine Ereignissteuerung. Am besten Du verwendest das "Worksheet_Change" Ereignis. Das läuft immer dann an, wenn im betroffenen Sheet eine Zelle geändert wird.
Doppelklicke im Projektexplorer (links) auf die Tabelle und füge ein:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then DeinMakro
End Sub


Wenn dann in A1 was geändert wird, springt das "DeinMakro" an.
Du könntest auch das ganze Makro hierher verlegen, aber das tut nicht not.
Zum Sinn von Funktionen: Deine Berechnung arbeitet ja nun mit einer komplexen Formel, um irgendwelche Rohre zu bestimmen. Du könntest z.B. die Funktion in jede Zeile deines Kataloges kopieren, um für jedes Stück das passende Ergebnis zu liefern.
Allerdings ist zu beachten: Beliebig viele Eingabewerte, EIN Rückgabewert, keine MsgBoxes und sonstige Sauereien werden empfohlen. Halte Dich an meine Basisstruktur, dann kann nichts schiefgehen. Und immer schön sauber die Datentypen deklarieren!
So viel hierzu! Gruß, Wolli

Anzeige
AW: schleife mit mehreren Abfragen
19.07.2007 14:56:00
Hubertus
hmm irgendwie haut das net hin. hab mein Makro als Modul "Lagerwahl" gespeichert, und wenn ich anstelle von "MeinMakro" den Namen meines Makros einsetzte, muss ich mein Makro erst aus einer Liste wählen und Manuell aktivieren. So war das net geplant ;-)
den Wert d erhalte ich aus Blatt "Welle", Zelle U10. Da hab ich auch dein Makro hinterlegt.
Hoffe ich nerv nicht schon, komm aber so echt nicht weiter...
Gruß aus Dortmund
hubitz

Anzeige
AW: schleife mit mehreren Abfragen
19.07.2007 16:12:00
Wolli
Hi Hubi,
- Modulname ist egal, es kommt auf den Namen der Sub an. Vielleicht besser den Modulnamen und sub-namen nicht gleich setzen. Also "Modul1" und "Sub Lagerwahl()".
- nicht als "Private Sub" deklarieren, sondern als "Sub" oder gar "Public Sub" - dann müsste es gehen!?
- "muss ich mein Makro erst aus einer Liste wählen"? Du rufst das Makro doch innerhalb der Ereignisprozedur im Arbeitsblatt auf! Da gibt's dann keine Rückfragen oder so.
So, muss jetzt weg! Gutes Gelingen, Gruß, Wolli

Anzeige
AW: schleife mit mehreren Abfragen
19.07.2007 16:56:07
Hubertus
Alles klar, besten Dank für deine Hilfe und schönen Tag noch :-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige