Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable Zielwertsuche mit Makro - nur wie?

Forumthread: Variable Zielwertsuche mit Makro - nur wie?

Variable Zielwertsuche mit Makro - nur wie?
15.01.2004 21:38:42
Bommel
Hallo erstmal :-)
Ich möchte folgendes machen: Zielwertsuche etwas erweitert
Beim starten des Makros soll der benutzer per eingabebox einen zellbereich (jeweils untereinanderliegende zellen mit zahlen) auswählen in dem verschiedene zielwerte (zahlen)stehen. dann soll die veränderbare zelle sowie die zelle mit der formel ausgewählt werden.
Als ergebnis soll das makro je nach anzahl der verschiedenen zielwerte die jeweiligen ergebnisse für die veränderbare zelle liefern und in einen vorher definierten zellbereich auf dem blatt schreiben. *uff*...
die abfrage der zellbereiche/der zelle habe ich so gemacht:
Dim Neuwert As Object
Set Neuwert = Application.InputBox(prompt:="Zielwerte eingeben:", Type:=8)
Set Neuwert = Application.InputBox(prompt:="Zielwerte eingeben:", Type:=8)
Set Target = Application.InputBox(prompt:="Zielzelle (mit Formel) eingeben:", Type:=8)
Set Aenderbar = Application.InputBox(prompt:="Änderbare Zelle eingeben:", Type:=8)
Set Neuwert2 = Application.InputBox(prompt:="Speicherzelle eingeben:", Type:=8) 'dort sollen die ergebnisse in die zellen geschrieben werden
Set Altwert.Value = Aenderbar.Value '(soll den ursprünglichen wert der zelle speichern um am ende die urprünglichen zahlenwerte wieder herzustellen)
Target.GoalSeek Goal:=Neuwert, ChangingCell:=Aenderbar
alles nur grob hingeschrieben :-)
Meine fragen:
wie kann ich die zellen/zellbereiche der benutzereingaben verwenden?
also wie kann ich aus den variablen die werte in die excel zellen schreiben, die der benutzer in den inputboxen angegeben hat?...habe es nicht hinbekommen, auch mit viel suche :-)
ich bin für jede hílfe dankbar
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Zielwertsuche mit Makro - nur wie?
15.01.2004 23:35:29
Coach
Hallo Bommel,
bitte poste mal eine Beispieldatei mit genauer Angabe Was -> Wohin und mit Deinem Basis-Algo. Dann baue ich den Rest ein.
Dank und Gruß Coach
AW: Variable Zielwertsuche mit Makro - nur wie?
16.01.2004 10:55:18
Bommel
Hier eine Beispieldatei:
https://www.herber.de/bbs/user/2985.xls
Und hier nochmal eine "Funktionsbeschreibung"

Sub Zielwertsuche()
Dim Neuwert As Object   'Zellbereich in dem die Zielwerte stehen
Dim Neuwert2 As Object  'Zellbereich in den abhängig von den Zielwerten
'die Ergebnisse der veränderbaren Zelle geschrieben werden
Dim Altwert As Object   'Variable, um den Ursprungswert der veränderbaren
'Zelle gespeichert wird
Dim Target As Object    'Die Zelle, in der die Formel der Zielwertsuche steht
Dim Aenderbar As Object 'Die bei der Zielwertsuche veränderbare Zelle
'Der Benutzer wählt mit der Maus die Zellen aus
Set Neuwert = Application.InputBox(prompt:="Zielwerte eingeben:", Type:=8)
Set Target = Application.InputBox(prompt:="Zielzelle Formel eingeben:", Type:=8)
Set Aenderbar = Application.InputBox(prompt:="Änderbare Zelle eingeben:", Type:=8)
'Speichern des Ursprungswertes der veränderbaren Zelle
Set Altwert.Value = Aenderbar.Value
'Hier müssten mit "GoalSeek" in einer Schleife je nach Anzahl der gewünschten Zielwerte
'die Werte der veränderbaren Zelle berechnet werden
Target.GoalSeek Goal:=Neuwert, ChangingCell:=Aenderbar
'Hier wählt der Benutzer aus wo die Ergebnisse gespeichert werden sollen auf dem Blatt
'könnte auch automatisch relative eine Spalte neben den Zielwerten stehen
Set Neuwert2 = Application.InputBox(prompt:="Speicherzellen eingeben:", Type:=8)
'Schreiben der Ergebnisse auf das Tabellenblatt
Set Neuwert2.Value = Aenderbar.Value
'Zurücksetzen der ursprünglichen Daten
Set Aenderbar.Value = Altwert.Value
End Sub

Wie gesagt, die Inputboxen speichern korrekt ein Range-Object(habe mit .Adress mir die Werte angeschaut liefert soetwas: $E$5:$E$10).
Ich weiss einfach nicht wie ich dieses Range-Object verwenden kann, um die Daten, die auf dem Tabellenblatt in diesem Range stehen zu verwenden (also auslesen, auf das Blatt schreiben usw.).

Ich denke wenn mir jemand erklären könnte wie ich von dem Range-Object aus der Inputbox direkten Bezug auf die jeweiligen Werte auf dem Tabellenblatt nehmen kann, wäre mir schon sehr geholfen. Ich habe auch nach längerem Hilfedurchsuchen nichts gefunden.
Vielen vielen Dank!!
Anzeige
AW: Variable Zielwertsuche mit Makro - nur wie?
19.01.2004 09:11:06
Bommel
Vielen Vielen Vielen Dank!!!
Deine Beispiellösung hat nicht nur mein Problem mit der Zielwertsuche gelösst, sondern ich kann anhand deines codes auch neue Elemente von VB erlernen/ableiten.
Du hast mir sehr weitergeholfen und fetten respekt, dass du dir so schnell die arbeit gemacht hast. ich werde es mir vornehmen, anderen auch so schnell zu helfen, damit die "wissens-kette" nicht abreisst :-))
Bommel
Anzeige
AW: Variable Zielwertsuche mit Makro - nur wie?
20.01.2004 10:53:24
Bommel

Sub Goalseekfixed()
Dim Neuwert As Range   'Zellbereich in dem die Zielwerte stehen
Dim Neuwert2 As Range 'Zellbereich in den abhängig von den Zielwerten
'die Ergebnisse der veränderbaren Zelle geschrieben werden
Dim Target As Range    'Die Zelle, in der die Formel der Zielwertsuche steht
Dim Aenderbar As Range 'Die bei der Zielwertsuche veränderbare Zelle
Dim AlterWert As Variant 'Variable, um den Ursprungswert der veränderbaren Zelle gespeichert wird
Dim neu As Range
On Error GoTo Fehler
'Set Target = Application.InputBox(prompt:="Formula:", Type:=8)
Set Target = Range("Formula")
If Target.Count <> 1 Then InfoAbbruch ("You can select a single cell only!")
Set Aenderbar = Range("Changing")
If Aenderbar.Count <> 1 Then InfoAbbruch ("You can select a single cell only!")
'Set Neuwert = Application.InputBox(prompt:="Goals:", Type:=8)
Set Neuwert = Range("Goals")
'Do
'  Set Neuwert2 = Application.InputBox(prompt:="Target Area (must be same Range as Goals Area) :", Type:=8)
'Loop Until (Neuwert2.Rows.Count = Neuwert.Rows.Count) And (Neuwert2.Columns.Count = Neuwert.Columns.Count) 'Then InfoAbbruch ("Der Bereich für die Speicherzellen muß die selbe Form+Größe wie der Bereich mit den Zielwerten haben")
Set Neuwert2 = Range("test")
'Speichern des Ursprungswertes der veränderbaren Zelle
AlterWert = Aenderbar.Value
For Each neu In Neuwert
Target.GoalSeek Goal:=neu.Value, ChangingCell:=Aenderbar
'HIER BRICHT ER IMMER AB
Neuwert2.Cells(neu.Row - Neuwert.Row + 1, neu.Column - Neuwert.Column + 1) = Aenderbar.Value
Next
Aenderbar.Value = AlterWert
Fehler:
'Zurücksetzen der ursprünglichen Daten
End Sub


Sub InfoAbbruch(Info$)
MsgBox Info & " ! Action canceled. please restart "
End
End Sub

Wie oben geschrieben habe ich versucht die Benutzereingabe mit der Maus durch die Verwendung von Namen in der Tabelle zu ersetzen...nur bricht er an einer bestimmten stelle im code immer ab (markiert siehe oben)...
was mache ich nur falsch?
https://www.herber.de/bbs/user/3051.xls
Anzeige
;
Anzeige

Infobox / Tutorial

Variable Zielwertsuche mit Makro in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge einen neuen Modulkodex hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub Zielwertsuche()
       Dim Neuwert As Range
       Dim Neuwert2 As Range
       Dim Altwert As Variant
       Dim Target As Range
       Dim Aenderbar As Range
    
       ' Benutzer wählt Zellbereiche aus
       Set Neuwert = Application.InputBox(prompt:="Zielwerte eingeben:", Type:=8)
       Set Target = Application.InputBox(prompt:="Zielzelle (mit Formel) eingeben:", Type:=8)
       Set Aenderbar = Application.InputBox(prompt:="Änderbare Zelle eingeben:", Type:=8)
    
       ' Ursprungswert speichern
       Altwert = Aenderbar.Value
    
       ' Zielwertsuche durchführen
       For Each neu In Neuwert
           Target.GoalSeek Goal:=neu.Value, ChangingCell:=Aenderbar
           ' Ergebnisse speichern
           Set Neuwert2 = Application.InputBox(prompt:="Speicherzellen eingeben:", Type:=8)
           Neuwert2.Cells(neu.Row - Neuwert.Row + 1, neu.Column - Neuwert.Column + 1) = Aenderbar.Value
       Next
    
       ' Ursprungswert zurücksetzen
       Aenderbar.Value = Altwert
    End Sub
  4. Schließe den VBA-Editor und kehre zu deiner Excel-Arbeitsmappe zurück.

  5. Führe das Makro aus über Entwicklertools > Makros und wähle Zielwertsuche.


Häufige Fehler und Lösungen

  • Fehler beim Auswählen von Zellbereichen:

    • Stelle sicher, dass du beim Eingeben von Zellbereichen die richtigen Zellen auswählst. Du kannst die InputBox auch durch ein Dropdown-Feld ersetzen, um die Auswahl zu erleichtern.
  • Zielwertsuche bricht ab:

    • Überprüfe, ob die von dir gewählten Zellbereiche die gleiche Anzahl von Zeilen und Spalten haben. Dies kann leicht über die Count-Eigenschaft überprüft werden.

Alternative Methoden

  • Verwendung von Namensbereichen: Du kannst statt Zellreferenzen auch Namensbereiche in Excel verwenden. Dies macht deinen Code leichter verständlich und die Auswahl der Zellen einfacher.

  • Einbindung in eine benutzerdefinierte Funktion: Wenn du die Zielwertsuche oft benötigst, könntest du den Code in eine benutzerdefinierte Funktion einfügen, die du jederzeit aufrufen kannst.


Praktische Beispiele

Hier ist ein Beispiel für die Eingabe von Zellbereichen:

  • Angenommen, du hast die Zielwerte in den Zellen A1:A5 und möchtest die Ergebnisse in den Zellen B1:B5 speichern. Wähle einfach diese Bereiche aus der InputBox aus.

Ein Beispiel für die Zielwertsuche könnte so aussehen:

Set Neuwert = Range("A1:A5")
Set Target = Range("C1") ' Formel in C1
Set Aenderbar = Range("D1") ' Veränderbare Zelle

Tipps für Profis

  • Debugging: Verwende Debug.Print oder setze Haltepunkte im Code, um den Wert von Variablen während der Ausführung zu überwachen. So kannst du leichter Fehler finden.

  • Optimierung: Denke daran, den Code zu optimieren, indem du unnötige Berechnungen vermeidest. Wenn du große Datenmengen verwendest, kann dies die Leistung erheblich verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Ergebnisse der Zielwertsuche in ein bestimmtes Format bringen?
Du kannst die Formatierung der Zellen in Excel über die VBA-Eigenschaft NumberFormat anpassen, nachdem du die Werte geschrieben hast.

2. Kann ich die Zielwertsuche auch für mehrere Formeln gleichzeitig nutzen?
Ja, du kannst eine Schleife verwenden, um mehrere Zielzellen zu bearbeiten. Stelle sicher, dass die Anzahl der Zielwerte mit der Anzahl der Formeln übereinstimmt.

3. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe, ob alle Zellreferenzen korrekt sind und ob die richtigen Zellbereiche ausgewählt wurden. Stelle sicher, dass du keine Fehler in deiner Formel hast. Debugging kann hier sehr hilfreich sein.

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