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

Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen

Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 16:42:08
moonlights
Hallo zusammen
Ich habe eine .xlsm Datei mit 3 Tabs --> Kalender, ES-Daten und Makro_Kalender
In Makro_Kalender ist eine Schaltfläche welche den VBA Code ausführt:



Option Explicit

Sub WochenendeWeg()
Dim datStart As Date, datEnd As Date
Dim lDay As Long
Dim iRow As Integer


datStart = Range("f1").Value
datEnd = Range("f2").Value
For lDay = datStart To datEnd

If Weekday(lDay, 1) 8 Then
iRow = iRow + 1
Cells(iRow, 1) = lDay

End If
Next lDay

End Sub


Nun möchte ich die Schaltfläche gerne auf Tabellenblatt Kalender verschieben und Tabellenblatt Makro_Kalender ausblenden.
Aber egal was ich versuche kriege ich entweder Laufzeitfehler oder es überschreibt mir den Inhalt des Tabellenblattes Kalender.

Wie kriege ich dieses VBA dazu, dass es seine Arbeit in Makro_Kalender ausführt?
Hat jemand von euch eine Idee was ich daran umschreiben muss?

Gruss

Mario

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Code in definiertem Tabellenblatt ausführen
04.02.2024 16:59:17
Beverly
Hi Mario,

schon mal versucht, anstelle nur Range(...) bzw. Cells(...) dieses zu setzen: Worksheets("Makro_Kalender").Range(...) bzw. Worksheets("Makro_Kalender").Cells(...)

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 17:13:40
onur
"Wie kriege ich dieses VBA dazu, dass es seine Arbeit in Makro_Kalender ausführt? " In dem du es richtig programmierst.
Wenn du keinen Blattnamen vor "Cells" oder "Range" angibst, wird immer das Blatt genommen, in dessen Modul der Code steht.
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 17:41:54
moonlights
Hallo onur und Karin

Super, jetzt funktioniert der Code. Besten Dank!
Kann ich eventuell noch etwas für die Verarbeitungsgeschwindikeit optimieren oder durch was wird das VBA durch die Änderung nun wesentlich langsamer?
Wichtig ist mir mal das der Code die Arbeit macht.


Option Explicit


Sub WochenendeWeg()
Dim datStart As Date, datEnd As Date
Dim lDay As Long
Dim iRow As Integer


datStart = Worksheets("Makro_Kalender").Range("f1").Value
datEnd = Worksheets("Makro_Kalender").Range("f2").Value
For lDay = datStart To datEnd

If Weekday(lDay, 1) 8 Then
iRow = iRow + 1
Worksheets("Makro_Kalender").Cells(iRow, 1) = lDay

End If
Next lDay

End Sub


Gruss

Mario
Anzeige
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 17:53:06
onur
Ich verstehe deinen Code nicht (du offensichtlich noch weniger):
If Weekday(lDay, 1)  8 Then

???
Weekday ist IMMER kleiner als 8 und der Parameter firstdayofweek (1) ist standardmäßig immer 1..
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 18:22:47
moonlights
Hallo onur
'Ich bin blutiger Anfänger.
Es ist schon eine Weile her und ich weiss nicht mehr woher ich den Code her hatte.
Kann gut sein, dass dies einfach eine Code-Zeilen-Leiche ist, welcher ich nicht raus gelöscht hatte. (Sah wohl hübsch aus :o)

Ich habe die Zeile
If Weekday(lDay, 1)  8 Then

mal auskommentiert und es läuft noch immer.
Merci für den Tip

Wesentlich schneller ist es noch nicht geworden. Liegt vielleicht auch einfach an meiner lahmen Kiste.

Gruss

Mario
Anzeige
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 18:33:29
onur
WAS GENAU soll denn der Code machen und was steht in F1 umd F2 ?
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 18:58:41
moonlights
F1 ist Start-Datum 1.1.2024
und
F2 ist das End-Datum 31.12.2024
(Immer 1 Jahr)

in spalte A soll der Code von A1 abwärts in jede Zelle das 1 Datum einfügen.
1.1.2024
2.1.2024
...

Das hier brauche ich im Sheet "Kalender" für die Berechnungen
A1, A2, A3 usw.
In Spalte B steht "=TEXT(A1;"MMM")" in 366 Zellen
In Spalte C steht "=TEXT(A1;"TTT")" in 366 Zellen
in Spalte D steht "=TEXT(A1;"TT")" in 366 Zellen

Gruss

Mario
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 19:06:33
onur
Dafür brauchst du doch kein Code.
A1 bis D1 1.1.2024
A1 bis D366 markieren und Datenreihe draus machen.
Rest geht mit einfacher Formatierung.
Und DAS kommt dabei heraus:
https://www.herber.de/bbs/user/166776.xlsx
Anzeige
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
05.02.2024 10:46:02
moonlights
Guten Morgen onur
Damit hatte ich es zuvor auch schon probiert. Dann klappte es vorne auf dem Kalenderblatt wieder nicht.
Das mit dem VBA Code passt für mich - 2 Zahlen ändern, Button drücken und Jahreskalender so wie ich ihn dargestellt haben will ist fertig.

Auf Kalender
Monate Blockweise angeordnet (3 in Höhe, 4 in Breite) damit's auf A4 passt. Das ganze dynamisch.

KW Mo Di Mi Do Fr Sa So
5 ......................... 01 02 03 04
6 .....05 06 07 08 09 10 11
7 .....12 13 14 15 16 17 18
8 .....19 20 21 22 23 24 25
9 .....26 27 28 29


Ein Terminblatt wo in 4 formatierten Tabellen in welchen 4 Kategorien Termine drin stehen. diese werden auf Kalender farblich dargestellt.

Wenn ich das so gut drauf hätte wie ein Andreas Thehos, wäre das in 1h fertig. Ich habe etwas länger gebraucht, räusper...
Aber das Projekt macht jetzt was es soll.

Dank dir/euch hier in Herber und Crazy Tom/RPP63 vom MSO habe ich in VBA auch etwas dazulernen können.

Kleine Anmerkung noch zu: Gut& Excel Kenntnisse. "Gut" ist ein Relativ-Begriff. Im Umfeld der Entwickler bin ich ein Schlusslicht, Im Umfeld der Büroanwender im hinteren Bereich. Im Umfeld der Handwerker schätze ich meine Kenntnisse als gut ein.
Aber ich bin mir nicht zu schade zu fragen, hinterfragen und etwas neues dazu zu lernen.

Nochmal ein Danke an dich

Gruss

Mario




Anzeige
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
05.02.2024 11:03:30
onur
Schön und gut, aber wenn du doch SO ein Kalender haben willst:

KW Mo Di Mi Do Fr Sa So
5 ......................... 01 02 03 04
6 .....05 06 07 08 09 10 11
7 .....12 13 14 15 16 17 18
8 .....19 20 21 22 23 24 25
9 .....26 27 28 29

Wieso hast du denn SO einen Code? DEIN Code listet einfach alles untereinander auf. Du schreibst doch auch: "in spalte A soll der Code von A1 abwärts in jede Zelle das 1 Datum einfügen.
1.1.2024
2.1.2024
... "
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
05.02.2024 11:45:55
moonlights
Hallo onur
Habe es nicht besser hin bekommen. Anbei mal die Datei damit du siehst wie das aussieht.
Hat bestimmt einiges was man besser machen könnte aber für das, dass ich hierfür nie eine Schule gemacht habe kann man's glaube ich anschauen.

https://www.herber.de/bbs/user/166795.xlsm

Gruss

Mario
Anzeige
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
05.02.2024 11:48:57
moonlights
Oh, noch vergessen Seitenschutz, Passwort ist leer. habe ich nur drin um versehentliches Überschreiben zu vermeiden.
Habe ich vorhin mit Hoch laden vergessen raus zu nehmen.
Datenreihe ...
04.02.2024 19:21:23
RPP63
Den VBA-Code für die Datenreihe habe ich gepostet.
Da wusste ich aber noch nicht (auch drüben nicht) dass es sich immer um ein komplettes Jahr handelt!
Jetzt mal etwas kompliziertes:
• wähle das Kalenderblatt
• gebe ins Namenfeld oben links A2:A366 ein und drücke Enter
• tippe =DATUM(2025;1;Zeile(X1)) und drücke Strg+Enter
schon fertig, weil der 365.1.2025 der 31.12.2025 ist
In Schaltjahren ziehst Du die Formel eins weiter nach unten.
Anzeige
AW: Datenreihe ...
04.02.2024 19:25:27
onur
Geht es nur mir so oder dir auch ?
Es ist mir fast peinlich, dass ich Jemandem mit "Excel gut" solche Basics erklären muss.
AW: Datenreihe ...
04.02.2024 19:35:43
RPP63
Hier im Forum stört es mich eher weniger, weil Selbsteinschätzungen immer ein Geschmäckle haben.
Kompliziert wird es im real life ja nur, wenn man dem potentiellen Arbeitgeber eine falsche Auskunft erteilt.
Das rächt sich dann während der Probezeit; ärgerlich für Beide!
AW: Datenreihe ...
04.02.2024 19:39:29
onur
Manchmal habe ich aber den Eindruck, dass genau das fast schon Usus geworden ist und die Leute dann letztendlich immer wieder hier landen.
Und der Chef kriegt das nur mit, wenn er in Excel bewanderter ist als sein Mitarbeiter.
Anzeige
AW: Datenreihe ...
04.02.2024 19:42:49
onur
"Und der Chef kriegt das nur mit, wenn er in Excel bewanderter ist als sein Mitarbeiter. " - Was meiner Erfahrung selten der Fall ist, ausser der Vorgesetzte hat BWL studiert.
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 18:52:19
RPP63
Warum ziehst Du weiter und reagierst nicht auf sinnvolle Vorschläge???
Im MOF gab ich folgenden pfeilschnellen Vorschlag:
Sub Data_Series()

With Worksheets("Makro_Kalender").Range("A2")
.Value = Range("F1")
.DataSeries xlColumns, xlChronological, xlDay, , CLng(Range("F2"))
End With
End Sub

Perlen vor die Säue?
AW: Steuerelement auf anderes Sheet verschieben/VBA in ausgeblen
04.02.2024 20:03:54
moonlights
RPP63 Erst mal Entschuldigung, dass ich im MOF deine Antwort nicht gesehen habe.

Habe das mit den Array ausprobiert. Würde auch gehen.
Das man über das Namensfeld auch markieren kann wusste ich nicht.

Das VBA hat mir der geduldige onur so weit zurecht gebogen dass es funktioniert.

Gruss

Mario


Anzeige
AW: Code in definiertem Tabellenblatt ausführen
04.02.2024 17:11:03
moonlights
Hallo Karin
mit diesen Parametern...
Worksheets("Makro_Kalender")
...habe ich auch schon herum experimentiert nur als Fahrschühler in der ersten Stunde weiss ich nicht wie das aussehen muss.

Bei mir sah es dann so ähnlich aus:

Option Explicit


Sub WochenendeWeg()
Dim datStart As Date, datEnd As Date
Dim lDay As Long
Dim iRow As Integer


Worksheets("Makro_Kalender").datStart = Range("f1").Value
Worksheets("Makro_Kalender").datEnd = Range("f2").Value
For lDay = datStart To datEnd

If Weekday(lDay, 1) 8 Then
Worksheets("Makro_Kalender").iRow = iRow + 1
Worksheets("Makro_Kalender").Cells(iRow, 1) = lDay

End If
Next lDay

End Sub


Sah für mich super aus, liess sich auch Kompielieren.
Voller Freude über mein Kunstwerk, sagte mir der Schaltfläche, das ich versagt habe.

Gruss

Mario
Anzeige
AW: Code in definiertem Tabellenblatt ausführen
04.02.2024 17:14:55
onur
Vor jedes "Cells" oder "Range" und nicht woanders !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige