Clever-Excel-Forum

Normale Version: Namen zuordnen mit Einschränkungen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6
Soooo cool!! Herzlichen Dank  :67: 

Habe noch ein paar Kleinigkeiten gefunden:
  • Wenn ich von zB von 12 Kollegen auf 7 reduzuiere wird ab O12 abwärts nicht sauber gelöscht. Denke dass P3 bis mindesten AS20 jeweils gelöscht werden kann
  • Am ende kommt noch:   
              End With
              End Sub
            .....statt nur End Subdann klappts
  • Gerne möchte ich das Makro von einem Tabellenblatt namens „Spielplan" aus, per Steuerelement aktivieren. Gibt es hierzu eine einfache Lösung?
  • Wärend dem das Makro ausgeführt wird möchte ich auf dem Tabellenblatt "Spielplan" bleiben und kein hin und her gespringen auf dem Bildschirm haben. 
  • Was passiert eigentlich wenn mehr Aktionen pro Aktionszeit eingetragen sind als Kollegen zur Verfügung stehen? Könnte im gegebenen Fall der "Überlauf" ohne Einwirkung auf die späteren Buchungen, einfach ab Zeile 22 abwärts aufgelistet werden?
Gruss Enzo
Hallo Enzo

ich bitte mal die neue Version 6 zu testen. Sie berücksichtigt den Überlauf ab Zeile 22. Diese Zeile kannst du selbst anpassen/ verschieben.

Normalerweise gehört End With ins Makro, weil ich oben eine With Anweisung stehen habe. Das neue Makro liegt direkt im "Spielplan", die Tabelle habe ich umbenannt. Wenn man With herausnimmt sollten aber auch alle Punkte vor .Cells() und .Range gelöscht werden! Überlasse ich dir. 

Als Button empfehle ich einen normalen CommandButton, kein AktiveX Steuerlement. Dem normalen Button kann man das Makro über die rechte Maustaste direkt zuweisen! Bei AktiveX geht das nicht! Den Löschbereich kann man frei varieren, auch bis Zeile 50 gehen. Es sei denn ihr macht euch unten noch weiter Notizen?? Dann aufpassen beim löschen! Die Bildschirm Abschaltung ist drin, er sollte nicht hin und her springen, zuckt aber einmal beim Aus- und wieder Einschalten. Das ist normal.  So langsam haben wir alle Fehler Möglichkeiten im Makro erfasst.ç Wie schön ...

mfg  Gast 123
Löschung, Überlauf und Bildschirm beibehalten funktioniert nun Super. Herzlichen Dank

Ich habe einen CommandButton in Tabellenblatt "Sayfa" eingefügt und diesen mit dem Makro verknüpft. Dabei erschein eine Fehlermeldung "Microsoft Visual Basic, 400" . Weisst du woher die kommt? Wie kann die behoben werden?

Gruss Enzo
Hallo Enzo

freut mich das es soweit laeuft.  Glückwunsch für uns beide.  "Sayfa" ist türkisch und heist "Seite" anstatt Tabelle!  Der Code im Beispiel liegt in Tabelle "Spielplan", und die With Klammer enthaelt auch diesen Tabellen Namen. Du must Sayfa auf jeden Fall in "Speilplan" aendern. Dann wird es klappen.

Diese Aenderungm kannst du auch im VBA Editor machen, wenn du das Properties Fenster öffnest kannst du die Eigenschaften der Tabelle einstellen. Dort kannst du auch ganz oben den Objekt Namen aendern, und weiter unten den Namen im Reiter. Dort muss auf jeden Fall "Spielplan" stehen, oder du must den Namen im Makro bei With aendern. Das geht auch. Der Tabellen Name muss auf jeden Fall stimmen!!

mfg  Gast 123
Tesekkür

ok das versuche ich mal

Habe eben bemerkt dass wenn ich B bis L mit einer anderen Tabelle verlinke (zB =Tabelle12!AZ5) dann stimmt wieder gar nichts mehr Blush Zeile 1 wird dabei nicht berüht, wie du früher mal geschrieben hast muss diese zwingend so bleiben

In einigen Fällen wird dann auch Zeile 1 und 2 überschrieben.... 

Gruss Enzo
Hallo Enzo

kannst du mir davon eine Beispieldatei schicken und haendisch vermerkden wo Probleme auftauchen. z.B. Zellen farblich markieren. 
Aus dem Kopf heraus weiss ich nicht woran das liegt? Ich müsste das Problem selbst in der Datei sehen.

mfg  Gast 123
Hallo

Hier die Datei mit den Verknüpfungen aus dem Tabellenblatt "Erfassen". 

In "Speilplan" 
-können F:G und I:L bis zu 200 Zeilen haben
-soll Zeile 1 und 2 nicht überschrieben werden

Das Tabellenblatt "Spielplan" soll im Idealfall ausgeblendet werden können und weiter funktionieren. Ich will dieses Tabellenblatt auf Grund der Anfälligkeit bei Fehleingaben, nicht allen Usern zugängig machen. Die Daten werden dann mittels Verknüpfungen in das Tabellenblatt "Endprodukt" ausgelesen/verknüpft.

Beim Thema CommandButton haben wir uns glaub falsch verstanden. Ich möchte das Makro vom Tabellenblatt "Erfassen" aus starten und der Bildschirm soll dann auch auf diesem Blatt bleiben

Kann es sein dass der Code die automatische Berechnung ausschaltet bzw nur beim speichern aktualisiert? Das Problem habe ich bei anderen Dateien nicht. Kann man das auf default einstellen und automatisch aktualisieren?

Gruss Enzo
Hallo Enzo

deine Beispieldatei mit geaendertem Makro zurück. Den Spielplan kannst du im VBA Edito selnst Ein- und Ausblenden. Dazu öffnest du das Menü Fenster "Properties", da findest du ziemlich unten die Eigenschaft Visible. Jezt ist Visible=Hidden eingestellt!

Ich benutze keine Formel um Daten mit der Erfassung zu verknüpfen, das würde sich ja bei jeder Falscheingabe eines Users staendig mit veraendern! Ich kopiere die Daten über eine InputBox mit Psswort ("Enzo"), das du im Makro in Tabelle Spielplan in der Const Anweisung selbst aendern kannst. Ich gehe davon aus das nicht jeder Unbefugte den Spielplan erstellen soll, oder???  Neu eingefügt wurde das koieren der Daten aus der Erfassung. Du hast bei "Nicht verfügbar" auch Name und Zeiten umgedreht, das habe ich im Makro geaendert.

Schau mal bitte im orangen Bereich "Nicht verfügbar", wenn du da mit dem Cursor nach unten scrollst ist die Endzeile bei 200!! Deshalb hatte ich Laufzeitfehler. Da sind unsichtbare Daten in der Tabelle!! Den Löschbereich habe ich auf 200 erweitert. Und wenn du noch Spalten anhaengst ist das egal. Ich prüfe die letzte Spalte im Makro.

Tja, dann teste bitte noch mal ob es jetzt alle Wünsche für Weihnachten erfüllt sind ....

mfg  Gast 123
Yeaaa schaut super aus. Danke! Eine letzter Schliff und dann gehe ich unter den Weihnachtsbaum


-Wenn ich in "Erfassung" Spalte K mehr oder weniger Kollegen eintrage, dann brauch das Makro komischerweise zwei run‘s bis die Änderungen übernommen werden

-Der Überlauf ab Zeile 21 im „Endprodukt“ wird mit jeder zusätzlichen Spalte kaskadenähnlich (abwärts versetzt) angezeigt wenn die Daten vom Überlaufergebniss in A20:B30 um 07:00 kollidieren. Bitte das Überlaufsergebniss A20:B30 verschieben so dass diese nicht mit dem Überlauf kollidieren und nach unten hin offen sind

-Bitte vor dem Kopiervorgang vom Tabellenblatt „Erfassung“ in das Makro, die Werte P1:P15 aus „Erfassung“ nach „Erfassung“ K2:K16 (nur Werte) kopieren

Gruss Enzo
Hallo Enzo

ich schicke nur den neuen Code zum austauschen, keine Beispieldatei.  Das kopieren von Erfassung Spalte P1:P15 nach K2:K16 habe ich programmiert, ohne zu wissen warum die Kollegen jetzt dort stehen? Der Effekt das man das Makro zweimal starten muss liegt wahrscheinlich an einer falschen Mappen Einstellung. In einer vorherigen Mappe muste ich die Automatische Berechnung abschalten, stellte sie auf Manuell. Diese Einstellung kannst du über Optionen für deine Mappe wieder auf Automatik aendern. Dann sollte das aufhören.

Das versetzen im Überlauf habe ich rausgenommen. Im Makro ist auch ein Passwort aktiviert, damit nicht jeder den Spielplan erstellen kann, Wenn du das nicht brauchst einfach den Teil im Makro löschen. Das Kennwort steht oben in der Constant Anweisung und kann beliebig geaendert werden.

mfg  Gast 123  

Code:
Option Explicit            '8.12.2018  für Clevber Forum  Gast 123

Const ZÜberlauf = 22       '1. Zeile für Überlauf, z.Zt. 22
Const Passwort = "Enzo"    'Passwort bitte selbst festlegen


'Korrektur  18.12.2018
'Spielplan und Kollegen Verteilung auswerten

Sub Kollegen_auswerten_6()
Dim rfind As Range, lzB, lzF, lzEf
Dim AC As Range, a, d, m, j, ü, Txt
Dim EFS As Worksheet, Spmax As Integer
Set EFS = Worksheets("Erfassung")

'**  falss Passwort nicht erwünscht diesen Teil löschen
Txt = InputBox("Stimmen alle Daten in der Erfassung?" & Chr(10) & _
       "Soll der Spielplan jetzt erstellt werden?" & Chr(10) & _
        Chr(10) & "Bitte das Passwort eingeben!")
If Txt = Empty Then Exit Sub
If Txt <> Passwort Then MsgBox "Falsches Passwort": Exit Sub
'**  Ende des Passwort Code

With Worksheets("Spielplan")
 Application.ScreenUpdating = False
 Spmax = .Cells(2, Columns.Count).End(xlToLeft).Column

'Spielplan und Spalte K löschen  (Spielplan 200 Zeilen nach unten)
.Range("A2:M200").ClearContents  'erweitert auf 200!!
.Range("O3").Resize(100, Spmax).ClearContents

'###  bitte prüfen obdas so richtig iat ???     'AW vom 18.1.2018
If EFS.Range("P1").Value <> "" Then             'neu eingefügt lt. letzer AW
  EFS.Range("P1:P15").Copy
  EFS.Range("K2").PasteSpecial xlPasteValues
Else: MsgBox "Erfassung Spalte P nicht kopiert - 1. Zelle leer!"
End If
'####  Ende neuer Teil

'Daten aus Erfassung in Spielplan kopieren  (keine Formeln!)
 lzEf = EFS.Cells(Rows.Count, 1).End(xlUp).Row

 EFS.Range("B2:B" & lzEf).Copy
  .Range("J2").PasteSpecial xlPasteValues       'Aktionen
 EFS.Range("C2:C" & lzEf).Copy
  .Range("I2").PasteSpecial xlPasteValues        'Zeiten
 EFS.Range("D2:E" & lzEf).Copy
  .Range("K2").PasteSpecial xlPasteValues        'Material, Notizen

 EFS.Range("H2", EFS.[h2].End(xlDown)).Copy
  .Range("D2").PasteSpecial xlPasteValues      'definierte Zeiten
 EFS.Range("J2", EFS.[k2].End(xlDown)).Copy
  .Range("A2").PasteSpecial xlPasteValues      'Kolegen Liste 1-15
 EFS.Range("M2", EFS.[n2].End(xlDown)).Copy
  .Range("F2").PasteSpecial xlPasteValues      'Ausnahmen (nicht verfügbar)
    Application.CutCopyMode = False
'**  Ende Kopier Teil:  Daten in Spielplan kopieren
 
 
 lzB = .Cells(Rows.Count, 2).End(xlUp).Row
 lzF = .Cells(Rows.Count, 6).End(xlUp).Row
 a = 2:  d = 2:  m = 3  'Zaehler Vorgaben

'Verfügbarkeit der Kollegen auswerten Spalte K
For Each AC In .Range("I2", .[I2].End(xlDown))
If Trim(AC) = Empty Then Exit For  'Nullwert!!
If AC.Value <> AC.Cells(0, 1) Then ü = 0
If ü + 1 < lzB Then
   'Verfügbarkeit prüfen  (auf Nullwerte prüfen!!)
   For j = 2 To lzF
      If Trim(.Cells(j, 6)) = Empty Then Exit For
      If CDate(AC) = CDate(.Cells(j, 6)) Then _
      If .Cells(a, 2) = .Cells(j, 7) Then a = a + 1
      If a > lzB Then a = 2
   Next j

   'Kollegen in Spalte K eintragen
   AC.Offset(0, 4) = .Cells(a, 2)
   a = a + 1   'Next Kollege in K
   If a > lzB Then a = 2
     
   ü = ü + 1   'Überlauf Zaehler +1
Else  'Überlauf Vorgabe Zeile 21:
   .Cells(21, "O") = "Überlauf:"
    ü = ZÜberlauf
End If
Next AC

'Kollegen gemaess Spalte B in Spalte o auflisten
a = 3  '1.Zeile im Plan
For j = 2 To .Cells(1, 2).End(xlDown).Row
   For Each AC In .Range("M2", .[m2].End(xlDown))
      If .Cells(j, 2) = AC.Value Then
         .Cells(a, "O") = .Cells(j, 2)
          a = a + 1: Exit For
      End If
   Next AC
Next j

'Spiele den Zeiten und Kollegen zuordnen
For Each AC In .Range("I2", .[I2].End(xlDown))
   'definierte Zeit im Plan suchen  (Zeile 2)
   For d = 16 To Spmax  '45 Spalten von P-AS
     If AC.Value = .Cells(2, d) Then Exit For
   Next d
   
   'definierte Zeit im Plan suchen  (Zeile 2)
   For m = 3 To lzB + 1
      If .Cells(AC.Row, "M") = .Cells(m, "O") Then Exit For
   Next m
           
   'Aktion + Bemerkung in Plan einfügen
   If AC.Offset(0, 4) <> Empty Then
      AC.Cells(1, 2).Resize(1, 3).Copy
     .Cells(m, d).PasteSpecial xlPasteValues
      Application.CutCopyMode = False
   Else  'oder als Überlauf notieren
      AC.Cells(1, 2).Resize(1, 3).Copy
      '.Cells(ü, d).PasteSpecial xlPasteValues
      .Cells(ü, "Q").PasteSpecial xlPasteValues
      .Cells(ü, "O").Value = AC.Offset(0, 1)
      .Cells(ü, "P").Value = "'" & Mid(CDate(AC), 1, 5)
       Application.CutCopyMode = False
        ü = ü + 1   'Next Überlauf
   End If
Next AC
End With

'Tabelle Endprodukt aktivieren
Worksheets("Endprodukt").Select
End Sub
Seiten: 1 2 3 4 5 6