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

zwei Worksheet_Change kombinieren (fcs)

zwei Worksheet_Change kombinieren (fcs)
05.12.2013 11:04:17
Dip
Guten Tag Allerseits,
Den Versuch die zwei folgenden Makros zu kombinieren, habe ich leider nicht geschafft. Es handelt sich um zwei voneinander unabhängige Makros.
Makro Nr. 2 wurde vom engagierten Forumsmitglied Franz (fcs) entwickelt. Evtl. wüsstest Du Franz wie man am besten vorgehen sollte!?
(Ps. die Fehlermeldung mit dem #NV im PSP Code habe ich mittels ISTFEHLER eliminiert, nun funktioniert Dein Makro einwandfrei, Danke nochmals Franz :-)... Konnte auf den alten Forumseintrag irgendwie nicht mehr antworten)
1:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If Target.Column = 3 Then
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub

2:
Private Const gZeileMonat As Long = 7 'Zeile mit den Monaten
Private Const gZeileProj1 As Long = 12 'Zeile mit 1. Projekt
Private Const gSpalteTotal As Long = 88 'Spalte C - Eingabespalte mit Total
Private Const gSpalteJan1 As Long = 90 'Spalte E - Einagbespalte 1. Januar-Monat
Private Const iStufen As Integer = 9 'Anzahl Gliederungsstufen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngZeile1 As Long, lngZeile2 As Long, lngZeile As Long
Dim rngZelle As Range
On Error GoTo Beenden
Select Case Target.Column
Case gSpalteTotal, Is >= gSpalteJan1
Select Case Target.Row
Case Is >= gZeileProj1
If Me.ToggleButton1 = False Then
For Each rngZelle In Target.Cells
If Not IsNumeric(rngZelle.Value) Then
MsgBox "Als Eingabe sind in diesem Zellbereich nur Zahlen zulässig!" & vbNewLine & _
"Bitte Eingabe korrigieren oder löschen!", , _
"Daten zu Projekt neu berechnen"
Exit Sub
End If
Next
'1. Zeile Projekt ermitteln
lngZeile = Target.Row
lngZeile1 = lngZeile
Do Until Me.Cells(lngZeile1 - 1, 1) = ""
lngZeile1 = lngZeile1 - 1
Loop
'Letzte Zeile Projekt ermitteln
lngZeile = Target.Row
lngZeile2 = lngZeile
Do Until Me.Cells(lngZeile2 + 1, 1) = ""
lngZeile2 = lngZeile2 + 1
Loop
Call AdditionenVBAProjekt(Zeile1:=lngZeile1, Zeile2:=lngZeile2)
End If
End Select
End Select
Beenden:
With Err
Select Case .Number
Case 0 'alles OK
Case 13
MsgBox "#NV! (PSP-Element) - Bitte zuerst die Projektstruktur definieren damit Werte  _
summiert werden können.", vbInformation + vbOKOnly, "Prüfung vollständige Projektstruktur"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbInformation + vbOKOnly, "Makro: Worksheet_Change"
End Select
End With
End Sub
Für jeden noch so kleinen Tip bin ich Euch dankbar!
Beste Grüsse
Dip

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

Betreff
Datum
Anwender
Anzeige
AW: zwei Worksheet_Change kombinieren (fcs)
07.12.2013 04:00:46
fcs
Hallo Dip,
wenn ich das richtig verstanden habe, dann soll das 1. Makro in der Spalte C die Eingaben prüfen und ggf, anpassen.
Dann kann man im 2. Makro eine entsprechende Case Prüfung auf die Spalte 3 (=C) einbauenen.
Die im 1. Makro möglichen Fehler müssen dann zusätzlich in der Fehlerbehandlung abgefangen werden.
Gruß
Franz
Option Explicit
'Ereignismakro - Code unter dem Tabelenblatt
Private Const gZeileMonat As Long = 7 'Zeile mit den Monaten
Private Const gZeileProj1 As Long = 12 'Zeile mit 1. Projekt
Private Const gSpalteTotal As Long = 88 'Spalte C - Eingabespalte mit Total
Private Const gSpalteJan1 As Long = 90 'Spalte E - Einagbespalte 1. Januar-Monat
Private Const iStufen As Integer = 9 'Anzahl Gliederungsstufen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
Dim lngZeile1 As Long, lngZeile2 As Long, lngZeile As Long
Dim rngZelle As Range
On Error GoTo Beenden
Select Case Target.Column
Case 3 'Spalte C
If Target.Count = 1 Then
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal & ", " & newVal
End If
End If
End If
Application.EnableEvents = True
End If
End If
Case gSpalteTotal, Is >= gSpalteJan1
Select Case Target.Row
Case Is >= gZeileProj1
If Me.ToggleButton1 = False Then
For Each rngZelle In Target.Cells
If Not IsNumeric(rngZelle.Value) Then
MsgBox "Als Eingabe sind in diesem Zellbereich nur Zahlen zulässig!" _
& vbNewLine & "Bitte Eingabe korrigieren oder löschen!", , _
"Daten zu Projekt neu berechnen"
Exit Sub
End If
Next
'1. Zeile Projekt ermitteln
lngZeile = Target.Row
lngZeile1 = lngZeile
Do Until Me.Cells(lngZeile1 - 1, 1) = ""
lngZeile1 = lngZeile1 - 1
Loop
'Letzte Zeile Projekt ermitteln
lngZeile = Target.Row
lngZeile2 = lngZeile
Do Until Me.Cells(lngZeile2 + 1, 1) = ""
lngZeile2 = lngZeile2 + 1
Loop
Call AdditionenVBAProjekt(Zeile1:=lngZeile1, Zeile2:=lngZeile2)
End If
End Select
End Select
Beenden:
With Err
Select Case .Number
Case 0 'alles OK
Case 5, 1004
'5 - ungültiger Prozeduraufruf weil (Len(oldVal) - Len(newVal) - 2) 

Anzeige
AW: zwei Worksheet_Change kombinieren (fcs)
10.12.2013 10:45:59
Dip
Guten Tag Franz,
Danke für Deine Unterstützung!
Da ich mich erst seit neuem mit VBA befasse, ist mir die Worksheet_Change Funktion noch nicht ganz geheuer... Ich dachte, ich könnte über den Range den zu prüfenden Bereich bei Änderungen angeben und somit die beiden Makros separat aufführen, scheint aber nicht der Fall zu sein..?
Gerne würde ich Deine Meinung als Profi zu folgendem Sachverhalten wissen:
Und zwar erstelle ich Planungsfile Template, welches von mehreren Leuten einzeln verwendet werden soll. Dieses Planungsfile beinhaltet auch Makros. Wenn ich nun Änderungen bei den Makros bzw. Spalten/Zeilen/Formeln im Sheet vornehmen möchte, müsste ich in jedem verteilten Planungsfile die Änderungen auch vornehmen. Wie sollte man diesbezüglich am Besten vorgehen bzw. vorbereiten, damit Änderungen bei den Makros bzw. im Sheet selber nur einmal durchgeführt werden müssen und die anderen Planungsfiles automatisch angepasst werden?
Danke für Deine Aufmerksamkeit und einen schönen Tag wünsche ich Dir!
Beste Grüsse
Dip

Anzeige
AW: zwei Worksheet_Change kombinieren (fcs)
11.12.2013 06:43:43
fcs
Hallo Dip,
ein Template zu aktualisieren und dann dafür zu sorgen dass die Anpassungen in bestehende Dateien bei den Anwendern übernommen werden, kann beliebig aufwendig werden.
Ein Weg:
Die Eingabedaten werden vom Anwender per speziellem Makro aus der alten in die neue Version übernommen.
Gruß
Franz

AW: zwei Worksheet_Change kombinieren (fcs)
14.12.2013 13:42:25
Dip
Hallo Franz,
Das wäre eine Möglichkeit!
Ich habe u.a. auch gehört, dass ganze über ein AddIn zu verwalten... Wäre das eine Option?
Betreffend dem Kalender, bin einfach nur beeindruckt!Ich werde es ausführlich testen und Dir wieder Feedback geben.
Vielen Dank für Deine wertvolle Unterstützung und wünsche Dir ein erholsames Weekend!
Beste Grüsse
Dip
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige