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

@ Renee bzgl. Dezimalklassifikation

@ Renee bzgl. Dezimalklassifikation
19.05.2008 21:35:22
Jessica
Hallo Renee,
ich wende mich gezielt an Dich, da Du mir ja auch folgenden Code gegeben hast:
(andere Hilfesteller, sind auch WILLKOMMEN ;-) )

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'   Code for a simple decimal classification
'   Row before target.row must already be filled (i.e. Row 1 contains initial start)
'   the level below the one clicked is increased be 1
'   clicking a empty cell below one of highest level increases highest level
Const dStart = 0            ' Start first level (e.g. 0 or 1)
Const dMinCol = 6           ' min Column
Const dMaxCol = 10          ' max Column
Const dSumCol = 20          ' Column for building a sum value or formula
Dim lCol As Long, lxCol As Long, lRow As Long
Dim sFormula As String
lRow = ActiveSheet.Cells(1, dMinCol).End(xlDown).Row
If Target.Count = 1 And Target.Row  0 Then
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & "=0"
Else
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & ">0"
lxCol = lCol
End If
Else
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & "=" & _
Me.Cells(Target.Row, lCol).Address(0, 0)
End If
sFormula = sFormula & ")*"
Next lCol
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, dSumCol).Address(0, 0) & _
":" & Me.Cells(lRow, dSumCol).Address(0, 0) & "))"
Select Case MsgBox("YES = Insert FORMULA" & vbCrLf & _
"NO  = Insert VALUE  ", vbYesNoCancel, "Insert SUM")
Case vbYes
Target.Formula = sFormula
Case vbNo
Target.Value = Evaluate(sFormula)
End Select
Application.EnableEvents = True
Cancel = True
Exit Sub
End If
If Target.Row = 1 Or Target.Count > 1 Or _
Target.Column  dMaxCol Then Exit Sub
If IsEmpty(Target.Offset(-1, 0).Value) Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Me.Cells(Target.Row, dMaxCol).Value) Or _
Me.Cells(Target.Row, dMaxCol).Value >= Me.Cells(Target.Row + 1, dMaxCol).Value Then
lCol = Target.Column
If IsEmpty(Target.Value) Then
Target.EntireRow.Insert (xlShiftDown)
lRow = Target.Row - 1
Else
Target.Offset(1, 0).EntireRow.Insert (xlShiftDown)
lRow = Target.Row + 1
If Target.Column  lxCol
Me.Cells(lRow, lxCol).Value = Me.Cells(lRow - 1, lxCol).Value
End Select
Next lxCol
Cancel = True
Else
MsgBox "Impossible to insert level!", vbOKOnly + vbExclamation, "Insert Level"
End If
Application.EnableEvents = True
End Sub


Klappt alles super, aber gibt es eine Möglichkeit, dass ich anstelle der Summe über "dSumCol = 20" (wäre hier Spalte T) über die gleiche Dezimalklassifikation die Rechnung über eine einfache Multiplikation von dem Wert der in Spalte Q x S steht errechnen lasse. Das sollte dann Spalte T ergeben und DIESE sollte dann ausgerechnet werden. Ich habe bei meiner Betrachtung nämlich vergessen, dass ich keine festen €Werte eingeben, sondern nur die Massen (Q) und Preise(S) und die erst die Summe (T) ergeben. ;-(
Wäre super, wenn Du mir da helfen könntest! Gerne auch andere...:-)
Lg
Jessi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @ Renee bzgl. Dezimalklassifikation
20.05.2008 22:13:13
fcs
Hallo Jessica,
um die Formel für das Produkt einzufügen. könnte man eigentlich das Change-Ereignis verwenden.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Eingaben in Spalten Q und S überwachen
With Target
If (.Column = 17 Or .Column = 19) And .Row > 1 And .Cells.Count = 1 Then
If IsEmpty(Cells(.Row, 17)) And IsEmpty(Cells(.Row, 19)) Then
'Formel löschen, wenn beide Zellen in Zeile leer sind
Cells(.Row, 20).ClearContents
Else
'Formel in Spalte 20 der Zeile einfügen, wenn noch nicht vorhanden
If IsEmpty(Cells(.Row, 20)) Then
Application.EnableEvents = False
Cells(.Row, 20).Formula = "=R[0]C[-3] * R[0]C[-1]"
Application.EnableEvents = True
End If
End If
End If
End With
End Sub


Anzeige
AW: @ Renee bzgl. Dezimalklassifikation
21.05.2008 07:43:00
Jessica
Hallo Franz, Danke für Deine Rückmeldung. Du meinst, dass ich dies mit dem eigentlichen Code kombinieren kann? Weil der eigentliche Sinn dieses VBA-Codes ist ja die Einbeziehung der Dezimalklassifikation
100000 ergibt sich aus Summe von 110000 + 120000 + 130000 (...) etc.
111000 ist Bestandteil von 110000 usw.
Wenn ich diesen Code mit der eigentlichen Dezimalklassifikation kombinieren kann, versuche ich mal das irgendwo einzubauen. Habe allerdings schon erwähnt, dass ich mit komplexen Schleifen und Codes nicht allzu viel anfangen kann, bzw. verstehe diese meist nicht so recht.
Lg

Anzeige
AW: @ Renee bzgl. Dezimalklassifikation
21.05.2008 08:46:46
Renee
Hallo Jessica,
Ich war ein paar Tage verhindert.
Ich hab mal ein paar Modifikationen am Code vorgenommen.
Statt Wert oder Formel einfügen, kann jetzt entweder die Summenprodukt-Formel (für Zusammenfassung mehrere Einzelzellen) oder die Multiplikationsformel (für Einzelzeilen) eingefügt werden. Ich nehme nämlich nicht an dass die Multiplikation für Zusammenfassungen Sinn macht.
Probier's mal und gib mir bitte Feedback:

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'   Code for a simple decimal classification
'   Row before target.row must already be filled (i.e. Row 1 contains initial start)
'   the level below the one clicked is increased be 1
'   clicking a empty cell below one of highest level increases highest level
Const dStart = 0            ' Start first level (e.g. 0 or 1)
Const dMinCol = 6           ' min Column
Const dMaxCol = 10          ' max Column
Const dSumCol = 20          ' Column for building a sum value or formula
Dim lCol As Long, lxCol As Long, lRow As Long
Dim sFormula As String
lRow = ActiveSheet.Cells(1, dMinCol).End(xlDown).Row
If Target.Count = 1 And Target.Row  0 Then
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & "=0"
Else
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & ">0"
lxCol = lCol
End If
Else
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, lCol).Address(0, 0) & _
":" & Me.Cells(lRow, lCol).Address(0, 0) & "=" & _
Me.Cells(Target.Row, lCol).Address(0, 0)
End If
sFormula = sFormula & ")*"
Next lCol
sFormula = sFormula & "(" & Me.Cells(Target.Row + 1, dSumCol).Address(0, 0) & _
":" & Me.Cells(lRow, dSumCol).Address(0, 0) & "))"
Select Case MsgBox("Ja   = Total Summe Bereich" & vbCrLf & _
"Nein= Wert der Einzelzeile ", vbYesNoCancel, "Insert Formula")
Case vbYes
Target.Formula = sFormula
Case vbNo
Target.Formula = "=" & Me.Cells(Target.Row, dSumCol - 3).Address(0, 0) & _
"*" & Me.Cells(Target.Row, dSumCol - 1).Address(0, 0)
End Select
Application.EnableEvents = True
Cancel = True
Exit Sub
End If
If Target.Row = 1 Or Target.Count > 1 Or _
Target.Column  dMaxCol Then Exit Sub
If IsEmpty(Target.Offset(-1, 0).Value) Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Me.Cells(Target.Row, dMaxCol).Value) Or _
Me.Cells(Target.Row, dMaxCol).Value >= Me.Cells(Target.Row + 1, dMaxCol).Value Then
lCol = Target.Column
If IsEmpty(Target.Value) Then
Target.EntireRow.Insert (xlShiftDown)
lRow = Target.Row - 1
Else
Target.Offset(1, 0).EntireRow.Insert (xlShiftDown)
lRow = Target.Row + 1
If Target.Column  lxCol
Me.Cells(lRow, lxCol).Value = Me.Cells(lRow - 1, lxCol).Value
End Select
Next lxCol
Cancel = True
Else
MsgBox "Es kann kein Level eingefügt werden!", vbOKOnly + vbExclamation, "Level einfü _
gen"
End If
Application.EnableEvents = True
End Sub


GreetZ Renée

Anzeige
AW: @ Renee bzgl. Dezimalklassifikation
21.05.2008 11:22:00
Jessica
Hallo Renee,
den Code habe ich eingefügt und er läuft. Spalten haben sich mittlerweile geändert, habe ich aber selbst abändern können, auch wenn recht komplex für mein kaum vorhandenes Grundlagenwissen. Vielleicht verstehe ich irgendwann den Code komplett ;-)
VIELEN LIEBEN DANK FÜR DEINE HILFE, LÄUFT SUPER!
LG
Jessi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige