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

Änderung eines privaten Moduls

Änderung eines privaten Moduls
Uwe
Guten Morgen zusammen,
einmal mehr habe ich ein, eigentlich sicher lösbares, Problem. Zur Zeit nutze ich das nachfolgende, funktionierenden "private" Modul:

Sub Arbeitszeit()
Dim rng As Range
Range("D5:D35").ClearContents
For Each rng In Me.Range("A5:A" & Me.Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2)
'Festsetzung der täglichen Arbeitszeit (Mo-Do)
Case 1 To 4
rng.Offset(0, 3) = TimeSerial(8, 15, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0)    'Beginn
rng.Offset(0, 5) = TimeSerial(16, 15, 0)  'Ende
'Festsetzung der täglichen Arbeitszeit (Fr)
Case 5
rng.Offset(0, 3) = TimeSerial(6, 0, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0)    'Beginn
rng.Offset(0, 5) = TimeSerial(13, 30, 0)  'Ende
Case Else
End Select
Next
End Sub
Dieses Modul spreche ich mit der Anweisung Call Worksheets("Mitarbeiter1").Arbeitszeit an. Auch noch in Ordnung. Jetzt aber mein Problem.
Zur Zeit benötige ich exakt diese Prozedur allerdings nicht nur für einen, sondern für insgesamt 23 Mitarbeiter. Meine bisherigen Versuche, hieraus "einfach" ein öffentliches Modul über die Anweisung Call Arbeitszeit anzusprechen scheitern bisher. Es tut sich schlicht nichts...
Das veränderte Modul wäre dann - nach meinen Überlegungen - das:
Sub Arbeitszeit()
Dim rng As Range
Dim wks As Worksheet, w As Worksheet
If Not wks Is tb31100000 Then
With wks
Range("D5:D35").ClearContents
For Each rng In Range("A5:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2)
'Festsetzung der täglichen Arbeitszeit (Mo-Do)
Case 1 To 4
rng.Offset(0, 3) = TimeSerial(8, 15, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0)    'Beginn
rng.Offset(0, 5) = TimeSerial(16, 15, 0)  'Ende
'Festsetzung der täglichen Arbeitszeit (Fr)
Case 5
rng.Offset(0, 3) = TimeSerial(6, 0, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0)    'Beginn
rng.Offset(0, 5) = TimeSerial(13, 30, 0)  'Ende
Case Else
End Select
Next
End With
End If
End Sub
Was aber läuft hier falsch? Vielleicht einfach nur ein Denkfehler? Mmmmhhh...
Für Hilfe und sachdienliche Hinweise bin ich natürlich dankbar.
Gruß
Uwe

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
lege Deinen Code in ein Modul und ...
18.02.2010 09:00:32
Tino
Hallo,
rufe es einfach mit Arbeitszeit oder Call Arbeitszeit auf.
Eventuell eine Abfrage einbauen die prüft auf welcher Tabelle man sich befindet,
sollte dies notwendig sein.
Gruß Tino
Vermutung
18.02.2010 09:28:04
Matthias
Hallo
nur vermutet, nicht getestet.
wenn Du mit With arbeitest, solltest Du vor Range den Punkt setzen
With wks
.Range("D5:D35").ClearContents
For Each rng In .Range("A5:A" & Cells(Rows.Count, 1).End(xlUp).Row)


Beispiel
2 Tabellen
Tabelle1 ist das ActiveSheet, löschen willst Du aber in Tabelle2
Code:
Dim wks As Worksheet
Set wks = Tabelle2
With wks
.Range("A1:C1").ClearContents
End With
Set wks = Nothing
hier wird in Tabelle2 gelöscht
Nimmst Du jetzt den Punkt vor Range weg, wird im ActiveSheet gelöscht (also in Tabelle1)
Gruß Matthias
Anzeige
AW: Punkte blinken ...
18.02.2010 09:53:02
dieter(drummer)
Hi Matthias,
mich interesessiert, wie Du die Punkte vor RANGE zum blinken bringts?
Danke für evtl. Rückmeldung.
Gruß Dieter(Drummer)
AW: Punkte blinken ...
18.02.2010 10:02:09
Matthias
Hallo Dieter
mit blink (html)
http://de.selfhtml.org/html/text/proprietaer.htm#blinkend
Du kannst Dir das übrigens auch über den Quelltext anzeigen lassen.
Text markieren rechte Maustaste (Auswahl Quelltext anzeigen). Ich benutze den FirefoxBrowser
Gruß Matthias
AW: Punkte blinken ...
18.02.2010 10:08:29
dieter(drummer)
Hi Matthias,
Danke für die Info. Ich nutze auch Firefox und werde mich damit beschäftigen. Bin immer für NEUES zu haben und daran interessiert.
Danke und Gruß Dieter(Drummer)
Anzeige
AW: Änderung eines privaten Moduls
18.02.2010 09:38:13
Josef
Hallo Uwe,

du musst deiner Prozedur einen Parameter (Tabellenblatt) mitgeben.
Beispiel:

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Arbeitszeit(wks As Worksheet)
  Dim rng As Range
  
  With wks
    .Range("D5:D35").ClearContents
    For Each rng In .Range("A5:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
      Select Case Weekday(rng, 2)
          'Festsetzung der täglichen Arbeitszeit (Mo-Do)
        Case 1 To 4
          rng.Offset(0, 3) = TimeSerial(8, 15, 0)
          rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
          rng.Offset(0, 5) = TimeSerial(16, 15, 0) 'Ende
          'Festsetzung der täglichen Arbeitszeit (Fr)
        Case 5
          rng.Offset(0, 3) = TimeSerial(6, 0, 0)
          rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
          rng.Offset(0, 5) = TimeSerial(13, 30, 0) 'Ende
        Case Else
      End Select
    Next
  End With
  
End Sub


Sub aufruf()
  Arbeitszeit ActiveSheet
  'oder
  Arbeitszeit Sheets("Tabelle1")
  'oder...
End Sub

Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige