Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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

Bezug Makro auf Tabelle

Bezug Makro auf Tabelle
28.01.2016 14:43:58
Makrazubi
Hallo zusammen,
Ich bräuchte noch ein bisschen Hilfe bei meinen Makros. Hab davon leider absolut keine Ahnung und find auch nichts gescheites, das mir irgendwie die Formeln erklärt...
Den Code hab ich schon:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Dim iSpalte As Byte
With Sh
Application.ScreenUpdating = False
For iSpalte = 4 To .Range("IV3").End(xlToLeft).Column
Select Case WorksheetFunction.Weekday(.Cells(3, iSpalte))
Case 1
.Columns(iSpalte).Hidden = True
Case Else
.Columns(iSpalte).Hidden = False
End Select
Next iSpalte
Application.ScreenUpdating = True
End With
End If
End Sub
Der funktioniert auch super, nur bezieht er sich immer nur auf Tabelle 1. Ich weiß auch nicht, wie man das ändern kann.
in den Tabellen sollen noch dazu in jeder Tabelle andere Spalten ausgeblendet werden... Es muss also wirklich ein Bezug zu einer bestimmten Tabelle her.
Für Tabelle 2 wäre es zum Beispiel:
 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Dim iSpalte As Byte
With Sh
Application.ScreenUpdating = False
For iSpalte = 4 To .Range("IV3").End(xlToLeft).Column
Select Case WorksheetFunction.Weekday(.Cells(3, iSpalte))
Case 1
.Columns(iSpalte).Hidden = True
Case Else
.Columns(iSpalte).Hidden = False
End Select
Next iSpalte
Application.ScreenUpdating = True
End With
End If
End Sub
Aber wie sag ich ihm, dass sich das Makro jetzt auf Tabelle 2 bezieht und das andere auf Tabelle 1? :/
Danke für die hilfe :)
Liebe Grüße

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bezug Makro auf Tabelle
28.01.2016 15:42:42
Rudi
Hallo,
Für Tabelle 2 wäre es zum Beispiel:
die Prozeduren sind doch identisch!
Die Prozeduren beziehen sich immer auf das Blatt in dem A1 geändert wurde.
Gruß
Rudi

Ergänzung
28.01.2016 16:01:48
Michael
Hi zusammen,
die
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "Blatt Nr. " & Sh.Index & " heißt " & Sh.Name & " Zelle " & Target.Address
End Sub

gibt es nur einmal unter workbook bzw. DieseArbeitsmappe.
Du kannst Deine If ja erweitern um Sh.Index = 1 usw.
Aber: versuche doch das Worksheet_Change() (oder gar das ..Activate) des jeweiligen Blatts...
Schöne Grüße,
Michael

Anzeige
AW: Ergänzung
28.01.2016 16:21:27
Makrazubi
Vllt wird's klarer, wenn ich euch die Exceltabelle zeig, die das ganze betrifft....
mir ist auch klar, dass sich das ganze auf die Tabelle bezieht, in der A1 geändert wird, nur sind die A1-Zellen aller Tabellen miteinander Verknüpft... Also ändert sich in allen Blättern A1, wenn ich es auf dem 1. Blatt ändere. das Makro kommt da nur nicht mit...
https://www.herber.de/bbs/user/103120.xlsx
Ich bin wie gesagt, komplett planlos was makros angeht. Das ich gecheckt hab, welche Zahlen ich im Code ändern muss um das zu kriegen, was ich will, war schon ein riesen fortschritt :D

Anzeige
AW: Ergänzung
28.01.2016 16:55:03
Rudi
hallo,
Also ändert sich in allen Blättern A1, wenn ich es auf dem 1. Blatt ändere
das löst aber kein Ereignis aus. Nur die Änderung in 'Abteilung A'.
Gruß
Rudi

eben, aber das heißt doch...
28.01.2016 17:40:36
Michael
..., daß Du *wenn*, dann die Änderung sowieso nur in "Abteilung A" vornimmst.
Dann brauchst Du Excel auch nicht damit sinnlos zu beschäftigen, daß es *alle* Änderungen in der kompletten Datei abhorcht.
Setze hier einen Button auf Abt. A, und das Makro macht es in der ganzen Tabelle:
Sub ausblenden()
Dim iSpalte As Byte
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In Worksheets
If UCase(Left(sh.Name, 3)) = "ABT" Then
For iSpalte = 4 To sh.Range("IV3").End(xlToLeft).Column
If WorksheetFunction.Weekday(sh.Cells(3, iSpalte)) = 1 Then
sh.Columns(iSpalte).Hidden = True
Else
sh.Columns(iSpalte).Hidden = False
End If
Next iSpalte
End If
Next
Application.ScreenUpdating = True
End Sub
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige