Clever-Excel-Forum

Normale Version: VBA Addieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo und einen weiterhin schönen So.

Ich hab da mal ein kleines Problem

Ich möchte am Ende der Woche die Summe der Stunden je Woche für den Monat

das Prinzip meiner Denke Dodgy        w = w + .Cells(n, 6).Value          natürlich mit     Dim w As Double  'je Woche



22 für alle die mir den Vorschlag mit einer Formel machen ( ja es ist EINFACHER ) ich will aber VBA mal verstehen 05 

Danke an alle die mir dabei Helfen Blush

Hier noch mein Beispiel 

  Option Explicit
 
  Private Sub Berechnen(Blatt As String)
   
    Dim c As Long
    Dim n As Long
    Dim s As String
   
    Dim d As Variant
    Dim k As Collection
   
   
    Dim w As Double  'Woche G
   
    d = ThisWorkbook.Worksheets("Legende").Range("C7:L18").Value
   
    With ThisWorkbook.Worksheets(Blatt)
     
      For n = 18 To 59
        c = Suchen(d, .Cells(n, 1).Value)
       
        If c > 0 Then
        .Cells(n, 4).Value = d(c, 5)                  '
        .Cells(n, 5).Value = d(c, 6)                  '
        .Cells(n, 6).Value = d(c, 6) - d(c, 5)        '
       
         
          If .Cells(n, 6).Value < 0 Then
           
          .Cells(n, 6).Value = .Cells(n, 6).Value + 1
          End If
         
        End If
'        w = w + .Cells(n, 6).Value
     
      Next
    End With
   
  End Sub
Hallöchen,

und was ausser vielleicht Suchen funktioniert nicht wie gewünscht?
Hier wird auch nach leeren Zellen gesucht.
die Prüfung ob .Cells(n, 1)  einen Wert enthält wäre sicher nicht verkehrt. 
 
c = Suchen(d, .Cells(n, 1).Value)
Hallo Ralf,

hast Du irgendwo nach Suchen gesucht und es gefunden? 17
rechte maustaste , definition . voila da wars.
.. also, das Forum gibt das nicht her 15
@schauan, könnte es sein das wir aneinander vorbei reden.
Sieht so aus. Wäre schön wenn der TE mal konkret schreiben würde was nicht geht.
Irgendeinen Grund muss es ja für den geposteten Code geben.

w soll sicher die Summe der Woche sein wie in der Aufgabe und nicht die Woche wie im Kommentar im Code.
Sicher wäre es sinnvoll, mit dem w auch was anzufangen. Ansonsten ist das Ergebnis nach End Sub weg.
Vielleicht würde es reichen w auf Modulebene zu dimensionieren.

Oder man könnte das Ergebnis vielleicht in eine Zelle eintragen.
Vielleicht geht also auch . Cells(...) = . Cells(...) + w
Wenn man vorher w berechnet..

Das mit leeren Zellen oder Texten oder Fehlerwerten oder... geht dann in Richtung Huhn und Ei. Sollte man erst schauen das man mit passenden Daten ein Ergebnis bekommt oder erst Fehlerprüfungen programmiert und dann die Berechnung durchführt.  100

Du hast aber im Gegensatz zu mir sicher schon in die Datei geschaut und bist näher am Thema
ja, hab in die Datei geschaut, aber ich warte erstmal ab was da noch so vom TE kommt. 
Er will nach Schichten suchen und summieren. Aber wenn die Zelle leer ist sucht er dann nach nem Leerstring und erhält auch ein Ergebnis größer 0 .
Keine Ahnung ob das so sein soll.
Hallo an alle.

Blush mmmm ich weis nicht wie ich es weiter beschreiben soll 19 

Ich versuche es noch mal Blush 
von zeile 18 - 24 habe ich ja die Woche definiert
jetzt wollte ich in zeile 25 die gesamten Stunden der Woche aus Zeile 18- 24

das gleiche für die anderen Wochen

für den ganzen Monat habe ich es so gemacht 17

  Option Explicit
 
' Prozeduren nur auf Modulebene...
 
  Private Sub Berechnen(Blatt As String)
   
    Dim c As Long
    Dim n As Long
    Dim s As String
   
    Dim d As Variant
    Dim k As Collection
   
    Dim m As Double 
    Dim mu As Double
    Dim mn As Double
    Dim mz As Double
   
    Dim w As Double 
    Dim wu As Double
    Dim wn As Double
    Dim wz As Double
   
   
    d = ThisWorkbook.Worksheets("Legende").Range("C7:L18").Value
   
    With ThisWorkbook.Worksheets(Blatt)
          
      For n = 18 To 59
       
        c = Suchen(d, .Cells(n, 1).Value)
       
        If c > 0 Then        
         
        .Cells(n, 4).Value = d(c, 5)               
        .Cells(n, 5).Value = d(c, 6)               
        .Cells(n, 6).Value = d(c, 6) - d(c, 5)     
        .Cells(n, 7).Value = d(c, 7)                 
        .Cells(n, 8).Value = d(c, 8)                
        .Cells(n, 9).Value = d(c, 8) - d(c, 7)     
        .Cells(n, 12).Value = d(c, 9)           
        .Cells(n, 13).Value = d(c, 10)             
        .Cells(n, 14).Value = d(c, 10) - d(c, 9)   
        .Cells(n, 17).Value = d(c, 1)                
        .Cells(n, 19).Value = d(c, 3)           
        .Cells(n, 20).Value = d(c, 4)                
        .Cells(n, 21).Value = d(c, 4) - d(c, 3)    
        .Cells(n, 23).Value = d(c, 7)                  ' 
        .Cells(n, 23).Value = d(c, 7)
            w = w + .Cells(n, 6).Value
         
          If .Cells(n, 6).Value < 0 Then         
          .Cells(n, 6).Value = .Cells(n, 6).Value + 1
          End If
         
          If .Cells(n, 14).Value < 0 Then  
          .Cells(n, 14).Value = .Cells(n, 14).Value + 1
          End If
         
          If .Cells(n, 21).Value < 0 Then
          .Cells(n, 21).Value = .Cells(n, 21).Value + 1
          End If
       
        m = m + .Cells(n, 6).Value
        mu = mu + .Cells(n, 9).Value
        mn = mn + .Cells(n, 14).Value
        mz = mz + .Cells(n, 21).Value
       
        End If

      Next
     
    .Cells(60, 6).Value = m
    .Cells(60, 6).NumberFormat = "[h]:mm"
    .Cells(60, 9).Value = mu
    .Cells(60, 9).NumberFormat = "[h]:mm"
    .Cells(60, 14).Value = mn
    .Cells(60, 14).NumberFormat = "[h]:mm"
    .Cells(60, 21).Value = mz
    .Cells(60, 21).NumberFormat = "[h]:mm"
    End With
   
  End Sub


05 das hab ich ja nun mitlerweile verstanden, wie und umgesetzt
wie kann ich jetzt das ganze für die jeweilige Woche noch mit rein bauen ?? 20 
So dass ich in den Zeilen 25 ,33, 42 .... den jeweiligen Wochenwert drin habe.
frei nach dem Motto F25=SUMME(F18:F24)*24 bzw.
                                F33=Summe(F26:F32)*24 und so weiter

mein Ansatz war mit             w = w + .Cells(n, 6).Value

und dann zum Schluß            .Cells(n, 6).Value = w

aber hier habe ich noch ein verständniss PROBLEM 16 

jetzt hoffe ich, dass einer hier mir das erklären kann


Ich hoffe ich konnte es jetz besser erklären 21 

Gruß an alle
Seiten: 1 2