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

Pinwand per VBA

Pinwand per VBA
06.03.2014 14:19:26
Oliver
Danke für Eure Hilfe ...
Zum Erstellen monatlicher Dienstpläne möchte ich eine Pinwand entwerfen,
auf der Stundenblöcke verschoben werden, und so Dienstfolgen ermittelt werden.
Eine Zelle beinhaltet die Zahl der Stunden 8 für 8h und eine farbige Formatierung
für die Tageszeit, wann die Dienstzeit erfolgt, Morgens, Mittags Abends.
Meine konkrete Frage:
1. Ich klicke ein beliebiges Feld an
2. Der Zwichenspeicher ist leer, darum wird der Zellwert inkl. Formatierung ausgeschnitten
3. Ich klicke eine nächste Zelle an
4. Der Zwischenspeicher ist voll - der Wert und Formatierung werden eingefügt.
5. Klicke ich auf eine Zelle in Verbindung mit STRG bei leerem Zwischenspeicher, wird die Zelle kopiert
6. Einfügen analog wie oben
Am Ende jeder Zeile werden die Stunden summiert. Die Zellbezüge sollen für jedes Feld erhalten bleiben.
Ich erhoffe mir eine praktische Pinnwand, um die vielen Ansprüche der Kollengen
schnell und vergleichbar darzustellen. Vorab Danke.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pinwand per VBA
06.03.2014 14:34:56
Oliver
Kleine Ergänzung - nach jedem Einfügen wird der Zwischenspeicher wieder gelöscht.

AW: Pinwand per VBA
06.03.2014 16:10:53
EtoPHG
Hallo Oliver,
Ich versteh nur Bahnhof.
Was verstehst du unter "Zwischenspeicher"?
Ist ein "Feld" eine Zelle?
Wie kommen Daten (und was für welche) in den "Zwischenspeicher"?
Wie kommen Daten in die Zellen?
Was steht Vor (irgendwelchen Aktionen) - Was steht Nachher in einer Zelle?
Was verstehst du unter "Zellbezügen"?
Gruess Hansueli

ist doch gar nicht so schwierig
06.03.2014 16:51:32
KlausF
Hallo Hansueli,
der Fragesteller meint folgendes:
1. Wenn Zwischenspeicher (Zwischenablage) leer dann soll
bei Klick auf eine beliebige Zelle dieselbige ausgeschnitten werden
bei Klick auf eine andere Zelle die ausgeschnittene Zelle eingefügt werden.
Danach wird der Zwischenspeicher (Zwischenablage) wieder geleert (gelöscht)
2. Wird zusätzlich die STRG-Taste gehalten soll nicht ausgeschnitten sondern kopiert werden.
3. Bestehende Formeln sollen dabei in ihren ursprünglichen Zellbezügen erhalten bleiben
Oliver, es wäre das beste, wenn Du eine Beispielmappe hier reinstellst.
Der Kopierbereich ist doch bestimmt eingeschränkt. Und wichtig ist auch wo welche Formeln stehen.
Vielleicht kann Dir dann jemand helfen.
Gruß
Klaus

Anzeige
AW: ist doch gar nicht so schwierig
06.03.2014 17:47:46
Oliver
Klaus hat mein Anliegen erfasst.
Hier die Mappe: https://www.herber.de/bbs/user/89564.xlsx
Am unteren Rand der Tabelle sind die möglichen Zellen aufgelistet,
wo man sich nach belieben eine nimmt und oben einfügt.
Aber es soll auch schnell hin und her geschoben werden können,
da die Erstellung der Dienstzeiten mit viel Dynamik abläuft.
Falls es noch Fragen hat - sehr gern.
O.

Es bleibt ungelöst
06.03.2014 23:05:31
Oliver
O.K. - die Aufgabe ist jetzt klar,
aber wie sieht ein Code dafür aus?
O.

AW: Es bleibt ungelöst
07.03.2014 11:42:26
Klaus
Hallo Oliver,
folgendes Makro, direkt in das Blatt kopiert, erledigt Punkt 1-4. Allerdings musst du schon doppelclicken, irgendwoher muss Excel ja wissen dass du ein Makro ausführen willst :-)
Die Formatierungen würd ich an deiner Stelle mit "bedingte Formatierung" lösen, statt mit Zellformatierung. Ob das unter xl2007 schon mit mehr als 3 Varianten geht weiss ich nicht, unter xl2010+ auf jedem Fall.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
'der Zwischenspeicher
Dim Zwischenspeicher As Range
Set Zwischenspeicher = Range("D34")
'hier darf EINGETRAGEN werden
'TIP: Zellen markieren, dabei Makrorekorder laufen lassen, um die lange RANGE-Anweisung zu  _
bekommen
Dim rLaubt As Range
Set rLaubt = Union(Range("D23:J23,D9:J9,L9:R9,T9:Z9,AB9:AH9,AB11:AH11,T11:Z11,L11:R11,D11:J11, _
D13:J13,M13:R13,L13,T13:Z13,AB13:AH13,AB15:AH15,T15:Z15,L15:R15,D15:J15,D17:J17,L17:R17,T17:Z17,AB17:AH17,AB19:AH19,T19:Z19,L19:R19,D19:J19,D21:J21,L21:R21,T21:Z21,AB21:AH21,AB23:AH23"), Range("L23:R23"))
'hier darf ausgewählt werden
Dim rAuswahl As Range
Set rAuswahl = Range("D27,D29,D31,L27,L29,L31,T27,T29,T31,AB27,AB29,AB31")
Cancel = True
'Falls Auswahl, in Zwischenspeicher übertragen
If Not Intersect(Target, rAuswahl) Is Nothing Then
Target.Copy
Zwischenspeicher.PasteSpecial
Application.CutCopyMode = False
End If
'Falls Eintrag, aus Zwischenspeicher eintragen
If Not Intersect(Target, rLaubt) Is Nothing Then
If Not Zwischenspeicher.Value = "" Then
Zwischenspeicher.Copy
Target.PasteSpecial
Application.CutCopyMode = False
'Zwischenspeicher löschen
With Zwischenspeicher
.ClearContents
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
End If
End If
Application.ScreenUpdating = True
End Sub
Grüße,
Klaus M.vdT.

Anzeige
Ja, Klaus, geht ab Xl12! Schon vergessen? ;-) orT
07.03.2014 13:08:39
Luc:-?
Gruß Luc :-?

ich kann mir das nie merken :-) owT
07.03.2014 13:10:50
Klaus
.

AW: Es bleibt ungelöst
07.03.2014 18:42:53
Oliver
Hallo Klaus,
vielen Dank für die Arbeit.
Es braucht noch etwas Aufklärung
für mich, um es funktionstüchtig zu
machen.
Ich habe das Makro in die Tabelle direkt kopiert.
Dann einen Zeilenumbruch gelöscht (die Zeile war rot).
In der Arbeitstabelle kann ich doppel-klicken und
dann gibt es bis jetzt keine weitere Aktion.
Meine Zwischenablage fügt über "Einfügen" einen
"alten" Inhalt aus, bzw. bleibt leer.
Soweit.
Nach der Mühe sollten wir das Ganze auf meinem
Computer noch zum Laufen bringen.
Was könnte ich tun/ändern?
Liebe Grüße
O.

Anzeige
Vielleicht eine Alternativlösung,
07.03.2014 19:52:53
EtoPHG
Hallo Oli,
Hier mein Vorschlag: Dienstplanspiele
Auswahl der Dienstart mit Klick. Die Auswahl wird mit rotem Rahmen markiert.
Auswahl einer Zelle oder eines Zellbereichs innerhalb einer Woche und Rechtsklick überträgt den Dienst.
Dienste löschen einfach mit der Delete-Taste.
Verschieben von Diensten mit selektieren einer Zelle/Bereichs und mit dem Kreuzcursor (auf dem Rahmen der Selektion) einfach an einen erlaubten/geeigneten Ort verschieben.
Bemerkung: Wegen Verknüpfungsproblemen musste ich dein Formeln in Spalte A(Namen) und B(Stunde) löschen. Die musst du selbst wiederherstellen. (Blattschutz ausschalten).
Gruess Hansueli

Anzeige
Eine gute Alternativlösung
07.03.2014 21:14:37
Oliver
Schade, im Netz kann man Sie nicht schnell mal auf einen Café einladen ...
Lieber Klaus und lieber Hansueli, Danke.
Der Vorschlag von Hansueli ist sehr praktikabel
und trifft meinen Wunsch punktgenau und es tut!
Begeisterte Grüße
Oliver

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige