MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 07.10.2018, 19:53   #1
AliceD
MOF User
MOF User
Standard VBA - VBA - Merge andere Zellen

Hallo, ich mach das jetzt hier nochmal einzeln, da es eigentlich auch ein neues Thema ist...

also ich möchte in meiner Tabelle1 die Zellen U 3-33 immer dann automatisch verbinden (.merge) wenn in meiner Tabelle 2 in J 3-33 der Wert "1" steht.
Wenn der Wert "0" kommt, wird der Vorgang unterbrochen.

Es geht um Wochentage, Mo. - Fr. soll jeweils verbunden werden, der Rest eben nicht.
Ich habe dort jetzt eine Dropbox drin A,B,C dies soll jedoch am liebsten nicht 5 mal dastehen, sondern
eben nur einmal in einer großen Zelle, die Automnation, kann ich dann weglassen...
und die dropbbox sollte an Wochenenden, am besten gar nicht erst erscheinen.

Die Wochentage hab ich in einer Hilfsspalte schon zu 1ern und 0en gemacht. (Tabelle2!J3;33)

In Tabelle 1 und 2 sind sie Zeilen 3-33 identisch.

Beim klick auf den nächsten oder vorherigen Monat, sollte Spalte U wieder unmergt werden.
Angehängte Dateien
Dateityp: xlsm Vorlage Dienstplan - Kopie.xlsm (47,7 KB, 7x aufgerufen)

Geändert von AliceD (07.10.2018 um 20:15 Uhr).
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 08:04   #2
Klaus-Dieter
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

verbundene Zellen sind Murks, verzichte darauf.

__________________


Viele Grüße Klaus-Dieter

Klaus-Dieter's Excel und VBA Seite
Klaus-Dieter ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 20:31   #3
gklumpp
MOF User
MOF User
Standard

Hi Alice,

kopiere den Code in Tabelle2 und probiere ob es das ist was Du gedacht hast.
Ich neige auch zu Klaus-Dieters Meinung, aber wenn Du hier in diesem Fall mit verbundenen Zellen eine Vorteil siehst...dann sei dem so

Code:

Option Explicit

Sub MergeKalender()
Dim Z As Integer
Dim Start As Integer

    Start = 0

    For Z = 2 To 34
        If Cells(Z, 10) = 1 And Start = 0 Then
            Start = Z
        End If
        If Start > 0 And Cells(Z, 10) <> 1 Then
            With Tabelle1.Range(Tabelle1.Cells(Start, 21), _
                Tabelle1.Cells(Z - 1, 21))
                
                Application.DisplayAlerts = False
                .MergeCells = True
                Application.DisplayAlerts = True
            End With
            Start = 0
        End If
    Next Z

End Sub

__________________

Gruß Gerhard

WIN 10, Office 2010
gklumpp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 21:10   #4
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

macht bei mir leider gar nix

muss ich da noch was starten?

Geändert von AliceD (08.10.2018 um 21:19 Uhr).
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 21:24   #5
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

Moment er macht was, wenn ich das Makro einzeln starte...
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 21:29   #6
gklumpp
MOF User
MOF User
Standard

Hi Alice,

ich hab den Button "Merge" eingefügt, probiers mal aus.
Angehängte Dateien
Dateityp: xlsm VBA - Merge andere Zellen.xlsm (51,7 KB, 3x aufgerufen)

__________________

Gruß Gerhard

WIN 10, Office 2010
gklumpp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 21:30   #7
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

ok, DAAANKE dir erstmal, wenn ich das Makro per Hand starte funzt es erstmal. Suuuuper Cool.

so wie bekomm ich ich das jetzt hin, dass er zB das makro startet wenn ich den Kalender umbletter, bzw. wenn man es 2 mal macht, funktiert das mergen nicht mehr, es geht nur einmal... kann man da eine Routine einbauen, dass er Spalte U erst unmergt, dann dein skipt ausführt und beim nächsten klickt wieder erst unmergt um dann dein Skriupt auszuführen?

sorry aber es ist so cool, dass das funktioniert ^^
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 21:31   #8
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

hmmm... hab versucht das Makro via shortcut Ctrl+m zu kombinieren und
dies mit den Spin für den Monatswechsel zuverbinden, funzt nur nicht, einer
ne Ahnung warum?

Private Sub SpinButton1_SpinDown()
With Range("L1")
.Value = DateSerial(Year(.Value), Month(.Value) - 1, Day(.Value))
Application.SendKeys ("^m")
End With
End Sub

Private Sub SpinButton1_SpinUp()
With Range("L1")
.Value = DateSerial(Year(.Value), Month(.Value) + 1, Day(.Value))
Application.SendKeys ("^m")
End With
End Sub

Geändert von AliceD (08.10.2018 um 22:09 Uhr).
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 22:09   #9
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

auch mit: ("{^}m") geht es nicht...

er schreibt es dann einfach in die Zelle wo die Mouse war.


ok wenn ich einfach
Application.SendKeys "^m"
mache dann geht es, aber er macht einen Fehler beim mergen...

wenn ich es manuel ausführe oder mit der Tastenkombi geht es ohne Fehler
Angehängte Dateien
Dateityp: xlsm Vorlage Dienstplan - Kopie.xlsm (48,7 KB, 0x aufgerufen)

Geändert von AliceD (08.10.2018 um 22:20 Uhr).
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.10.2018, 22:45   #10
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

also ich hab versucht deinen Code einfach als UnMergeCells umzuwandeln, leider macht er da einfach nix, weil ich wahrscheinlich nicht verstehe wie du das gerechnet hast, also zB Z und 2-34 ist ja eigentlich 3-33 oh man...
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 17:08   #11
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

Also, fragt mich nicht wie, aber mit Makro Aufzeichnen habe
ich es jetzt so langsam geschafft...

wenn ich die Markos einzeln ausführe klappt es schon ganz gut, außer das meine bedingte Formatierung, die Wochenendtage farblich zu hinterlegen teilweise bis ganz verschwindet...

wenn ich dann noch versuche die Makros via Spin zu starten durch:
Application.SendKeys "^n"
Application.SendKeys "^m"

dann macht das merge Makro ("^m") leider Fehler... weiß nicht wo da die Kruks liegt...
Angehängte Dateien
Dateityp: xlsm Vorlage Dienstplan-neu.xlsm (50,6 KB, 2x aufgerufen)
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 18:18   #12
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

also was ich festgestellt habe, ist, das nach dem benutzen des Merge Makros er in meinen bedingten Formatierungen aus dem Bereich
=$A$3:$V$33
plötzlich
=$A$3:$V$5;$A$10:$V$12;$A$6:$T$9;$V$6:$V$9;$A$17:$V$19;$A$13:$T$16;$V$13:$V$16;$ A$24:$V$26;$A$20:$T$23;$V$20:$V$23;$A$31:$V$33;$A$27:$T$30;$V$27:$V$30
macht
... warum auch immer, kann ich meine bedingte Formatierung nicht auch als Makro schreiben?
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 18:55   #13
AliceD
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von gklumpp Beitrag anzeigen

Hi Alice,

kopiere den Code in Tabelle2 und probiere ob es das ist was Du gedacht hast.
Ich neige auch zu Klaus-Dieters Meinung, aber wenn Du hier in diesem Fall mit verbundenen Zellen eine Vorteil siehst...dann sei dem so

Code:

Option Explicit

Sub MergeKalender()
Dim Z As Integer
Dim Start As Integer

    Start = 0

    For Z = 2 To 34
        If Cells(Z, 10) = 1 And Start = 0 Then
            Start = Z
        End If
        If Start > 0 And Cells(Z, 10) <> 1 Then
            With Tabelle1.Range(Tabelle1.Cells(Start, 21), _
                Tabelle1.Cells(Z - 1, 21))
                
                Application.DisplayAlerts = False
                .MergeCells = True
                Application.DisplayAlerts = True
            End With
            Start = 0
        End If
    Next Z

End Sub

kannst du oder jemand anders hier erklären, was genau da passiert?
Ich finde da weder das es in Tabelle 1! passiert noch das es in Spalte "U" passiert...
oder woher er die Daten aus Tabelle2! Spalte "J" nimmt...nix...
ich steig da einfach nicht durch.
AliceD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 19:07   #14
RPP63neu
MOF Meister
MOF Meister
Standard

Zitat: von AliceD Beitrag anzeigen

also was ich festgestellt habe, ist, das nach dem benutzen des Merge Makros er in meinen bedingten Formatierungen aus dem Bereich
=$A$3:$V$33
plötzlich
[…]
macht
... warum auch immer, kann ich meine bedingte Formatierung nicht auch als Makro schreiben?

Moin!
Merkst Du jetzt ENDLICH, dass Du Dich verrennst?
Falls nicht, dann verbringe noch ein paar Monate mit der Optimierung des Codes.

Disclaimer:
Ich habe nichts dagegen, wenn man der Optik halber merged, ich weiß (mittlerweile), wie man dolle Sachen im Zellverbund verstecken kann, nur …
… lasse es einfach sein und überlege Dir, dass man einen Verbund (aus optischen und vor allem sonstigen Gründen) viel besser mittels bedingter Formatierung und eindeutiger Farbgebung realisieren kann.
Und ja! Damit kann man auch nur einen Text in einer Reihe gleicher Texte darstellen lassen.

Gruß Ralf

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2018, 07:47   #15
erpe
MOF Profi
MOF Profi
Standard

Hallo,
schreibst du hier Tagebuch?
7 Einträge von dir hintereinander.

Verbundene Zellen kann (kann) man aus optischen Gründen akzeptieren, meisten sind sie jedoch schädlich!

Eine andere Möglichkeit wäre:
Lege per Code rechteckige Formen zur Laufzeit an.
Diese verdecken dann die Zellen.
Sie können per VBA positioniert werden.
Texte können eingefügt werden und vieles mehr.
Wenn sie nicht mehr gebraucht werden, lassen sie sich löschen.

Ist zwar etwas Programmieraufwand!
Hajo schrieb hier:https://www.ms-office-forum.net/foru...d.php?t=354879 #7

Zitat:

Du hast viel Ahnung von VBA.

Dann wirst du das schon schaffen.

Gruß
Rainer
erpe ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.