Thema Datum  Von Nutzer Rating
Antwort
Rot Makro einfügen
02.05.2016 09:54:31 punikaa
NotSolved
02.05.2016 12:36:09 Gast31268
NotSolved
03.05.2016 08:36:44 punikaa
NotSolved
03.05.2016 08:44:07 punikaa
NotSolved
03.05.2016 08:45:27 punikaa
NotSolved
03.05.2016 10:00:00 Gast43381
NotSolved
03.05.2016 10:48:22 punikaa
NotSolved
03.05.2016 12:59:15 Gast82090
NotSolved
03.05.2016 14:36:21 punikaa
NotSolved
03.05.2016 14:54:05 Gast67443
*****
Solved
04.05.2016 14:34:29 punikaa
NotSolved
04.05.2016 16:17:18 Gast99795
NotSolved

Ansicht des Beitrags:
Von:
punikaa
Datum:
02.05.2016 09:54:31
Views:
2171
Rating: Antwort:
  Ja
Thema:
Makro einfügen

Hey :) Ich habe ein Makro geschrieben, welches alle Arbeitsblätter zählt und überprüft ob im Namen des Blattes das Wort "Schiff" vorkommt, denn nur dann soll es durchlaufen werden. Jetzt weiß ich allerdings nicht an welcher Stelle ich dies am besten in den vorherigen Code einfügen soll, damit das erste Makro für alle Arbeitsblätter durchgeführt wird und jede Arbeitsblätter prüft. Hier noch einmal als erstes der Quellcode in den das neue Makro eingefügt werden soll und als zweites das beschriebene Makro...habe einiges hin und her probiert aber irgendwas hat immer nicht funktioniert und nun komme ich nicht weiter... :( 
Vielen Dank für jegliche Hilfe im Voraus! 
LG Moni

 

Sub berechnung()

Dim Spalte As Integer, Zeile As Integer, NrDatum As Integer, Spalte1 As Integer
Dim Datum As Date
Dim Anzahl As Integer, Arbeiter As Integer
Dim MaxArbeiter As Integer, MaxTage As Integer
Dim Eingabe As String
Dim Zelle As String
Dim Festmacher As Integer, Mal As Integer, Pos As Integer

Eingabe = InputBox("Anzahl der Mitarbeiter", "Mitarbeiter")     'Fragt die Anzahl der Mitarbeiter ab
If Eingabe = "" Then Exit Sub
MaxArbeiter = CInt(Eingabe)                                     'Eingabe wird zu Integer umgewandelt und als MaxArbeiter gespeichern

Eingabe = InputBox("Anzahl der Tage im Monat", "Monat")         'Fragt die Anzahl der Tage in dem jeweiligen Monat an
If Eingabe = "" Or Not IsNumeric(Eingabe) Then Exit Sub         'Prüfung ob etwas eingegeben wurde und ob Eingabe eine Zahl ist
MaxTage = CInt(Eingabe)                                         'Eingabe wird zu Integer umgwandelt und als MaxTage gespeichert

For Zeile = 4 To MaxArbeiter + 4                                'Schleife beginnt bei der ersten Mitarbeiter-NR in Zeile 4 bis hin zum letzten MA
  Arbeiter = Worksheets("April_2016").Cells(Zeile, 5).Value     'merkt sich den Wert aus Spalte 5, die Mitarbeiter-NR fortlaufend bis zum letzten Eintrag
  
  
  For Spalte = 6 To MaxTage + 6                                 'alle Spalten in April_2016 durchlaufen bis zum letzten Tag
    Datum = Worksheets("April_2016").Cells(3, Spalte).Value     'Datum festlegen
    For NrDatum = 6 To 23                                       'Datum wird gesucht
      If Worksheets("Schiff_1").Cells(NrDatum, 1).Value = Datum Then Exit For   'Wenn an dieser Stelle das eingetragene Datum gleich dem Datum aus April_2016 ist Exit
    Next NrDatum
    Anzahl = 0
    
    
    For Spalte1 = 5 To 15                                           'die Spalten Fema und Loma
    
Zelle = Worksheets("Schiff_1").Cells(NrDatum, Spalte1).Value        'durchläuft alle Zellen und untersucht bzw. merkt sich den Wert
If Zelle <> "" Then                                                 'wenn Zelle ungleich 0 bzw. etwas drin steht
    Pos = InStr(1, Zelle, "/", 1)                                   '1=textbasierter Vergleich, sucht nach / und merkt sich die Position
If Pos = 0 Then                                                     'wenn Pos=0, also kein / vorhanden
  Festmacher = CInt(Zelle)                                          'übernimmt die Arbeiter-NR die in der Zelle steht
  Mal = 1                                                           'wird nur einmal eingesetzt, da kein /
Else                                                                'wenn / vorhanden ist
  Festmacher = CInt(Mid(Zelle, 1, Pos - 1))                         'Mid gibt Zeichenfolge aus der Zelle zurück; Pos-1 da Arbeiter-NR vor dem / steht
  Mal = CInt(Mid(Zelle, Pos + 1))                                   'Pos+1 da Anzahl an Einsätzen an diesem Tag hinter / steht
End If
      If Festmacher = Arbeiter Then Anzahl = Anzahl + Mal           'Wenn der Festmacher gleich Arbeiter ist wird Anzahl um Mal erhöht
    End If
    Next Spalte1                                                    'geht über zur nächsten Spalte
    Worksheets("April_2016").Cells(Zeile, Spalte).Value = Anzahl    'an der entsprechenden Stelle in der Liste wird die Anzahl eingetragen
 
  Next Spalte

Next Zeile                                                          'Schleife wird so lange durchlaufen bis MaxArbeit und MaxTage durchlaufen wurde

End Sub

Und hier einmal das Makro, welches an der richtigen Stelle eingefügt werden soll... 

 

Sub Blätter()
Dim ws As Worksheet
Dim List() As String
Dim Anzahl As Integer, Zaehler As Integer

Anzahl = Worksheets.Count
ReDim List(Anzahl - 1)
Zaehler = 0
For Each ws In Worksheets
  List(Zaehler) = ws.Name
  Zaehler = Zaehler + 1
Next ws

For Zaehler = 0 To Anzahl - 1
  If Mid(List(Zaehler), 1, 6) = "Schiff" Then
  
  End If
Next Zaehler

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Makro einfügen
02.05.2016 09:54:31 punikaa
NotSolved
02.05.2016 12:36:09 Gast31268
NotSolved
03.05.2016 08:36:44 punikaa
NotSolved
03.05.2016 08:44:07 punikaa
NotSolved
03.05.2016 08:45:27 punikaa
NotSolved
03.05.2016 10:00:00 Gast43381
NotSolved
03.05.2016 10:48:22 punikaa
NotSolved
03.05.2016 12:59:15 Gast82090
NotSolved
03.05.2016 14:36:21 punikaa
NotSolved
03.05.2016 14:54:05 Gast67443
*****
Solved
04.05.2016 14:34:29 punikaa
NotSolved
04.05.2016 16:17:18 Gast99795
NotSolved