Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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 :-)

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige