Anzeige
Archiv - Navigation
1688to1692
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

Worksheet_Change

Worksheet_Change
06.05.2019 11:13:10
Franky
Guten Morgen zusammen,
gibt es eine Möglichkeit diese beiden Worksheet_Change zu verbinden,
oder die Möglichkeit auf zwei verschiedene Sheets zuzugreifen?

Private Sub (ByVal Target As Range)
Dim var As Variant
If Target.Column  1 Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
With Worksheets("CC")
If Not IsEmpty(Target) Then
var = Application.Match(Target.Value, .Columns(1), 0)
If Not IsError(var) Then
Target.Offset(0, 4).Value = .Cells(var, 3).Value
Target.Offset(0, 8).Value = .Cells(var, 5).Value
Target.Offset(0, 9).Value = .Cells(var, 6).Value
Target.Offset(0, 10).Value = .Cells(var, 7).Value
Target.Offset(0, 11).Value = .Cells(var, 8).Value
Target.Offset(0, 12).Value = .Cells(var, 10).Value
Target.Offset(0, 13).Value = .Cells(var, 9).Value
Target.Offset(0, 14).Value = .Cells(var, 11).Value
End If
Else
Range(Target, Target.Offset(0, 17)).ClearContents
End If
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Variant
If Target.Column 5 Then Exit Sub
If Target.Cells.Count > 5 Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
With Worksheets("Test")
If Not IsEmpty(Target) Then
var = Application.Match(Target.Value, .Columns(1), 0)
If Not IsError(var) Then
Target.Offset(0, 1).Value = .Cells(var, 2).Value
Target.Offset(0, 2).Value = .Cells(var, 4).Value
Target.Offset(0, 3).Value = .Cells(var, 5).Value
End If
Else
Range(Target, Target.Offset(0, 7)).ClearContents
End If
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Wünsche Euch einen schöne Start in die neue Woche.
Gruß Frank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit Case
06.05.2019 11:38:00
hary
Moin
Da kannst du mit Case arbeiten, im Prinzip so. ungetestet.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Variant
Select Case Target.Column 'welche Spaltenummer
Case 1 '--SpalteA
With Worksheets("CC")
If Not IsEmpty(Target) Then
var = Application.Match(Target.Value, .Columns(1), 0)
If Not IsError(var) Then
Application.EnableEvents = False
Target.Offset(0, 4).Value = .Cells(var, 3).Value
Target.Offset(0, 8).Value = .Cells(var, 5).Value
Target.Offset(0, 9).Value = .Cells(var, 6).Value
Target.Offset(0, 10).Value = .Cells(var, 7).Value
Target.Offset(0, 11).Value = .Cells(var, 8).Value
Target.Offset(0, 12).Value = .Cells(var, 10).Value
Target.Offset(0, 13).Value = .Cells(var, 9).Value
Target.Offset(0, 14).Value = .Cells(var, 11).Value
End If
Else
Range(Target, Target.Offset(0, 17)).ClearContents
End If
End With
Case 5 '--SpalteE
If Target.Cells.Count > 5 Then Exit Sub
With Worksheets("Test")
If Not IsEmpty(Target) Then
var = Application.Match(Target.Value, .Columns(1), 0)
If Not IsError(var) Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = .Cells(var, 2).Value
Target.Offset(0, 2).Value = .Cells(var, 4).Value
Target.Offset(0, 3).Value = .Cells(var, 5).Value
End If
Else
Range(Target, Target.Offset(0, 7)).ClearContents
End If
End With
End Select
Application.EnableEvents = True
End Sub

gruss hary
Anzeige
AW: mit Case
06.05.2019 11:49:25
Franky
Hallo Hary,
danke für deine schnelle Antwort. Ich werde es testen und anschließend berichten.
Gruß Frank
AW: mit Case
06.05.2019 12:09:17
Franky
Hallo,
klappt leider nicht, bekomme den Laufzeitfehler 13, Typen unverträglich in dieser Zeile:
Target.Offset(0, 4).Value = .Cells(var, 3).Value
Gruß Frank
AW: bitte Bsp.-Mappe
06.05.2019 12:12:30
hary
Moin
Dann lad mal eine Bsp.-Mappe hoch.
gruss hary
AW: bitte Bsp.-Mappe
07.05.2019 06:50:10
hary
Moin
Wo sollen die Change Ereignisse wirken?
Tabelle CC ist leer!
Beschreib mal was du erreichen moechtest.
Kann nicht die gesamte Mappe ohne Fehler oeffnen, hab nur 2007.
gruss hary
Anzeige
AW: bitte Bsp.-Mappe
07.05.2019 10:20:02
Franky
Hallo Hary,
danke das du nochmals drüber geschaut hast.
Erreichen möchte ich das mit der Eingabe (über Makro)der Nummer in Spalte A mir Daten aus dem Reiter CC in verschieden Spalten eingetragen werden. Darunter ist auch eine Kundennummer (Spalte E) die mir dann die weitern Daten aus Reiter Test holt. Kurios ist wenn ich die Daten zu erstenmal einfüge,kommt der beschriebene Fehler. Nach dem speichern und Neustart funktioniert alles wie es soll, bis ich in Spalte A eine Zahl lösche.Dann erscheint der Fehler wieder. Ich hoffe das ich es einigermaßen verständlich erklären konnte.
Gruß Frank
Anzeige
AW: Fragen und Versuch
07.05.2019 11:47:01
hary
Moin
Du gibst in SpalteA eine Nr. ein. In welchem Blatt? Messe oder Blanko
Soll fuer alle Zellen SpalteA wirken?
Blatt CC ist leer!
Die Kundennummer waere in SpalteE der Tabelle CC ?
Dann wird aus Blatt CC eingetragen und die Kd.-Nummer aus SpalteE im Blatt Test in SpalteA gesucht und das passende eingetragen!?
Also beide Codes nacheinander ausfuehren und nicht nach haendischem aendern der SpalteE ?
Hier als Makro. Du gibst die Nummer in eine Zelle der SpalteA ein und startest das Makro
Sub Versuch()
Dim var As Variant, var2 As Variant
If ActiveCell.Column  1 Then Exit Sub
If ActiveCell.Cells.Count > 1 Then Exit Sub
With Worksheets("CC")
If Not IsEmpty(ActiveCell) Then
var = Application.Match(ActiveCell.Value, .Columns(1), 0)
If IsNumeric(var) Then
ActiveCell.Offset(0, 4).Value = .Cells(var, 3).Value
ActiveCell.Offset(0, 8).Value = .Cells(var, 5).Value
ActiveCell.Offset(0, 9).Value = .Cells(var, 6).Value
ActiveCell.Offset(0, 10).Value = .Cells(var, 7).Value
ActiveCell.Offset(0, 11).Value = .Cells(var, 8).Value
ActiveCell.Offset(0, 12).Value = .Cells(var, 10).Value
ActiveCell.Offset(0, 13).Value = .Cells(var, 9).Value
ActiveCell.Offset(0, 14).Value = .Cells(var, 11).Value
With Worksheets("Test")
var2 = Application.Match(ActiveCell.Offset(0, 8), .Columns(1), 0)
If IsNumeric(var2) Then
ActiveCell.Offset(0, 1).Value = .Cells(var2, 2).Value
ActiveCell.Offset(0, 2).Value = .Cells(var2, 4).Value
ActiveCell.Offset(0, 3).Value = .Cells(var2, 5).Value
End If
End With
End If
Else
Range(ActiveCell, ActiveCell.Offset(0, 17)).ClearContents
End If
End With
End Sub

Ist aber ungetestet, da Fragen offen sind.
gruss hary
Anzeige
AW: Fragen und Versuch
07.05.2019 12:46:31
Franky
Hallo Hary,
Der Code soll nachher in ca. 30 Reiter eingegeben werden. Da ist es egal ob Messe oder Blanko.
Die eingegeben Nummer (sagen wir mal in Messe Spalte A) steht auch in in Reiter CC, Spalte A, dort holt sie sich die Kundennummer aus Spalte C. Diverse andere Daten aus E-K und trägt diese in Reiter Messe ein. Die Kundennummer die nun in Reiter Messe Spalte E steht soll sich die restlichen Daten aus Reiter Test holen.
Wenn ich die Mappe runterlade ist CC voll. Das Makro meldet diesen Fehler: Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig. Ich lade zur Ansicht mal den Reiter CC mit hoch.
Gruß Frank
https://www.herber.de/bbs/user/129635.xlsx
Anzeige
AW:Versuch
08.05.2019 07:32:22
hary
Moin Frank
Sry, bin z.Z. nur Vormittags online.
Hier mal die Mappe nur mit den Blaettern CC/Test und Messe.
Musste in CC Inhalte rausnehmen wegen der UpLoadgroesse.
Du kannst aber Blaetter hinzufuegen.
Der Code steht in: DieseArbeitsmappe.
Code startet wenn du haendisch etwas in (hier Blatt "Messe")SpalteA eingibst.
Ausnahmeblaetter(kann erweitert werden) sind im Code auskommentiert.
https://www.herber.de/bbs/user/129652.xlsm
gruss hary
Bei deiner ersten Mappe kam bei mir Fehler bei der Darstellung.
Anzeige
AW: AW:Versuch
08.05.2019 11:28:51
Franky
Hallo Hary,
es läuft alles super. Musste nur noch einige Spalten anpassen.
Ich danke dir recht herzlich für deine schnelle, ausführliche und intensive Hilfe.
Werde es ab morgen im wahren Leben testen.
Gruß Frank
AW: gern geschehen, dann Thread zu owT
08.05.2019 11:47:55
hary
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige