393 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen.
ich habe heute folgendes Anliegen.
Mittels Makroaufzeichnung habe ich ein Makro (s. anhängend) erstellt, welches Spalten ausblendet, um eine Tabelle zu verbergen.
Leider werden Buttons, die Sortierungen der Tabelle vornehmen, nicht mit ausgeblendet.
Meine Frage ist: Gibt es eine Möglichkeit innerhalb des Makros oder mittels eines eigenen Makros die Buttons auch auszublenden?
Danke im voraus und Gruß Flodnug

Sub OSR_Einsätze_Gesamt()
'
' OSR_Einsätze_Gesamt Makro
'

'
Range("L5:M44").Select
ActiveWorkbook.Worksheets("Gesamt").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Gesamt").Sort.SortFields.Add Key:=Range("M5:M44") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Gesamt").Sort.SortFields.Add Key:=Range("L5:L44") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Gesamt").Sort
.SetRange Range("L4:M44")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B5").Select
End Sub

9 Antworten

0 Punkte
Beantwortet von
Hallo Flodnung,

wenn du eine Microsoft Forms Schaltfläche verwendest funktioniert das komplette oder teilweise Ausblenden über die Spalten. Bei einem ActiveX CommandButton jedoch leider nicht. In beiden Fällen kannst du jedoch die Visible Eigenschaft des entsprechenden Buttons in deinem Makro ansprechen.

z.B. ActiveSheet.Shapes("Button 1").Visible=False oder ActiveSheet.Shapes("Commandbutton 1").Visible=False
oder Commandbutton1.Visible=False (nur im Tabellenmodul)

Den Namen des Buttons siehst du links neben der Formelleiste, wenn du den Button (z.B per Rechtsklick) markierst.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo xlKing,
vielen Dank für Deine schnelle Antwort.
Leider sind meine VBA-Kenntnisse viel zu gering, um alles richtig zu verstehen.
Punkt 1: wenn ich das richtig sehe, müßte ich nur eine Zeile der drei Varianten in mein Makro einfügen - an welche Stelle?
Punkt 2: welche Zeile ist richtig? Ich benutze nämlich kein ActiveX CommandButton sondern ein Formularsteuerelement.
Punkt 3: in der Formelleiste wird als Name "Schaltfläche 8" angezeigt. Gehe ich über Makro zuweisen wird "OSR_Einsätze_Gesamt". Welcher Name ist richtig?
Danke und Gruß Flodnug
0 Punkte
Beantwortet von
Hallo Flodnug,

Genau: eine der drei Zeilen reicht völlig aus. Allerdings musst du
dazu wissen, wie der Button heißt, den du ausblenden willst. Das
erfährst du wie gesagt oben links neben der Formelleiste sobald du
den Button mit der Maus markiert hast. In deinem Fall "Schaltfläche
8"

Entsprechend muss die Zeile lauten:
ActiveWorkbook.Worksheets("Gesamt").Shapes("Schaltfläche
8").visible=False
Allerdings dürfte der von dir beschriebene Fehler damit gar nicht
erst auftauchen. Zumindest bei meinem Test in Excel2010 hat die
automatische Verkürzung der Schaltfläche beim Ausblenden von
Spalten einwandfrei geklappt.

Optimalerweise fügst du die Zeile direkt nach der Zeile ein, mit der
du die Spalten ausblendest. Diese konnte ich in deinem Makro aber
leider nicht finden. Müsste in etwa
ActiveWorkbook.Worksheets("Gesamt").Columns("L:M").Hidden=Tru
e lauten. Soweit ich sehen kann, tust du mit deinem Makro aber nur
sortieren und keine Spalten ausblenden.

Bytheway: "OSR_Einsätze_Gesamt" ist der Name deines Makros,
während der Name deiner Schaltfläche eigentlich offiziell "Button8"
lautet. Aber auf die deutsche Übersetzung "Schaltfläche 8" (man
beachte im deutschen das Leerzeichen vor der Zahl) reagiert VBA
netterweise auch um diese anzusprechen.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo xlKing,
vielen Dank für Deine Antwort.
Besonderen Dank für Deine sehr guten Erläuterungen, die ich diesmal komplett nachvollziehen konnte. Die waren so gut, dass ich bemerkt habe, wie doof ich in VBA bin.
Du hast völlig recht, das Makro ist eines von den Sortierroutinen.
Es ist also völig das falsche. Das muß ich jetzt erstmal heute noch aufarbeiten.
Ich wollte Dir nur heute Abend noch eine Antwort geben.
Ich melde mich morgen wieder. Dann auch mit dem richtigen Makro.
Danke und Gruß Flodnug
0 Punkte
Beantwortet von
Kein Problem. Jeder fängt mal klein an. Ich bin sicher, du findest das
richtige Makro noch. Bis morgen dann. :-)
0 Punkte
Beantwortet von
Hallo xlKing,
wie versprochen melde ich mich heute nochmal mit dem richtigen Makro.

Sub OSR_Anz_aus_Gesamt()
'
' OSR_Anz_aus_Gesamt Makro
'

'
Columns("K:M").Select
Selection.EntireColumn.Hidden = True
ActiveWorkbook.Worksheets("Gesamt").Shapes("Schaltfläche 8").Visible = False
ActiveWorkbook.Worksheets("Gesamt").Shapes("Schaltfläche 9").Visible = False
Range("B5").Select
End Sub

Und wie Du siehst, hat sich die "Nachtarbeit" gelohnt.
Und ich habe sogar nach einer halben Nacht rausgefunden, wie man die Buttons wieder sichtbar macht, denn die waren auf einmal nicht wieder zu finden.
Ich habe in Deinen Zeilen einfach False mit True ausgetauscht.
Nicht einfach, wenn mann weder die Fachbegriffe, noch die Syntax kennt.
Apropos Syntax - müssen die Leerzeilen im Makro eigentlich immer sein oder kann man die auch löschen, wenn man es richtig macht?
Als ich es probiert habe, hat nämlich das eine oder andere nicht mehr richtig funktioniert. Selbst das löschen eines Apostroph hatte teilweise Konsequenzen.
Gruß Flodnug
0 Punkte
Beantwortet von
Hallo Flodnug,

sorry, dass hätt' ich natürlich dazu sagen sollen, wie du die wieder
sichtbar machst. Mein Fehler. Aber du hast das ja auch prima selbst
rausgefunden.

Und nein, die Leerzeilen müssen nicht unbedingt sein. Die kann man
auch getrost löschen. Die werden nur vom Makrorecorder hinzugefügt
um Anfängern zusätzliche Informationen wie Makroname, Hotkey und
Makrobeschreibung mitzugeben.

Zeilen die mit einem Apostroph beginnen sind Kommentare.
Sozusagen Randnotizen. Die haben auf die Ausführung des
Programms keinen Einfluss. Wenn du aber ein Apostroph löschst,
muss du auch den ganzen nachstehenden Text in der gleichen Zeile
löschen, sonst versucht VBA diesen als Befehl zu interpretieren und
auszuführen. Da persönlicher Text aber nicht unbedingt auch ein VBA-
Befehl sein muss, wird dann ein Fehler gemeldet.

Mr. K.
0 Punkte
Beantwortet von
Hallo xlKing,
vielen Dank nochmal für Deine ausführlichen Erklärungen und um mit einer Standardformulierung von ebay zu verbleiben: Jederzeit gerne wieder.
Gruß und schönen Herrentag Flodnug
0 Punkte
Beantwortet von
ebenfalls :-)
...