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

Function automatisch aktualisieren ???

Function automatisch aktualisieren ?
26.07.2007 15:14:21
Hubertus
Schönen guten Tag zusammen!!!
auch ich habe als "erst-seit-14-Tagen-mit-VBA-Programmierer" so meine liebe Not mit Excel und bin einmal mehr auf Eure kompetente Hilfe angewiesen.
Im Anhang findet Ihr einen Auszug aus einer Tabelle, mit der ich aus gegebenen Werten einen Elektromotor auswählen möchte und die zugehörigen Werte wie mit einer art SVerweis auslesen möchte.
Bisher gehe ich folgendermaßen vor:
Mit einer For..Next Schleife wird zunächst der MOTORTYP aus der Tabelle ermittelt. Anschließend beziehe ich mich mit mehreren Funktionen auf den ermittelten Motortyp, um mit weiteren SChleifen die Leistung, Maße etc des entsprechenden Motortypes aus der selben Zeile zu ermitteln.
Soweit so gut. Funktioniert ja auch alles WENN Die eingelesenen Werte auf derselben Seite stehen WÜRDEN.
Tun sie aber nicht und es soll auch NICHT die Tabellen-Seite aufgerufen werden um die Function zu starten.
Nun zu meiner Frage:
Wie ist es möglich, die Funktionen automatisch durchlaufen zu lassen , sobald sich die eingelesenen Werte ändern?
Gibt es weiterhin die Mögllichkeit, die Funktionen zusammen zu fassen? Meineswissens gibt eine Function-Anweisung immer nur EINEN Wert zurück. ist das soweit richtig?
Hoffe SEHR auf Eure Hilfe und bin über jeden Tip Dankbar!!!
Viele Gruße
Hubitz
Hier die Tabelle incl. Makros
https://www.herber.de/bbs/user/44467.xls

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function automatisch aktualisieren ?
26.07.2007 15:21:12
Hajo_Zia
Hallo Hubitz,
Funktionen geben nur einen Wert zurück.
Hast Du in der Funktion Application.Volatile ?

AW: Function automatisch aktualisieren ?
26.07.2007 15:34:07
Hubertus
hui das war ja mal ne flotte Antwort :-)
Habs gerade mal mit Application.Volatile versucht, sieht jetzt so aus:
Function Motorauswahl(Motorleistung As Double, Motornenndrehmoment As Double) As String Dim Leistung As Double Dim Moment As Double Dim i As Integer Dim x As String Application.Volatile For i = 8 To 48 Leistung = Worksheets("Tabellen").Cells(i, 19).Value Moment = Worksheets("Tabellen").Cells(i, 20).Value If Leistung >= Motorleistung And Moment >= Motornenndrehmoment Then Motorauswahl = Worksheets("Tabellen").Cells(i, 27).Value GoTo ende End If Next i ende: End Function



Function Motorleistung(Motortyp As String) As String
Dim x As String
Dim i As Integer
Application.Volatile
For i = 8 To 48
x = Worksheets("Tabellen").Cells(i, 27).Value
If Motortyp = x Then
Motorleistung = Cells(i, 19).Value
End If
Next i
End Function


==> Klappt aber net.
Das komische daran ist auch noch, das die erste Funktion manchmal funktioniert, die zweite(und folgende,welche gleich aufgebaut sind) aber nicht.
Hmm.
Hab ich die Anweisung "Application.Volatile" überhaupt richtig eingesetzt? noch nie damit gearbeitet und auf die schnelle nur ein kleines Beispiel dazu gefunden...
Könnte man das Makro denn auch anders aufbauen? Hast evtl nen Vorschlag?
Danke schonmal für Deine Tips...

Anzeige
AW: Function automatisch aktualisieren ?
26.07.2007 15:40:00
Hajo_Zi
Hallo Hubert,
man sollte schon auf die Antwort, antworten, weill Deine erster Beitrag ist hier unintressant und man sieht dann auch seine Antwort.
Richtig eingesetzt hast Du es. Zu Application.Volatile gibt es unterschiedliche Auffssungen siehe auch hier https://www.herber.de/forum/archiv/200to204/t201142.htm#201365
Ich muss jetzt fort und kann Dein Problem nicht testen.
Gruß Hajo

AW: Function automatisch aktualisieren ?
26.07.2007 15:42:38
Hubertus
oh, sorry.. werds mir merken ;-)
Vielen Dank nochmal für deine Tips

Anzeige
AW: Function automatisch aktualisieren ?
26.07.2007 15:42:58
ransi
HAllo
Schau dir mal das hier an:
Tabelle1

 STUVWXYZAAAB
49gewählt:        
50630403826502118308361110210B2C 400 Ly4 X1490

Formeln der Tabelle
ZelleFormel
S50=sverweis3($AA$50;$S$7:$AB$48;9;1)
T50=sverweis3($AA$50;$S$7:$AB$48;9;2)
U50=sverweis3($AA$50;$S$7:$AB$48;9;3)
V50=sverweis3($AA$50;$S$7:$AB$48;9;4)
W50=sverweis3($AA$50;$S$7:$AB$48;9;5)
X50=sverweis3($AA$50;$S$7:$AB$48;9;6)
Y50=sverweis3($AA$50;$S$7:$AB$48;9;7)
Z50=sverweis3($AA$50;$S$7:$AB$48;9;8)
AA50=Motorauswahl(X57;X58)
AB50=sverweis3($AA$50;$S$7:$AB$48;9;10)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Die dazugehörige Funktion sieht so aus:
Public Function SVERWEIS3(Kriterium As String, Bereich As Range, SuchSpalte As Integer, ErgebnissSpalte As Integer)
'Kriterium ist dein Suchstring
'Bereich ist die Datentabelle
'Suchspalte ist die Nummer der Spalte in Bereich in der Kriterium vorkommt
'Ergebnissspalte ist die Nummer der Spalte in Bereich aus der du den Wert nehmen willst
Dim arrTmp
Dim L As Long
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
    If arrTmp(L, SuchSpalte) = Kriterium Then
        SVERWEIS3 = arrTmp(L, ErgebnissSpalte)
        Exit Function
    End If
Next
End Function


Deine Funktion =Motorauswahl() hat sich mir noch nicht erschlossen...
ransi

Anzeige
AW: Function automatisch aktualisieren ?
26.07.2007 16:05:36
ransi
HAllo
Jetzt hab ichs glaube verstanden...
Schau es dir mal an:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Function Motorauswahl(Motorleistung As Integer, RngLeistung As Range, Motornenndrehmoment As Integer, rngMoment As Range, motoren As Range) As String
'Motorleistung=Gesuchte Mindestleistung
'RngLeistung = Bereich mit den Leistungen
'Motornenndrehmoment=gesuchtes Mindestmoment
'rngMoment=Bereich mit den Momenten
'motoren=Bereich mit den Motoren
Dim L As Long
For L = 1 To RngLeistung.Count
    If RngLeistung(L) >= Motorleistung Then
        If rngMoment(L) >= Motornenndrehmoment Then
            Motorauswahl = motoren(L)
            Exit Function
        End If
    End If
Next
End Function

Public Function SVERWEIS3(Kriterium As String, Bereich As Range, SuchSpalte As Integer, ErgebnissSpalte As Integer)
'Kriterium ist dein Suchstring
'Bereich ist die Datentabelle
'Suchspalte ist die Nummer der Spalte in Bereich in der Kriterium vorkommt
'Ergebnissspalte ist die Nummer der Spalte in Bereich aus der du den Wert nehmen willst
Dim arrTmp
Dim L As Long
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
    If arrTmp(L, SuchSpalte) = Kriterium Then
        SVERWEIS3 = arrTmp(L, ErgebnissSpalte)
        Exit Function
    End If
Next
End Function

Tabelle1

 STUVWXYZAAAB
1Elektromotoren
2
3Asynchronmotoren mit Käfigläufer
4
5LeistungMomentGewichtMassenträg-      heits-momentMaßeMotortypDrehzahl
6kWNmkgLBHE min -1
7          
80,120,843,50,0002520812016423MA 63 a41370
90,181,253,90,000320812016423MA 63 b41370
100,251,744,30,000420812016423MA 63 c4 X1370
110,251,75,30,000524013617830MA 71 a41380
120,372,660,000624013617830MA 71 b41380
130,553,86,70,0007624013617830MA 71 c4 X1380
140,553,88,40,001327015519840MA 80 a41380
150,755,29,50,001627015519840MA 80 b41385
160,926,310,40,001927015519840MA 80 c4 X1385
171,17,512,80,003332017423950MA 90 S41390
181,510,3150,00432017423950MA 90 L41395
191,8512,617,20,004832017423950MA 90 Lb4 X1400
202,215210,007340016025960MA 100 La41420
2132024,80,00940016025960MA 100 Lb41420
22427310,011540022427160MA 112 M41425
235,536420,023848225231680MA 132 Sa41440
247,549520,0348225231680MA 132 Ma41450
25959580,033848225231680MA 132 Mb4 X1455
261172740,063648296403110A4C 160 M41460
271598880,075648296403110A4C 160 L41460
2818,51201000,09648321423110A4C 180 M41465
29221431220,11723320443110A4C 180 L41465
30301951460,18723360463110A4C 200 L41465
31372402070,32830405464140A4C 225 S41470
32452912300,41830405465140A4C 225 M41475
33553562640,52830405533140A4C 250 M41475
34754833620,89959540640140A4C 280 S41480
35905804271,06959540640140A4C 280 M41480
361107094551,15989590675140A4C 315 S41480
371328487392,11132590765140B4C 315 Ma41485
3816010288122,51132590765140B4C 315 Mc4 X1485
3920012859183,11102590800170B4C 315 Md4 X1485
40250160116906,11545740962210B5C 355 La4 X1490
41315201718807,41545740962210B5C 355 Lb4 X1490
42355227321008,31745740962210B5C 355 Lc4 X1490
43400256122509,41745740962210B5C 355 Ld4 X1490
444502881236010,21745740962210B5C 355 Le4 X1490
455003201243011,21745740962210B5C 355 Lf4  X1490
465003201240016,217108361110210B2C 400 Lx4 X1490
475603586250018,717108361110210B2C 400 Lw4 X1490
48630403826502118308361110210B2C 400 Ly4 X1490
49gewählt:        
505003201243011,21745740962210B5C 355 Lf4  X1490

Formeln der Tabelle
ZelleFormel
S50=sverweis3($AA$50;$S$7:$AB$48;9;1)
T50=sverweis3($AA$50;$S$7:$AB$48;9;2)
U50=sverweis3($AA$50;$S$7:$AB$48;9;3)
V50=sverweis3($AA$50;$S$7:$AB$48;9;4)
W50=sverweis3($AA$50;$S$7:$AB$48;9;5)
X50=sverweis3($AA$50;$S$7:$AB$48;9;6)
Y50=sverweis3($AA$50;$S$7:$AB$48;9;7)
Z50=sverweis3($AA$50;$S$7:$AB$48;9;8)
AA50=motorauswahl(X57;S7:S48;X58;T7:T48;AA7:AA48)
AB50=sverweis3($AA$50;$S$7:$AB$48;9;10)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi

Anzeige
AW: Function automatisch aktualisieren ?
26.07.2007 16:14:12
Hubertus
Mann, hast Du das jetzt mal ebent gemacht? Bin ja schwer begeistert :-)
Ich teste mal ebent und meld mich gleich nochmal - SCHÖNEN DANK SCHONMAL :-)

AW: Function automatisch aktualisieren ?
26.07.2007 16:33:18
Hubertus
ICH BIN BEGEISTERT :-)
und "So einfach" - wenn mans weiss ;-)
hab an meinem Makro ca 2 Tage rungedoktort.... mit mittelmäßigem Erfolg.
VIELEN DANK FÜR DEINE HILFE!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige