Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Zielwertsuche mit VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Zielwertsuche mit VBA (6539 mal gelesen)
Masterofsleepon
Mitglied
Entwicklungsingenieur

Sehen Sie sich das Profil von Masterofsleepon an!   Senden Sie eine Private Message an Masterofsleepon  Schreiben Sie einen Gästebucheintrag für Masterofsleepon

Beiträge: 7
Registriert: 21.08.2014

Windows 7 Enterprise
Intel Xeon CPU E5-2665 @2,4 GHz
128 Gb RAM
256 Gb SSD
2 TB im LSI RAID 5/6
_________________
NX - 8.5
Ansys 15.0

erstellt am: 06. Okt. 2014 13:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich würde gerne eine automatische Zielwertsuche mit Excel 2010 für einen bestimmten Bereich erzeugen.

Ziel ist es, in einer Liste automatisch in z.B. Spalte "D" Reihe 1-5 über Spalte "E" Reihe 1-5 eine Zielwertsuche zu starten.

Dazu habe ich bereits ein Makro geschrieben. Es kommt allerdings immer ein Laufzeitfehler 1004 mit "Bezug ist ungültig".

Das Makro habe ich euch mal angehängt.
Die Daten werden über eine InputBox eingeholt.

Ich freue mich auf eure Antworten,

MfG
Masterofsleepon

Sub Zielwertsuche()

Dim verSpalte, zielSpalte, oben, unten As String

Dim zielwert As Integer

verSpalte = InputBox("Bitte veränderbare Spalte als String eingeben", "veränderbare Spalte", "D")
zielSpalte = InputBox("Bitte Zielspalte als String eingeben", "Zielspalte", "E")
zielwert = InputBox("Bitte Zielwert als Int eingeben", "Zielwert", 10)
unten = InputBox("Bitte unteren Zeilenwert als Int eingeben", "Unterer Wert", 6)

oben = InputBox("Bitte obereren Zeilenwert als Int eingeben", "Oberer Wert", 21)

For i = unten To oben
Tabelle1.Range(zielSpalte & i).GoalSeek Goal:=zielwert, _ChangingCell:=Tabelle1.Range(verSpalte & i)


Next


End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 06. Okt. 2014 15:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Masterofsleepon 10 Unities + Antwort hilfreich

Moin,

Variablendeklaration: Geht SO nicht, entweder, Du verwendest verSpalte$, zielSpalte$, oben$, unten$ ODER Du deklarierst einzeln: verSpalte as string, zielSpalte as string usw. Schau Dir dazu die Kurzbezeichnungen an: ( http://msdn.microsoft.com/de-de/library/s9cz43ek.aspx )
So, wie Du es stehen hast, hast Du NUR unten as String deklariert, den Rest als Variant und i überhaupt nicht.
Setz die Option Explicit, um so etwas schnell zu sehen.
Aber das nur am Rande.

Zum Makro:
Vorab: Ich hab keinerlei Schimmer von diesen Zielwertsuchen, hab mir das nur kurz via F1 reingezogen und komme damit auf folgende Überlegungen:

Hast Du in jeder Zeile, die Du durchläufst, auch ein Polynom stehen? Bei mir kommt 'Dein' Fehler immer dann, wenn das eben nicht der Fall ist (Polynom nur in D1 und nicht mehr in D2, es sollen aber in E1 & E2 die Zielwerte berechnet werden)

Wenn ich hergehe und den NAMEN "X" innerhalb der Schleife bei jedem i neu vergebe, läuft das Makro (auf den ersten Blick auch mit sinnvollen Ergebnissen) durch.


Schau mal, ob Dir das jetzt schon irgendwie weiter hilft. Wenn nicht, sorry! Das war all mein Gold, ich hoffe, ich blamier mich damit jetzt nicht völlig  

Code:
Option Explicit

Sub Zielwertsuche()

Dim verSpalte$, zielSpalte$, oben$, unten$, i% 'As String

Dim zielwert As Integer

verSpalte = InputBox("Bitte veränderbare Spalte als String eingeben", "veränderbare Spalte", "D")
zielSpalte = InputBox("Bitte Zielspalte als String eingeben", "Zielspalte", "E")
zielwert = InputBox("Bitte Zielwert als Int eingeben", "Zielwert", 10)
unten = InputBox("Bitte unteren Zeilenwert als Int eingeben", "Unterer Wert", 6)
oben = InputBox("Bitte obereren Zeilenwert als Int eingeben", "Oberer Wert", 21)

For i = unten To oben
ActiveWorkbook.Names.Add Name:="X", RefersTo:=Tabelle1.Range(verSpalte & i)
Tabelle1.Range(zielSpalte & i).GoalSeek Goal:=zielwert, ChangingCell:="X" 'Tabelle1.Range(verSpalte & i)

Next
ActiveWorkbook.Names("X").Delete
End Sub



------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 06. Okt. 2014 18:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Masterofsleepon 10 Unities + Antwort hilfreich


XL2010_testzielwert.zip

 
hmm, was macht denn der "_" vor ChangingCell - Tippfehler?;-)

<Laufzeitfehler 1004 mit "Bezug ist ungültig> erzwinge ich, wenn in der Zielzelle E keine Formel vorliegt.

Code:
Option Explicit

Sub Zielwertsuche()

Dim verSpalte$, zielSpalte$, zielwert%, oben%, unten%, i% '$ =  String / % = Integer

verSpalte = InputBox("Bitte veränderbare Spalte als String eingeben", "veränderbare Spalte", "D")
zielSpalte = InputBox("Bitte Zielspalte als String eingeben", "Zielspalte", "E")
zielwert = InputBox("Bitte Zielwert als Int eingeben", "Zielwert", 10)
unten = InputBox("Bitte unteren Zeilenwert als Int eingeben", "Unterer Wert", 6)
oben = InputBox("Bitte obereren Zeilenwert als Int eingeben", "Oberer Wert", 21)

For i = unten To oben
Tabelle1.Range(zielSpalte & i).GoalSeek Goal:=zielwert, ChangingCell:=Tabelle1.Range(verSpalte & i)
Next

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 06. Okt. 2014 19:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Masterofsleepon 10 Unities + Antwort hilfreich

>> hmm, was mach den der "_" vor ChangingCell?

Der kommt u.U. aus dem F1-Beispiel und lungert da nur noch so herum  http://msdn.microsoft.com/en-us/library/office/aa195749(v=office.11).aspx
Ist aber 'bei mir' auch schon raus. War das Erste, was ich tun mußte, denn reines Copy&Paste ergibt ne rote Zeile 
Ansonsten läuft das bei Dir durch? Hmm. Bei meinen Tests (Office2007&2013) mit 1004-er nicht.

Aber vielleicht warte ich erstmal die edits ab 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 06. Okt. 2014 21:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Masterofsleepon 10 Unities + Antwort hilfreich

Hallo Rübe,

ein reines c&p aus http://msdn.microsoft.com/en-us/library/office/aa195749(v=office.11).aspx erzeugt bei mir nix rotes,
der Code aus der Problemstellung aber durchaus ;-)

es steht ja das _ für Zeilenumbruch im Code

Sofern ich nicht neben der Kappe laufe  läuft der Code durch (bsp. mappe)

Edits - Püh 

Code:
For i = unten To oben
Tabelle1.Range(zielSpalte & i).GoalSeek _
Goal:=zielwert, _
ChangingCell:=Tabelle1.Range(verSpalte & i)
Next

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Praktikant / Werkstudent (m/w/d) als Assistenz der Bauleitung

GOLDBECK?realisiert zukunftsweisende Immobilien in Europa. Wir verstehen Gebäude als Produkte und bieten alle Leistungen aus einer Hand: vom Design über den Bau bis zu Services im Betrieb. Aktuell beschäftigt unser Familienunternehmen mehr als 12.000 Mitarbeitende an über 100 Standorten bei einer?Gesamtleistung von über 6 Mrd. Euro. Unser Anspruch ?building?excellence? steht dabei für Spitzenleistungen ...

Anzeige ansehenAssistenz, Sekretariat
Masterofsleepon
Mitglied
Entwicklungsingenieur

Sehen Sie sich das Profil von Masterofsleepon an!   Senden Sie eine Private Message an Masterofsleepon  Schreiben Sie einen Gästebucheintrag für Masterofsleepon

Beiträge: 7
Registriert: 21.08.2014

Windows 7 Enterprise
Intel Xeon CPU E5-2665 @2,4 GHz
128 Gb RAM
256 Gb SSD
2 TB im LSI RAID 5/6
_________________
NX - 8.5
Ansys 15.0

erstellt am: 07. Okt. 2014 08:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen zusammen,

erstmal herzlichen Dank für die vielen Antworten.

Zunächst das Problem mit dem "Unterstrich"
Das ist hier mein erster Post im Excel-Bereich. In meiner Antwort war beim Code-Kopieren ein Zeilensprung entstanden. Da ich dachte, dass dieser dann nachher beim Copy-Paste Probleme bereitet, wollte ich mit dem Unterstrich die Zeile fortführen.
War wohl nicht so clever von mir  

An Runkelruebe:
Danke zunächst für den Hinweis mit der Variablendeklaration.
Bin nur gelegentlich mit VBA unterwegs und hab mir nur ein gefährliches Halbwissen angeeignet. Da bin ich um solche Hinweise sehr dankbar.
Wenn ich deinen Code einfüge, erhalte ich leider den gleichen Fehler.

Nun zum eigentlichen Problem.
Habe ein bisschen mit euren Hinweisen herumprobiert, bin aber so zunächst nicht zu einer Lösung gekommen.
Habe dann die Sub noch einmal neu aufgebaut, und eigentlich das gleiche nochmal gemacht. Auf einmal läuft alles. (???)

Kann mir grad nicht erklären, wieso, aber hier findet ihr den funktionierenden Code.

Code:

Option Explicit
Sub Zielwertsuche()

Dim verSpalte$, zielSpalte$, oben%, unten%, i%, zielwert%
'
verSpalte = InputBox("Bitte veränderbare Spalte als String eingeben", "veränderbare Spalte", "E")
zielSpalte = InputBox("Bitte Zielspalte als String eingeben", "Zielspalte", "D")
zielwert = InputBox("Bitte Zielwert als Int eingeben", "Zielwert", 10)
unten = InputBox("Bitte unteren Zeilenwert als Int eingeben", "Unterer Wert", 6)
oben = InputBox("Bitte obereren Zeilenwert als Int eingeben", "Oberer Wert", 19)

For i = unten To oben

Range(zielSpalte & i).GoalSeek Goal:=zielwert, ChangingCell:=Range(verSpalte & i)

Next

End Sub



Vielen Dank nochmals für eure Mithilfe,

Gruß
Masterofsleepon

[Diese Nachricht wurde von Masterofsleepon am 07. Okt. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz