Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
288to292
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
288to292
288to292
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro über mehere Mappen

Makro über mehere Mappen
31.07.2003 19:41:16
Markus
Hallo und guten Abend,
ich habe mir mit Eurer Hilfe (bin nicht so ein grosses VBA Genie) folgendes Makro zusammengestellt:
~begin~

Sub EinAusblenden_partner_sp()
Dim apartner As Byte
Dim epartner As Byte
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Workbooks("Mappe1.xls").Worksheets("Allgemein")
Set WS2 = Workbooks("Mappe2.xls").Worksheets("Fzg-Übersicht")
'angeschlossene Partner zeigen / verbergen
For apartner = 24 To 68
If WS1.Cells(apartner, 27) = 1 Then
WS2.Columns(((apartner - 23) * 3) + 34).EntireColumn.Hidden = False
WS2.Columns(((apartner - 23) * 3) + 35).EntireColumn.Hidden = False
WS2.Columns(((apartner - 23) * 3) + 36).EntireColumn.Hidden = False
Else
WS2.Columns(((apartner - 23) * 3) + 34).EntireColumn.Hidden = True
WS2.Columns(((apartner - 23) * 3) + 35).EntireColumn.Hidden = True
WS2.Columns(((apartner - 23) * 3) + 36).EntireColumn.Hidden = True
End If
Next apartner
'eigene Partner zeigen / verbergen
For epartner = 24 To 33
If WS1.Cells(epartner, 28) = 1 Then
WS2.Columns(((epartner - 23) * 3) + 169).EntireColumn.Hidden = False
WS2.Columns(((epartner - 23) * 3) + 170).EntireColumn.Hidden = False
WS2.Columns(((epartner - 23) * 3) + 171).EntireColumn.Hidden = False
Else
WS2.Columns(((epartner - 23) * 3) + 169).EntireColumn.Hidden = True
WS2.Columns(((epartner - 23) * 3) + 170).EntireColumn.Hidden = True
WS2.Columns(((epartner - 23) * 3) + 171).EntireColumn.Hidden = True
End If
Next epartner
End Sub

~end~
Dieses funktioniert auch super, ich habe bloß ein Problem noch.
Ich möchte dass dieses Makro in der Mappe
Mappe2
Mappe3
Mappe4
Mappe5
Mappe6
läuft, ich müsste also irgendwie in der Laufzeit die Variable verändern, wie kann ich dies erreichen oder kann ich dies auch anders machen.
Es kann vielleicht auch so sein dass in jeder offenen Mappe, sofern dort dass Blatt "Fzg-Übersicht" vorhanden ist, dieses Makro läuft, aber wie mache ich dass dann mit den variablen.
Vielleicht habt Ihr eine Idee?!
Danke schonmal
Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro über mehere Mappen
31.07.2003 20:04:55
Mike E.
Hallo Markus,
bastel dir eine weitere For/Next-Schleife um deinen Code.
Das mit der Variable für das Aktivieren der Workbooks bekommst du so hin:

Sub Mappe()
Dim WS As Worksheet
Dim i As Integer
For i = 1 To 6
Set WS2 = Workbooks("Mappe" & i & ".xls").Worksheets("Allgemein")
DeinCode
Next i
End Sub

Gruß
Mike

Fehler --> bitte nochmal Hilfe
31.07.2003 20:47:47
Markus
Mein Code sieht jetzt so:
~begin~

Sub EinAusblenden_partner_sp()
Dim apartner As Byte
Dim epartner As Byte
Dim WS As Worksheet
Dim WS1 As Worksheet, WS2 As Worksheet
Dim i As Integer
For i = 1 To 10
On Error GoTo weiter
Set WS1 = Workbooks("mpwe1.xls").Worksheets("Allgemein")
Set WS2 = Workbooks("BT" & i & ".xls").Worksheets("Fzg-Übersicht")
'angeschlossene Partner zeigen / verbergen
For apartner = 24 To 68
If WS1.Cells(apartner, 27) = 1 Then
WS2.Columns(((apartner - 23) * 3) + 34).EntireColumn.Hidden = False
WS2.Columns(((apartner - 23) * 3) + 35).EntireColumn.Hidden = False
WS2.Columns(((apartner - 23) * 3) + 36).EntireColumn.Hidden = False
Else
WS2.Columns(((apartner - 23) * 3) + 34).EntireColumn.Hidden = True
WS2.Columns(((apartner - 23) * 3) + 35).EntireColumn.Hidden = True
WS2.Columns(((apartner - 23) * 3) + 36).EntireColumn.Hidden = True
End If
Next apartner
'eigene Partner zeigen / verbergen
For epartner = 24 To 33
If WS1.Cells(epartner, 28) = 1 Then
WS2.Columns(((epartner - 23) * 3) + 169).EntireColumn.Hidden = False
WS2.Columns(((epartner - 23) * 3) + 170).EntireColumn.Hidden = False
WS2.Columns(((epartner - 23) * 3) + 171).EntireColumn.Hidden = False
Else
WS2.Columns(((epartner - 23) * 3) + 169).EntireColumn.Hidden = True
WS2.Columns(((epartner - 23) * 3) + 170).EntireColumn.Hidden = True
WS2.Columns(((epartner - 23) * 3) + 171).EntireColumn.Hidden = True
End If
Next epartner
weiter:
Next i
End Sub

~end~
Nur leider bleibt der Code bei der Zeile:
Set WS2 = Workbooks("TB" & i & ".xls").Worksheets("Fzg-Übersicht")
hängen, hab ich was mit dem Fehlerabfangen falsch gemacht?!
denn ich habe das Problem dass nicht alle Mappen 1-10 offen sind,
das is vielleicht ein Mist wenn man das VBA nicht richtig beherrscht.
Danke nochmal
Markus

Anzeige
@Forum: : Bitte um Unterstützung
31.07.2003 21:21:25
Mike E.
Hallo Markus,
ja, das ist ein Problem, wenn die Mappen nicht geöffnet sind.
Das Öffnen an sich ist kein Problem:
For i = ....
Workbooks.Open Filename:= "C:\Test\& "TB" & i & ".xls"
Ich bin mir jetzt aber nicht ganz sicher, wie du abfragen kannst, ob eine datei bereits geöffnet ist. Ein Versuch:
Setze zu Beginn des Codes
Application.DisplayAlerts = False
Meine Vermutung (hab's nicht getestet!):
Es wird mit der korrekten datei gearbeitet, ohne dass die bekannte Fehlermeldung "Datei bereits geöffnet...." erscheint.
Aber sicher hat ein anderer Forumsteilnehmer eine bessere Idee...
Viele Grüße
Mike

Anzeige
AW: @Forum: : Bitte um Unterstützung
31.07.2003 21:57:03
Nepumuk
Hallo Markus,
sollen nur bereits geöffnete Mappen bearbeitet werden, oder soll, wenn eine davon nicht geöffnet ist, diese geöffnet werden?
Gruß
Nepumuk

es sollen nur geöffnete Mappe bearbeitet
01.08.2003 07:37:57
Markus
werden.
Da ich aber nicht weiß welche Mappe der Benutzer öffnet muss ich dies ja irgendwie abfangen.
In jeder Mappe wo das Blatt "Fzg-Übersicht" drin soll dieser Code ausgeführt werden, sonst in keiner anderen.
Danke nochmal
Markus

AW: es sollen nur geöffnete Mappe bearbeitet
01.08.2003 09:08:08
Nepumuk
Hallo Markus,
so geht's:

Option Explicit
Sub EinAusblenden_partner_sp()
Dim apartner As Byte
Dim epartner As Byte
Dim spalte As Integer
Dim WS1 As Worksheet, WS2 As Worksheet
Dim i As Integer
Set WS1 = Workbooks("mpwe1.xls").Worksheets("Allgemein")
For i = 1 To 10
On Error Resume Next
Set WS2 = Workbooks("BT" & i & ".xls").Worksheets("Fzg-Übersicht")
If Not WS2 Is Nothing Then
On Error GoTo 0
'angeschlossene Partner zeigen / verbergen
For apartner = 24 To 68
For spalte = 34 To 36
WS2.Columns(((apartner - 23) * 3) + spalte).EntireColumn.Hidden = WS1.Cells(apartner, 27) <> 1
Next spalte
Next apartner
'eigene Partner zeigen / verbergen
For epartner = 24 To 33
For spalte = 169 To 171
WS2.Columns(((epartner - 23) * 3) + spalte).EntireColumn.Hidden = WS1.Cells(epartner, 28) <> 1
Next spalte
Next epartner
End If
Set WS2 = Nothing
Next i
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk

Anzeige
Danke geht supppper
01.08.2003 17:54:38
Markus
ihr seit echt spitze.
Schönes Wochenende wünsch ich Euch.
MFG
Markus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige