Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro Fehler?

Makro Fehler?
19.09.2007 15:51:00
Bea
Hallo VBAler,
ich habe das folgende Makro vorliegen (siehe unten).
Problem: die Summe, die in den Zellen W,X,Y,Z 8 steht, sollte durch 2 geteilt werden. Wert vposition ist 5.
Ich habe das für ähnliche Makros hingekriegt, aber dieses hier macht mir Probleme. Ich starre hin und kann nichts mehr erkennen.
Hat jemand eine Idee, wo ich hingucken soll? Zunächst habe ich das value am Syntaxende /2 genommen und es Funktioniert nicht!! Bei anderen Makros aber schon...wo ist mein Fehler?
Das Makro funktioniert einwandfrei, aber diese Summe ändert sich nicht :((
Bei Bedarf sende ich die Tab zu.
Danke.
Sub halbjährlich()
'Berechnung aus Jahresbeträgen beate
sheetname = ActiveSheet.Name
vposition = Sheets("Parameter").Range("E3").Value
perioden = Sheets("Parameter").Range("E1").Value
MonatVertragEnde = Month(Sheets(sheetname).Cells(vposition + 4, 16).Value)
If Sheets(sheetname).Cells(vposition + 4, 20).Value = "" Then
auszahlungsmonat = Month(Sheets(sheetname).Cells(vposition + 4, 15).Value)
Else
auszahlungsmonat = Month(Sheets(sheetname).Cells(vposition + 4, 20).Value)
End If
If perioden <= 0 Then
Exit Sub
End If
If perioden <= 6 Then
If auszahlungsmonat >= 1 And auszahlungsmonat <= 3 Then
If auszahlungsmonat < MonatVertragEnde Then
Sheets(sheetname).Cells(vposition + 4, 26).Value = ((Sheets(sheetname).Cells(vposition + 4, 18).Value) + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Else
Sheets(sheetname).Cells(vposition + 4, 28).Value = ((Sheets(sheetname).Cells(vposition + 4, 18).Value) + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
End If
If auszahlungsmonat > 3 And auszahlungsmonat <= 6 Then
If auszahlungsmonat < MonatVertragEnde Then
Sheets(sheetname).Cells(vposition + 4, 27).Value = ((Sheets(sheetname).Cells(vposition + 4, 18).Value) + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Else
Sheets(sheetname).Cells(vposition + 4, 29).Value = ((Sheets(sheetname).Cells(vposition + 4, 18).Value) + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
End If
If auszahlungsmonat > 6 And auszahlungsmonat <= 9 Then
If auszahlungsmonat < MonatVertragEnde Then
Sheets(sheetname).Cells(vposition + 4, 28).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Else
Sheets(sheetname).Cells(vposition + 4, 26).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
End If
If auszahlungsmonat > 9 And auszahlungsmonat <= 12 Then
If auszahlungsmonat < MonatVertragEnde Then
Sheets(sheetname).Cells(vposition + 4, 29).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Else
Sheets(sheetname).Cells(vposition + 4, 27).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
End If
Exit Sub
End If
If perioden > 6 And perioden <= 12 Then
If auszahlungsmonat >= 1 And auszahlungsmonat <= 3 Or auszahlungsmonat > 6 And auszahlungsmonat <= 9 Then
Sheets(sheetname).Cells(vposition + 4, 26).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Sheets(sheetname).Cells(vposition + 4, 28).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
If auszahlungsmonat > 3 And auszahlungsmonat <= 6 Or auszahlungsmonat > 9 And auszahlungsmonat <= 12 Then
Sheets(sheetname).Cells(vposition + 4, 27).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
Sheets(sheetname).Cells(vposition + 4, 29).Value = (Sheets(sheetname).Cells(vposition + 4, 18).Value + Sheets(sheetname).Cells(vposition + 4, 19).Value)
End If
Exit Sub
End If

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

Betreff
Datum
Anwender
Anzeige
AW: Makro Fehler?
19.09.2007 17:10:00
fcs
Hallo bea,
die Prozedur schreib die Summe der Werte in den Spalten 18 und 19 (R und S) abhängig von den Bedingungen jeweils in die Spalten 26, 27, 28 und/oder 29 (also Z bis AC)
Die Spalten W,X,und Y (23 bis 25) tauchen in dem Code garnicht auf, wie sollen sich da Werte ändern?
Gruß
Franz
Außerdem solltets du den Code etwas übersichtlicher gestallten

Sub halbjährlich()
'Berechnung aus Jahresbeträgen beate
Dim wksAktiv As Worksheet, sheetname As String
Dim perioden As Integer, vposition As Integer
Dim auszahlungsmonat As Integer, MonatVertragEnde As Integer
sheetname = ActiveSheet.Name
Set wksAktiv = ActiveSheet
vposition = Sheets("Parameter").Range("E3").Value
perioden = Sheets("Parameter").Range("E1").Value
With wksAktiv
MonatVertragEnde = Month(.Cells(vposition + 4, 16).Value)
If .Cells(vposition + 4, 20).Value = "" Then
auszahlungsmonat = Month(.Cells(vposition + 4, 15).Value)
Else
auszahlungsmonat = Month(.Cells(vposition + 4, 20).Value)
End If
If perioden = 1 And auszahlungsmonat  3 And auszahlungsmonat  6 And auszahlungsmonat  9 And auszahlungsmonat  6 And perioden = 1 And auszahlungsmonat  6 _
And auszahlungsmonat  3 And auszahlungsmonat  9 _
And auszahlungsmonat 


Anzeige
AW: Makro Fehler?
19.09.2007 17:23:00
Bea
Franz,
vielen Dank. Ich prüfe das jetzt.
Was heißt übersichtlicher?
bea

AW: Makro Fehler?
19.09.2007 17:26:00
Bea
Kann das irgendwie sein, dass ich die Zellen falsch berechne...bei mir ist 18 und 19, P und Q...

AW: Makro Fehler?
19.09.2007 17:31:15
Bea
sagen wir Mal so...das Makro soll P plus Q rechnen, dann die Ergebnisse in W, X, Y, Z rausgeben...das kriege ich hin. Die Summe aus P und Q soll aber in W, X, Y, Z durch zwei geteilt werden und das klappt nicht...

AW: Makro Fehler?
19.09.2007 19:03:00
fcs
Hallo bea,
das mit den Spaltennummern ist dann hoffentich geklärt. Zur Hilfe bei den Spaltennummern ggf. unter Optionen die Darstellung vorübergehend auf Z1S1 statt A1 umstellen.
Wenn alle Spalten korrekt eingestellt sind, dann sollte eigenlich auch die Berrchnung funktionieren wenn du einfach die in Klammern gesetzte Summenberechnung durch 2 dividierst.
Mit Code übersichtlicher meinte ich:
1.Die Deklaration der Variablen in Dim-Anweisungen
hilft ggf. bei der Fehlersuche, z.B. Typ-Unverträglickkeit, Variablenschreibfehlern
2. Verwendung von Objekt-Variablen, hier für das Tabellenblatt
Man kann im Code die Variable verwenden, statt der ggf. relativ langen Beschreibung des Objektes
z.B. wksAktiv statt Activeworkbook.sheets(sheetname)
3. Die Verwendung von
With Objektbezeichnung
...
End With
Dann wenn am gleichen Objekt (hier den Zellen im aktiven Blatt) sehr viele Operationen durchgeführt werden. Man kann dann die Methoden und Eigenschaften mit einem Punkt beginnen und muss nicht den kompletten Namen des Objektes ständig wiederholen.
4. Umbrechen der Code-Zeilen mit " _" am Zeilenende, so dass der Code lesbar ist, ohne das man standig horizontal scrollen muss.
Nachfolgend noch der modifizierte Code, in dem du ggf. noch ein paar Spaltennummern korrigieren muss.
Gruß
Franz

Sub halbjährlich()
'Berechnung aus Jahresbeträgen beate
Dim wksAktiv As Worksheet, sheetname As String
Dim perioden As Integer, vposition As Integer
Dim auszahlungsmonat As Integer, MonatVertragEnde As Integer
sheetname = ActiveSheet.Name
Set wksAktiv = ActiveSheet
vposition = Sheets("Parameter").Range("E3").Value
perioden = Sheets("Parameter").Range("E1").Value
With wksAktiv
MonatVertragEnde = Month(.Cells(vposition + 4, 16).Value) '###spalte prüfen 16=P
If .Cells(vposition + 4, 20).Value = "" Then '###spalte prüfen 20=T
auszahlungsmonat = Month(.Cells(vposition + 4, 15).Value) '###spalte prüfen 15=O
Else
auszahlungsmonat = Month(.Cells(vposition + 4, 20).Value) '###spalte prüfen 20=T
End If
If perioden = 1 And auszahlungsmonat  3 And auszahlungsmonat  6 And auszahlungsmonat  9 And auszahlungsmonat  6 And perioden = 1 And auszahlungsmonat  6 _
And auszahlungsmonat  3 And auszahlungsmonat  9 _
And auszahlungsmonat 


Nachfolgend

Anzeige
Franz, Du bist ein Engel! Danke!
20.09.2007 10:33:00
Bea
:))

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige