Blattnamen-abhängig Daten eintragen
#1
Hallo zusammen,

ich will in einen Kalender die Feiertage eintragen lassen. Das mache ich mit folgenden Codes:

DieseArbeitsmappe:
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   Dim iSht As Integer

   '  Pwd = "Password"                                          ' für ein festes Passwort
   '  ActiveSheet.Unprotect Pwd
  
   For iSht = 1 To Sheets.Count
      If Sheets(iSht).Name <> "Feiertage" Then
         Call Feiertage_eintragen
      End If
      Call Datum_Uhrzeit_anspringen                                'Datum_anspringen
    
    Next iSht
  
   '  ActiveSheet.Protect Pwd
   '  ActiveSheet.Name = Range("z9").Value
  
End Sub

Allgemeines Modul:
Code:
Sub Feiertage_eintragen()              ' Beverley
   Dim lngZeile As Long
   For lngZeile = 2 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
      If Not IsError(Application.Match(Cells(lngZeile, 1), Worksheets("Feiertage").Range("C59:C87"), 0)) _
             Then Cells(lngZeile, 2) = "F"
   Next lngZeile
End Sub

Warum wird aber trotzdem das F auch in das Blatt "Feiertage" eingetragen?
Top
#2
Hallo Ralf,

Es wird immer in das aktivierte Blatt geschrieben.

Im Ereignis Makro ganz am Anfang vor der For Schleife eine If Abfrage einbauen.

In der Art: If ActiveSheet.Name <> "Feiertage" Then

So wie ich das Sehe, macht die Schleife keinen Sinn. Damit alle Blätter abgearbeitet werden, müsstest Du iSht an das Modul weitergeben. Da ich per Handy unterwegs bin, kann ich Dir jetzt keinen Code zeigen.
Gruß Atilla
Top
#3
Hallo Ralf,

dieses Konstrukt ist doch "Lötzinn", aber ohne Kolophonium. ;)
Bei jedem Aktivieren eines Blattes wird die Schleife so oft wie Blätter vorhanden -1 durchlaufen, um dann jedes Mal alle Tage abzuklappern und Feiertage dann trotzdem immer wieder nur im aktiven Blatt zu kennzeichnen. :)
Das passiert so auch mit dem Blatt "Feiertage", auch wenn es beim Abklappern nicht mitgezählt wird.

Gruß Uwe
Top
#4
Hallo Uwe,


So drastisch konnte ich es nicht ausdrücken. Wink
Gruß Atilla
Top
#5
alles klar, dann werde ich mal meine Ent-Lötsaugpumpe verwenden!

Danke!
Top
#6
Hallo Ralf,

so wäre es schon besser:

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'  Pwd = "Password"                                          ' für ein festes Passwort
'  ActiveSheet.Unprotect Pwd

  If Sh.Name <> "Feiertage" Then
    Call Feiertage_eintragen
    Call Datum_Uhrzeit_anspringen                                'Datum_anspringen
  End If
  
'  ActiveSheet.Protect Pwd
'  ActiveSheet.Name = Range("z9").Value
End Sub

Gruß Uwe
Top
#7
Hi,

(18.11.2014, 16:35)Rabe schrieb: alles klar, dann werde ich mal meine Ent-Lötsaugpumpe verwenden!

habe es jetzt so gelöst:
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

   '  Pwd = "Password"                                          ' für ein festes Passwort
   '  ActiveSheet.Unprotect Pwd
  
      If ActiveSheet.Name <> "Feiertage" Then
         Call Feiertage_eintragen
      End If
      Call Datum_Uhrzeit_anspringen                                'Datum_anspringen
  
   '  ActiveSheet.Protect Pwd
   '  ActiveSheet.Name = Range("z9").Value
End Sub

eure Tips waren clever! Wie immer hier im Excel Forum!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste