Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

MsgBox mit Eingabe, speichern und Modul7 ausführen lassen

Forumthread: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen

MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 10:47:38
mckater
Ja, mein Coderl funktioniert super!
Aber ich habe ein Problem!

Ich hätte gerne ein Makro mit MsgBox, wo ich die Jahreszahl eingebe wie z.B. 2025
Er durschsucht das ganze Modul7 und ersetzt es mit 2025.
Der speichert es und fängt an das Modul7 bis zum Schluss zu starten.
Manuell klappt das super, aber das ist aufwendig. Ersetzen nach dem Jahr....

Derweil muss ich immer über Ersetzen rein gehen und die Jahreszahl ändern in den Codes, das ist mühsam!

Perfekte Lösung wäre.....auf den Button drücken, MsgBox fragt mich welches Jahr und er ändert es in dem Code, bei mir Modul7 und speichert es und sagt dann.
Jetzt starten wir das Makro deiner Wahl.

LG mckater
Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 11:14:44
RPP63
Moin!
Eine MsgBox kann nur Texte ausgeben!
Für eine Eingabe gibt es die InputBox …
Deine Idee ist eher suboptimal.
Nimm lieber Übergabeparameter, die an Prozeduren übergeben werden.
Mal bewusst einfach:
Sub Mach_Es()

Dim j As Long
j = Application.InputBox("Bitte Jahr eingeben!", , Year(Date), Type:=1)
If IsNumeric(j) Then Call Parameter(j)
End Sub

Sub Parameter(Jahr As Long)
MsgBox "Es wurde das Jahr " & Jahr & " übergeben!"
End Sub

Gruß Ralf
Anzeige
AW: no problem
24.08.2025 13:21:52
GerdL
Option Explicit

Public intYear As Integer

Sub easy_run()

'for example
'Tabelle1.Range("a2") = 2024 'at once replace with variable.
Tabelle1.Range("a2") = intYear
MsgBox "done"


End Sub


Private Sub Commandbutton1_Click()
Dim var As Variant

var = Application.InputBox("set the new year", "Year determinate", Year(Date), Type:=1)
If var Like "####" Then
If var > 2020 And var 2040 Then
intYear = Int(var)
Call Modul7.easy_run
End If
End If

End Sub


LG GL
Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 16:25:22
Piet
Hallo

warum so kompliziert denken, wenn es noch viel einfacher geht.
Verstehe das bitte als fundiertes Wissen aus der Praxis, nicht als "Besserwisserei" zum angeben!

Schreibe bitte ganz oben in Modul 7 den Text: - Public Const Jahr = 2025
Dann ändere in Modul 7 (oder allen Modulen) die -2024- in den Text "Jahr" um!
Jetzt schaut das Makro bei der Ausführung immer welches Jahr oben angegeben ist.

Das musst du nur einmal im nächsten Jahr ändern! Ist das ein brauchbarer Vorschlag??

mfg Piet


Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 20:32:15
mckater
Hallo Piet,

mein Modul7 arbeitet 3 Sub's ab die je mit GoTo weitergeleitet werden von der ersten Sub zur zweiten und zur letzten der dritten Sub
Nur in der Sub3 im Modul7 müsste ich das Jahr ändern, was ich brauche.

Ich dachte es würde etwas einfacher gehen und über die MsgBox bzw. Inputbox.
Sprich: also würde ganz oben noch eine Sub sein vor den darauffolgenden, die schon bestehen.
Sobald ich dann es starte, wird gefragt welches Jahr und er durchsucht das ganze Modul7 und ersetzt das Jahr dann mit meiner Eingabe.
Im Prinzip halt nur einmal mal.

Dein Hinweis ist natürlich eine alternative, aber ich müsste ja dann das gleiche tun, was ich jetzt schon mache.
Es manuell zu ersetzen oder habe ich das jetzt falsch verstanden?

Im Prinzip wollte ich es ja nur aus einem Excel Sheet durchführen lassen, ohne in die Entwickertools gehen zu müssen um die eine Jahreszahl ändern zu müssen jedesmal.
Vielleicht würde der Code, was ich in Modul7 habe helfen?

LG mckater
Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 23:52:11
daniel
Ja , wenn man fragen zum Code hat, ist Code immer hilfreich
Dann besteht auch die Chance, dass du eine Antwort bekommst, die zu deinem Code passt und die du 1:1 umsetzen kannst ohne noch selber denken zu müssen.

Der erste Schritt zu Unsetzung wäre, dass du für die Jahreszahl eine Variable verwendest

Dh üball, wo im Code die Zahl 2025 verwendet wird, ersetzt du das 2025 durch beispielsweise xJahr

An den Anfang des Codes kommt dann
Dim xJahr as long 

xJahr = 2025

Das Dim legt fest, dass du mit dieser Variable arbeiten willst und dass die Ganzzahlen enthalten soll
Dann weist du den Wert zu.
In der Folge wird dann immer wo xJahr steht, diese Zahl verwendet.
.
Das hat für dich erstmal den Vorteil, dass du gür ein neues Jahr nur diese eine Stelle ändern musst und dass es trotzdem im ganzen Makro wirksam wird.

Auch wenn du dann umsetzten willst, was du dir vorstellst, müsste man nur diese eine Stelle mit der Zuweisung anpassen.

Ich könnte mir auch vorstellen dass du die Zahl in ein freie Zelle schreibst ,z.B in die Zelle A1 im Blatt "Tabelle1"
Dann lautet der Code:
Dim xJahr as long 

xJahr = Sheets("Tabelle1").Range("A1").value
und dann änderst du nicht den Code im Editor ,sondern den Zellwert im Tabellenblatt.

Eine Kleinigkeit noch:
Wenn du die Zahl 2025 in einem Text verwendest:
... "Im Jahr 2025 haben wir ... "...

Dann musst du die Variable so verwenden
... "Im Jahr " & xJahr & " haben wir ... "...

Schreibst du die Variable direkt in den Text, sie nicht als Variable erkannt.

Gruß Daniel





Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
25.08.2025 11:27:02
mckater
Hallo Daniel,

Deine ausführliche Beschreibung passt super!
Ich habe alles durchgespielt und funktioniert genial!

Die Variante, wo ich in Excel ein Tabellenblatt habe wie z.b. Jahreszahl, wo in A1 nun 2025 steht und ich in meiner SUB3 von Modul7 deinen Code eingefügt habe.
(am Anfang der Sub3 in Modul7) LOGISCH
Ich muss natürlich dazu sagen, dass bei mir bei Sub1 gestartet wird, wird auf Sub2 mit GoTo weitergeleitet wird bis zur letzten Sub3, wo dann dieser Code steht.

Dim xJahr as long
xJahr = Sheets("Jahreszahl").Range("A1").value


Dann habe ich natürlich in der Sub3 aus Modul7 folgendes geändert, wo ich das ändern wollte und es klappt prima.

Vorher: Sheets("Rohdaten").Name = "2025"
Nachher: Sheets("Rohdaten").Name = xJahr

Genial war natürlich, weil ich dann eine Inputbox erstellt habe, was mich fragt welche Jahreszahl ich haben will.
Gebe das ein, er speichert es so wie ich es will und läuft das ganze Makro ab und fertig in 5sec oder so.

Genau das wollte ich haben Daniel!
So funktioniert Coden mit deiner Hilfe!

Mit deiner Hilfe gibt es halt am Anfang die andere Sub, welche mich mit der Inputbox fragt, welches Jahr und er schreibt es rein und fährt dann mit OK weiter und läuft alle Subs ab....genial!
Deine Coderl sind natürlich genau da, wie du es mir beschrieben hast.....
Ich kann mir somit einen Button erstellen, nennt sich in Excel anders, aber, der fragt mich, gebe was ein und ich mache es und fertig ist es in 5sec.

Bei mir müssen nur die Rohdaten gefüttert werden, das mache ich manuell, weil über PQ kommen da komische Dinge raus.
Hab das auch schon mit VBA machen lassen, aber bei einigen Dingen fehlten da Zahlen und manuell klappt das super.
Egal, warum und wieso das so ist, wo Zahlen fehlen egal.....geht ja schnell und man braucht ja nur die aktuellen Daten aus dem Web.

Deine Codes waren der Schlüssel dazu, wie ich das so schaffe, wie ich es haben wollte und es funktioniert super mit der Variable und nun auch mit der InputBox und er gibt mir die Meldung aus in der MsgBox und dann macht er alles richtig!!!!!

DANKE an den Coder
(Der Fall ist somit BESTENS von Daniel erledigt worden!)

Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
25.08.2025 15:29:55
daniel
Danke,so euphorische Feedbacks sind selten.
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
25.08.2025 15:58:17
mckater
Danke Daniel für die Codes, die mir echt so geholfen haben und zudem hast mir ja das ganze Programm geschickt, welche Möglichkeiten damit man hat.
Solche Dinge sind wie Schleifen und sollten man auf alle Fälle speichern für den Notfall!

Für Coder die sich sehr gut auskennen wäre es lächerlich, für mich NICHT.
Weil über deine Codes habe ich es geschafft auch mit MsgBox bzw. InputBox geschafft es umzusetzen!
Das war ja mein Ziel und der klappt perfekt!

Du hast Dir sehr viel Mühe gegeben mir alle Lösungen näher zu bringen.....ist wow was ich da sehen durfte.
Ich verstehe die Codes, nur wenn man einen Tunnelblick hat, ist es anders.

Es wird noch viele Fragen geben, die ich habe, aber das ist dann ein anderes Thema.

Deine Codes haben mir gezeigt wie man es umsetzen kann....Ich gebe manuell die Daten in die Rohdaten rein und dann auf die Reise schicken wo mir deine Hilfe genau das macht, was ich brauchte.....Rohdaten eingeben und los geht es und in 5sec ist alles FERTIG.

Das könnte ich auch mit PQ machen (Power Query).....mir ist halt aufgefallen, das PQ, auch wenn ich die richtige Tabelle habe nicht die Daten gibt wir manuell.
Es stehen teilweise Daten nicht so drinnen wie wenn ich Sie manuell kopiere von einer Homepage....egal.....Manuell bin ich genauso schnell*gg*

Also fettes LOB an Dich Daniel und ein Musterbeispiel wie einfach Coden ist, wenn man solche Leute hat wie Dich.

LG aus dem Ösiland, mckater


Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 11:29:20
mckater
Es geht ja nicht mein Coderl zu verändern in Modul7
Er macht halt das was ich ihm sage und macht das super!
Ich muss halt in den Entwicklertools die Jahreszahl ständig ändern.
Und wenn ich das manuell gemacht habe, ist er brav so wie ich es haben will.

Wenn wir schon von MsgBox reden wie InputBox.....
Ich brauche einen Button für das Makro7 wo ich die Zahl eingebe.
Das andere soll ein zweiter Code machen, ändern auf die Zahl.
Der Rest sollte dann sie gespeicherte Datei ausführen.

Im Prinzip einfach:
MsgBox und 2025 eingeben
Der nächste Code ändert das gesamte Modul 7 von 2024 auf 2025
Und dann starten wir es und er macht, was ich genau haben will.
Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 11:38:33
RPP63
Ich gebe bereits jetzt auf.
Du solltest ernsthaft erst mal an den absoluten Grundlagen arbeiten.
Meine Übergabe von Parametern an eine Sub ist bereits erweiterte Grundlagen.
Was Du da vorhast, nennt sich Code per Code ändern.
http://www.cpearson.com/excel/vbe.aspx
Du kannst Dich ja mal "kurz" einlesen.
Aber glaube mir, dass das weit über Deinem Kenntnisstand liegt.

Weiterhin viel Erfolg!
Gruß Ralf
Anzeige
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 12:18:54
mckater
Ich mach es eh manuell, weil solche Meldungen sind nichts für mich, ...Danke für die Beschimpfung und wie gut du noch so bist in Excel!
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 12:20:09
mckater
Klugscheisser mag keiner!
Da sucht man echt selber nach einer Lösung!
AW: MsgBox mit Eingabe, speichern und Modul7 ausführen lassen
24.08.2025 12:32:51
BoskoBiati
Hi mckater,

immer wieder das gleiche Spiel. Weder in der Lage einen VBA-Code vernünftig zu erstellen, noch gewillt Ratschläge anzunehmen!

z.B.:

Ja, mein Coderl funktioniert super!

Welcher Code? Und so super scheint er nicht zu funktionieren, sonst gäbe es diesen Thread nicht.

Warum die Jahreszahl nicht in einer globalen Variablen oder einer Konstanten hinterlegen und diese in den Code einbauen, dann muß nur noch an einer Stelle geändert werden. Ginge auch mit einer Variablen, die den Wert aus einer Zelle zieht!

Vielleicht solltest Du generell mal Deinen Schreibstil und Deine Äußerungen überdenken, so schaffst Du Dir keine Freunde.

Gruß

Edgar
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige