Anzeige
Archiv - Navigation
1012to1016
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit VBA ein anderes Makro ändern

Mit VBA ein anderes Makro ändern
12.10.2008 14:24:49
Markus
Hallo zusammen,
besteht die Möglichkeit, dass man mittels Makros ein anderes Makro bzw. den Code für Worksheet_Activate ändern kann?
Problem 1

Sub Worksheet_Activate()
'ScrollArea = "C3: Bf32"
ScrollArea = ""
End Sub


Es soll danach wie folgt aussehen (Änderung in Zeile 1 und 2 des Makro):


Sub Worksheet_Activate()
ScrollArea = "C3: Bf32"
'ScrollArea = ""
End Sub


Problem2


Sub Makro1()
Columns("A:BE").Select
Range("A2").Activate
Selection.EntireColumn.Hidden = True
Range("BF3").Select
End Sub


Dieses Makro soll dahingehend geändert werden, dass in der ersten Spalte der Wertebereich in A:F geändert wird.
Kann mir da jemand helfen? Vielen Dank im Voraus!
Viele Grüße
Markus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA ein anderes Makro ändern
12.10.2008 15:56:22
Hajo_Zi
Hallo Markus,
hast Du Dir bei Deinem Level nicht ein wenig viel vorgenommen. Ja es it bestimmt möglich, aber es müssen auch Veränderuingen an den Optionen vorgenommen werden, was man nicht per VBA realisieren kann.

AW: Mit VBA ein anderes Makro ändern
12.10.2008 16:32:00
Tino
Hallo,
ich stimme Hajo allem zu.
Hier mal eine Möglichkeit (Beispiel), einen VBA- Code mit einem String zu erstellen.
Vielleicht kommst Du ja damit zurecht.
Zu beachten, dem zugriff auf VBA- Projekte muss vertraut werden.

Option Explicit
Sub versuch()
Dim meCode As String
With ActiveWorkbook.VBProject.VBComponents("Tabelle2").CodeModule
'sollten noch mehr Makros drin sein Zeile anpassen
'hier werden alle gelöscht
.DeleteLines 1, .CountOfLines
'neuer code String
meCode = _
"Sub Worksheet_Activate()" & Chr(10) & _
" 'ScrollArea = ""C3: Bf32""" & Chr(10) & _
" ScrollArea = """"" & Chr(10) & _
"End Sub"
.AddFromString meCode
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Mit VBA ein anderes Makro ändern
12.10.2008 19:35:00
Markus
Hallo zusammen,
konnte ja nicht ahnen, dass das für die Experten nicht einfach lösbar ist. Ich werde es dann auch mal lassen.
Danke trotzdem.
Schönen Abend
AW: Makros anders schreiben, nicht ändern
12.10.2008 20:22:16
Erich
Hallo Markus,
wenn es nur darum geht, per Makro einen anderen Bereich für die ScrollArea usw. geändert vorzugeben,
brauchst du nicht immer die Activate-Prozedur bzw. dein Makro1 zu ändern.
Du schreibst den Bereich nicht fest, sondern z. B. als Stringvariable in die Makros, etwa so: _ p>

Sub Worksheet_Activate()
ScrollArea = strScrAr
End Sub
Sub Makro1()
Range("BF3").Select
Columns(strColHid).Hidden = True ' dafür ist weder Activate noch Select nötig
End Sub

Dann musst du nur dafür sorgen, dass die beiden Stringvariablen vor dem Aufruf der Makros richtig gefüllt sind.
Vielleicht kannst du die Strings in einem Tabellenblatt ablegen und bei Bedarf dort lesen.
Oder du schreibst sie in die DokumentProperties, oder ...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Makros anders schreiben, nicht ändern
13.10.2008 21:00:00
Markus
Hallo Erich,
vielen Dank für Deinen Lösungsvorschlag. Stehe aber derzeit auf dem Schlauch. Wie müsste ich denn das genau anpacken, wenn ich den Scrollarea-Bereich beim aktivieren der Tabelle 1 wie dargestellt abändern will:
'ScrollArea = "C3: Bf32"
ScrollArea = ""
nach
ScrollArea = ""
'ScrollArea = "C3: Bf32"
Sorry für die dumme Nachfrage.
Viele Grüße
Markus
AW: Makros anders geschrieben
14.10.2008 01:09:00
Erich
Hi Markus,
hier poste ich dir mal ein Beispiel dafür, dass die beiden Makros sich bei der Ausführung
Infos aus einem Tabellenblatt holen:

'----------------------- im Code der Tabelle1
Sub Worksheet_Activate()
ScrollArea = Cells(2, 7)
End Sub
'----------------------- in einem allg. Modul:
Option Explicit
Sub Makro1()
Range("BF3").Select
Columns(Sheets("Tabelle1").Cells(4, 7).Value).Hidden = True
End Sub
'Sub alt_Makro1()
'   Columns("A:BE").Select ' A:F
'   Range("A2").Activate
'   Selection.EntireColumn.Hidden = True
'   Range("BF3").Select
'End Sub

Jetzt fehlt natürlich noch das Makro, das die beiden Zellen G2 und G4 auf Tabelle1 mit Werten versorgt,
das also indirekt bestimmt, was Worksheet_Activate bzw. Makro1 tun - ohne VBA-Änderung.
Hier im Beispiel habe ich Scrollarea bzw. die Ausblend-Spalten mal abhängig vom Tag oder Wochentag gemacht.
Dieses "Obermakro" kommt auch in das allg. Modul:


Sub Ober_Makro()
With Sheets("Tabelle1")
If Weekday(Date, vbMonday) > 3 Then  ' ScrollArea festlegen
.Cells(2, 7) = "C3: Bf32"
Else
.Cells(2, 7) = ""
End If
If Day(Date) > 15 Then               ' Spalten zum Ausblenden festlegen
.Cells(4, 7) = "A:BE"
Else
.Cells(4, 7) = "A:F"
End If
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige