HERBERS Excel-Forum - das Archiv

Thema: Variablen zusammenrechnen

Variablen zusammenrechnen
wennerfaellt
Hallo zusammen,

ich habe in meiner Formel folgende Variablen

Fahrt (16)
Zeit (20)
Linie (65)
Haltestelle (42)
(Klammerwerte sind Beispielwerte)
Alle mit Dim * As Long.

Ich möchte aus Zeit, Linie und Haltestelle den Maximalwert ermitteln, wären hier 65.
Diesen Wert möchte ich dem Wert Fahrt hinzurechen, also 65+16=81

Idealerweise in einer Formel etwa so:
Let Fahrt = Fahrt + (Max(Zeit,Linie,Haltestelle))


Dann möchte ich, ausgehend von Zelle B1 10 Spalten breit und aus dem Ergebnis Zeilen tief markieren. Bei Diesem Beispiel
Range("B1:K81").Select

Die Anzahl der Spalten bleibt immer gleich, nur die Anzahl der Zeilen verändert sich.
Vielen Dank schon im voraus.
AW: Variablen zusammenrechnen
daniel
Hi
nicht alle Funktionen von Excel sind auch in VBA implementiert.
Solche Excelfunktionen kann man in der Regel in VBA so verwenden:
Let Fahrt = Fahrt + (Worksheetfunction.Max(Zeit,Linie,Haltestelle))

zweite Frage:
Range("B1:K1").Resize(AnzahlZeilen).select

Gruß Daniel
AW: Variablen zusammenrechnen
wennerfaellt
Hallo Daniel,

ich hab den Danke-Button benutzt, aber der ist ja sehr unpersönlich.

Beide Formeln konnte ich gut umsetzen, sie tun genau was sie sollen. Der Tip mit Worksheetfunktion wird mich sicherlich auch zukünftig sehr hilfreich sein.

Nochmals Danke

Ich hab da noch ein Frage, die ich erstmal hier platziere, wenn Du sie nicht beantworten kannst, mache ich noch nen Thread auf:
Kann man in VBA sagen, "Zeige während des Ablaufes nur das Tabellenblatt "XY"?
AW: Variablen zusammenrechnen
daniel
Hi
danke für die persönliche Rückmeldung.
Den Danke-Button finde ich auch etwas unpersönlich, zumal ich auch gar nicht mitbekomme, wenn er gedrückt wird.
die direkte Rückmeldung ist da einfach besser.

es gibt die Möglichkeit, während des Makrolaufs den Bildschirm einzufrieren, mit dem Befehl: Application.ScreenUpdating = False
danach werden keine Änderungen mehr an der Bildschirmanzeige vorgenommen, bis entweder das Makro zu ende ist oder man die Eigenschaft wieder auf True setzt.

Besser ist aber, so zu programmieren dass sich am Bildschirm nichts ändert.
Du kannst auf einem Tabellenblatt arbeiten, das nicht sichtbar ist, wenn du vollständig referenzierst, also aus
Sheets("Tabelle1").Select

Range("A1").Select
Selection.Value = "Hallo Welt"

wird
Sheets("Tabelle1").Range("A1").Value = "Hallo Welt"

dann kann das Makro in der ganzen Mappe arbeiten, während immer das selbe Sheet angezeigt wird.
Ein Wechsel des Sheets findet dann nur noch statt, wenn man Sheets hinzufügt (neu oder kopie), weil dann immer das neu erstellte Sheet aktiv ist.
Man muss mit der vollständigen Referenzierung nur konsequent sein und beachten, dass jedes Range und auch jedes Cells auf das aktive Tabellenblatt referenziert.
Gerne vergessen wird das bei Range(Cells(), Cells()), hier muss das Tabellenblatt auch vor den beiden Cells in der Range stehen: Sheets(x).Range(Sheets(x).Cells(), Sheets(x).Cells())

Gruß Daniel