Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro mit Makro ändern





Frage

Hallo, ich habe ein Problem mit Makros. Ich möchte nämlich, dass ein Makro1, wenn es ausgeführt wird, ein schon bestehendes Makro2 in meiner Arbeitsmappe ändert. Es soll eine Art Aktualisierungsvorgang durchgeführt werden. Z.B. soll aus Range("A16:C25").Select Range("A16:C30").Select werden und dies soll mit einem Makro geschehen. Wenn dies möglich ist???? Mein VBA Projekt ist Kennwortgeschützt, ebenso die Arbeitsmappe. Kann mir jemand helfen??

Antwort 1 von Elefunty

du könntest die Feldkoordinaten in eine bestimmte Zelle schreiben, dann kann das Makro 1 drauf zugreifen und Makro2 kann den Wert in der Zelle ändern.
Elefunty

Antwort 2 von nighty

hi all :-)

lässt sich über globale variablen besser lösen

deklarierung in ein allgemeines modul

gruss nighty

Antwort 3 von florengray

Das mit Feldkoordinaten ist logisch, aber wie mache ich das?
Is ne blöde Frage. Ich weis.
Aber so gut bin ich dann doch noch nicht, dass ich Alles sofort verstehe.
Freue mich auf weitere Hilfe!!!

Antwort 4 von Beverly

Hi,

in einem allgemeinen Modul

Option Explicit
Public strAdresse As String

Sub Makro1()
    strAdresse = Worksheets("Tabelle1").Range("A1")
    Makro2
End Sub

Sub Makro2()
    Range(strAdresse).Select
End Sub


In A1 schreibst du A16:C30, von da wird er mit dem 1. Makro ausgelesen, an das 2. Makro übergeben. Wenn Variablen als Public deklariert sind, können ihre Inhalte in allen Prozeduren des Projektes verwendet werden.

Bis später,
Karin

Antwort 5 von florengray

Hört sich gut an, werd ich mal probieren.

Antwort 6 von florengray

Nochmals Hallo,
Soweit ne gute Hilfe, aber nicht das was ich eigentlich wollte.
Gut ich kann das so machen, aber es ist dann ein wenig umständlicher.
Ich habe mich am Anfang auch ein wenig missverständlich ausgedrückt.
Also
Ich habe eine Arbeitsmappe mit einem Programm für meine Arbeitskollegen.
Dort sind ein paar Zeilen für Messwerte. ( mit Formeln)
Nun kommt es manchmal vor, dass diese nicht ausreichen und man müsste nun ewig lange Formeln
und unendlich viel Makros ändern.
Von Hand!!!
Das ist eine Jahrhundertaufgabe.
Nun zu dem Problem:
In der ursprünglichen Arbeitsmappe "Kernel11"
ist eine Tabelle 1 mit einem Makro das auf den Bereich A16 bis C25 zugreift.

Wenn ich nun das sogenannte Upgrade Makro durchführe, werden die Formeln und der ganze andere Mist in Sekundenschnelle für mich erledigt, aber der Bereich auf den nun die Tabelle 1 zugreifen muss lautet nicht mehr A16 bis C25 sondern A16 bis C30. Genau 5 Zeilen mehr.Warum 5 is egal.
Aber das wird von meinem "Upgrade" Makro leider nicht berücksichtigt.
Fazit: funzt nicht mehr.
Ich habe mir das so vorgestellt, dass das Upgrade Makro vielleicht beim Ausführen einfach die Stelle Range("A16:C25") mit Range("A16:C30") überschreibt und dann Alles paletti ist.
Ach ja das Upgrade Makro wird extern von einer anderen Arbeitsmappe aus geöffnet aber in dem eigentlichen Programm ausgeführt.
Grund: Damit umgehe ich, dass jemand irgendwelche Passwörter einsehen kann.

Ich hab mal was mit Objekt.Copy oder so was probiert aber das ging irgendwie nicht??
Vielleicht habt ihr auch dafür ein bisschen Hilfe für mich????

Antwort 7 von Beverly

Hi,

Frage: weshalb nimmst du einen starr festgelegten Bereich? Du könntest doch auslesen, bis zu welcher Zeile deine Werte gehen und schreibst anstelle

Range("A16:C25")

dann

Range("A16:C" & Deine_letze_zeile)

Bis später,
Karin

Antwort 8 von florengray

Könnte ich machen, aber wie schon gesagt,
ich müsste jedes Makro in jeder einzelnen Mappe meiner Kollegen öffnen, den Eintrag suchen und den dann manuell ändern.
Geht. Natürlich.
Aber wenn unsere Testreihe dann einmal sehr umfangreich wird (650Zeilen), fast 150 Mitarbeiter dazugeholt werden und ich dann als Admin, bei 160 jedes manuell.....
Ne das sollte schon automatisch gehen.
Ist im Übrigen ziemlich cool, wenn ich so´n Makro habe, das so was umfangreiches in ein paar Sekunden absolviert! Und dazu noch automatisch!

Hättest du ne kleine Lösung für mich???????

Antwort 9 von florengray

Muss noch was hinterherschieben.
Es wäre mir enorm geholfen, wenn es einen Befehl geben würde, der einfach Text von einem Makro
in ein anderes Makro kopiert.
Z.B.:
Text ("Range("A16:C30")").Copy
Copy das in Makro "Kernel11" In Zeile 23 wo
Range("A16:C25") steht und überschreib das.

so was würde mir enorm helfen.

Aber DANKE DANKE DANKE an Alles was ihr mir so schon gesagt habt!!!!!

Antwort 10 von Beverly

Hi,

dazu noch folgende Frage: stehen unterhalb von C25 bzw. C30 noch andere Werte? Falls nicht, könntest du die letzte belegte Zeile in Spalte C folgendermaßen ermitteln

Dim loLetzte As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)


und loLetzte nimmst du dann so wie in meinem vorherigen Beitrag beschrieben als Variable in deinen Code mit dem Range. Diese Änderung musst du im Code natürlich machen (von Hand - es werden ja nicht 1000 Arbeitsmappen sein), aber das ist nur ein Mal erforderlich, denn dann ist der Range immer variabel in Abhängigkeit von der Anzahl der eingetragenen Daten in Spalte C, d.h. selbst wenn Daten von unten her gelöscht werden, wird dennoch der richtige Bereich verwendet.

Bis später,
Karin

Antwort 11 von Beverly

Hi,

Ergänzung: damit das eindeutig ist - mit diesem Code wird nichts im Code verändert, sondern der auszulesende Bereich wird variabel gestaltet.

Bis später,
Karin

Antwort 12 von florengray

Aber ich möchte ja gerade den Code IM Makro mit einem anderen Code aus einem externen Makro ändern.
Der Grund ist dass ein anderer Befehl diesen neuen Bereich entsperren muss.
Wenn gewisse Bedingungen erfüllt werden.
Sonst kann man ungehindert gewisse Daten manipulieren. Man brauch dazu sonst ein Passwort.
Nicht das was man sonst kennt. Ein selbst programmiertes mit WENN DANN Schleifen innerhalb der Arbeitsmappe.
Das mit dem Manipulieren habe ich im Griff, aber
nur, wenn das externe Makro den Code IM Makro ändert.

Mal ganz klar gefragt, egal ob verwirrend oder nicht,
gibt es einen Befehl, der Text oder Buchstaben im Makrocode in ein anderes Makro kopieren kann?
Wenn ja wie lautet der????

Aber nochmals DANKE, das du mir hilfst!!!!!!!!!!!!!!!!!!!!!!!!

Antwort 13 von Beverly

Hi,

es gibt andere Möglichkeiten, Code sehr variabel zu gestalten. Ich habe dir eine Möglichkeit aufgezeigt, die man ganz gewiss auch an deine Bedingungen anpassen kann.
Tut mir leid, aber ich poste keine Codes, um andere Codes damit zu ändern, weil damit auch Missbrauch getrieben werden kann.
Vielleicht hilft dir Google weiter.

Bis später,
Karin

Antwort 14 von florengray

Schon richtig.---
Naja, ich bräuchte den Code um ja gerade Mißbrauch mit meiner Mappe zu verhindern als diesen Code zum Mißbrauch zu benutzen!!!!
Aber ich bin Machtlos wenn ich sage, dass ich diesen Code nicht zum Mißbrauch gebrauche!!!
Schade. Aber ich werd mal versuchen, die Möglichkeiten die du mir gegeben hast an meine Anzupassen.
Aber dennoch DANKE DANKE DANKE !!!!!!!!!!!!!!!!!!!!!!!!!!!!
für deine Hilfe !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: