über eine UserForm definieren bzw. vorgebe und dann auf Start klicke und das ding legt los.
Richtig cool wäre es, wenn man auch noch sagen könnte via Checkbox oder so, ignoriere bis zu 10 leere Zeilen, danach zeige Fehler "Leere Zeile" oder das man die Anzahl der zu ignorierenden leeren Zeilen auch noch definieren kann.
Vielleicht kann mir ja jemand helfen, das wäre super. Danke.
20.11.2022, 20:32 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2022, 20:32 von schauan.)
Hallöchen,
dann könntest Du ein UF erstellen z.B. mit einem Commandbuttton, 3 Textboxen und einem Spinbutton.
1)
In Deinem Modul definierst Du die 4 Variablen über dem ersten Makro , also dann so
Public iMaxIterations As Integer '(oder Long) Public strStartRng As String Public strGoalRng As String Public strChngRng As String
Im Userform weist Du dann den Variablen die Inhalte (Text, Value) zu und kannst im bestehenden Makro damit arbeiten. Das Makro führst Du mittels eines cmd-Button auf dem UF aus. Im Makro des Buttons schließt Du das UF mit Unload Me
2)
Du verzichtest auf die Variablen und greifst im Makro auf die Elemente des UF zu. Dazu beendest Du das UF nicht mit Unload Me, sondern mit Me.Hide Dadurch bleibt das UF im Hintergrund aktiv und Du kannst im Makro auf die Objekte des UF im Prinzip mit UserForm1.Objektname.ObjektInhalt zugreifen, z.B. UserForm1.TextBox1.Text.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
ja das war mein Plan, leider bekomme ich die verknüpfung irgendwie nicht hin. Deswegen hatte ich die Excel inkl. UF und VBA bereits vorbereitet und mit hochgeladen, in der Hoffnung das mir jemand helfen kann bzw. das so baselt..ich habe es mehrfach versucht und bekomme es leider nicht hin.
ein direkter Bezug könnte dann so aussehen (ungetestet).
im UF:
Code:
Private Sub CommandButton1_Click() Me.Hide Zielwert End Sub
Man könnte die Boxen im UF noch mit den ursprünglich programmierten Werten vorbelegen. Man könnte die Angaben auch noch prüfen, z.B. das alles in der gleichen Zeile ist wenn das so sein soll oder nur bestimmte Spalten oder ein bestimmter Bereich zur Auswahl stehen soll. Es gibt übrigens auch noch eine RefEdit - Box, die die Auswahl von Zellen auf dem Blatt ermöglicht. Ebenso sollte man die Anzahl Durchläufe prüfen, schnell hat man mal eine Null mehr drin ...
im Modul- Dein bisheriger Code ist nur auskommentiert, meine Zuweisungen passen hoffentlich
Code:
Public Sub Zielwert() '----------------------Versuch 2 Fitz--------------------------------'
'Const iMaxIterations = 800 'Anzahl der zu durchlaufenden Iterationen 'Const strStartRng = "BI8" 'erster Zellbezug, ab welcher gearbeitet wird Formel mit Runden hinterlegt 'Const strGoalRng = "BM8" 'erster Zellbezug des Goal-Wertes Fixe Zahl hinterlegt 'Const strChngRng = "AT8" 'erster Zellbezug des ChangingCell-Wertes DB-Wert
'VARIABLES '------------------------------------------------------' Dim i As Integer Dim rStartCell As Range Dim rGoalCell As Range Dim rChngCell As Range
Set rStartCell = Range(Zielwertsuche.Zielzelle.Text) Set rGoalCell = Range(Zielwertsuche.Zielwert.Text) Set rChngCell = Range(Zielwertsuche.Veränderbare_Zelle.Text) iMaxIterations = Val(Zielwertsuche.Anzahl_Durchläufe.Text) 'Wandlung des Textes in eine Zahl
'SCHLEIFE '------------------------------------------------------' For i = 1 To iMaxIterations 'teste auf Abbruchbedingung VOR Ausführung des Codes If rStartCell.Offset(i - 1, 0).Value = "" Then Exit For 'Starte GoalSeeker rStartCell.Offset(i - 1, 0).GoalSeek Goal:=rGoalCell.Offset(i - 1, 0), ChangingCell:=rChngCell.Offset(i - 1, 0) Next i End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)