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

Zellen in Listen wechselseitig aktualisieren

Zellen in Listen wechselseitig aktualisieren
19.07.2007 16:17:00
Marcel
Hallo Excel-Forum,
ich habe im Archiv einen tollen Code von Gordon gefunden, der Zellen sich wechselseitig aktualisieren lässt:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$A$1"
Application.EnableEvents = False
Sheets(2).Range("B1").Value = Range("A1").Value
Application.EnableEvents = True
Case "$B$1"
Application.EnableEvents = False
Sheets(2).Range("A1").Value = Range("B1").Value
Application.EnableEvents = True
Case "$A$2"
Application.EnableEvents = False
Sheets(2).Range("B2").Value = Range("A2").Value
Application.EnableEvents = True
Case "$B$2"
Application.EnableEvents = False
Sheets(2).Range("A2").Value = Range("B2").Value
Application.EnableEvents = True
End Select
End Sub
Quelle: http://www. _
herber.de/forum/archiv/484to488/t484178.htm#484196


Ich verwende eine Liste mit Unternehmen jeweils in Tabelle1 (mit Performancezahlen in Spalten) und in Tabelle2 (mit Produkten in Spalten). Beide haben als letztes die Spalte "Auswahl". Hier kann der Nutzer ein Unternehmen manuell auswählen, in dem bei Doppelklick ein "x" in die Zelle eingetragen wird. Dieser Vorgang ist es, den ich gern in beiden Tabellen synchron haben möchte. Im Prinzip funktioniert das mit dem Code, aber da ich Listen verwende stehe ich vor folgenden Problemen:
1. Die Liste wird stetig erweitert, das Makro ist aber begrenzt auf die enthaltenen Case-Einträge. Das kann "man" sicherlich über eine Schleife dynamisch gestalten, ich habe leider keine Ahnung davon und bin nach stundenlangen experimentieren grandios gescheitert.
2. Sinn und Zweck dieser Liste ist es natürlich nach belieben zu sortiert und zu filtern. Aber auch das verträgt sich nicht mit den festen Zell-Bezügen im Makro-Code, da dann die Unternehmen in den Listen nicht mehr in den identischen Zeilen stehen. Der einzige miserable Lösungsansatz, der mir dazu einfällt, ist über .Find(WHAT:=Name der Firma) die richtige Zeile zu identifizieren und per Offset auf die richtige Zelle zuzugreifen. Aber was ist, wenn durch Filtern die Firma in einer der Listen ausgeblendet ist? Ein Nachteil wäre auch, dass wie zu Punkt1 bei einem neuen Unternehmen das Makro manuell angepasst werden müsste.
Ihr seht, die Lage scheint verzwickt. Vielleicht fällt einem von euch eine Lösung ein. Ich bin überfordert, was bei Excel/VBA aber noch keine Kunst ist.
Viele Grüße
Marcel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen in Listen wechselseitig aktualisieren
20.07.2007 08:04:19
fcs
Hallo marcel,
in der angehängten Datei hab ich ein kleines Beispiel eingebaut.
Falls das Filter in der anderen Tabelle aktiv ist, dann werden vor der Suche des Firmennamens alle Daten eingeblendet.
Ein neuer Firmenname wird nach Bestätigung auch jeweils in der anderen Liste am Ende eingetragen.
https://www.herber.de/bbs/user/44267.xls
Gruß
Franz

AW: Zellen in Listen wechselseitig aktualisieren
20.07.2007 08:56:25
Marcel
Hallo Franz,
das ist ja super! Dann setz ich mich mal mit Kompendium und Herber-CD ran, um deinen Code nachzuvollziehen. Ist ne Menge dabei, das ich so nicht kenne!
Vielen Dank
Marcel

Anzeige
AW: Zellen in Listen wechselseitig aktualisieren
20.07.2007 15:14:00
Marcel
Hallo nochmal,
ich hab versucht den Code von Franz auf meine Mappe anzupassen, allerdings ist da einiges zu hoch für mich. Das Makro von Franz um das X normal in die Auswahlspalte zu setzen funktioniert (es ist etwas anders als meins vorher), aber das wechselseitige Aktualisieren und die automatische Erweiterung der Liste will noch nicht. Ich habe versucht den Code nachzuvollziehen, aber es ist noch einiges im Dunklen. Fett markiert habe ich auf meine Arbeitsblätter angepasst.
Tabelle1 heißt "Auswahl Finanzdaten"
Liste geht von B7 bis F29
Zeile 7 = Überschriftzeile
Spalte B = Spalte mit Firmennamen
Spalte F = Auswahlspalte
Tabelle2 heißt "Auswahl Produkte"
Liste geht von B8 bis AW30
Zeile 8 = Überschriftzeile
Spalte B = Spalte mit Firmennamen
Spalte AW = Auswahlspalte

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim Firma As Variant, Eintrag As String, wksAwProd As Worksheet, Zelle As Range
Set wksAwProd = Worksheets("Auswahl Produkte")
 If Target.Row > 7 And Target.Cells.Count = 1 Then
Application.EnableEvents = False
 With wksAwProd
Select Case Target.Column
Case 5 'Eintrag X oder ""
Eintrag = Target.Value
Firma = Me.Cells(Target.Row, 2).Value    
'Eintrag in Tabelle Produkte aktualisieren
If .FilterMode = True Then .ShowAllData 'Anzeige aller Daten, da sonst Fehler möglich
 Set Zelle = .Columns(2).Find(What:=Firma, LookIn:=xlValues, lookat:=xlWhole)  
If Zelle Is Nothing Then
MsgBox("Unternehmen " & Firma & " neu anlegen?", vbYesNo) = vbYes Then
.Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0) = Firma
End If
Else
 .Cells(Zelle.Row, 49).Value = Eintrag 
End If
Case 1 'Neuer geänderter Firmenname in Spalte 1
Firma = Target.Value
If MsgBox("Unternehmen " & Firma & " neu anlegen?", vbYesNo) = vbYes Then
Set Zelle = .Columns(2).Find(What:=Firma, LookIn:=xlValues, lookat:=xlWhole)  _
If Zelle Is Nothing Then
If .FilterMode = True Then .ShowAllData 'Anzeige aller Daten, da sonst Fehler mö _
glich
 .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0) = Firma
End If
End If
End Select
End With
Application.EnableEvents = True
End If
End Sub


Tabelle2 hab ich hier nicht gepostet, habe ich aber nach dem gleichen Prinzip angepasst. *Meiner Meinung nach* habe ich alles entscheidende verändert, dem scheint aber nicht so .Entschuldigt, wenn man mir das so vorkauen muss, aber ich steh noch ganz am Anfang mit VBA und mir fehlt das Verständnis. Muss ich noch was anpassen, oder habe ich einfach geschludert oder einen Fehler gemacht?
Liebe Grüße und ein schönes Wochenende
Marcel

Anzeige
AW: Zellen in Listen wechselseitig aktualisieren
21.07.2007 09:27:36
fcs
Hallo Marcel,
beim Anpassen hast du übersehen, dass auch die Zahlen in den Case-Zeilen entsprechend den anderen Spalten angepasst werden müssen.
In Tabelle "Auswahl Finanzdaten"
Case 5 wird zu Case 6 für Spalte F mit den X-Einträgen
Case 1 wird zu Case 2 für Spalte B mit den Firmennamen
In Tabelle "Auswahl Produkte"
Case 4 wird zu Case 49 für Spalte AW mit den X-Einträgen
Case 1 wird zu Case 2 für Spalte B mit den Firmennamen
Gruß
Franz

AW: Zellen in Listen wechselseitig aktualisieren
24.07.2007 08:37:00
Marcel
Hallo Franz,
fast schon peinlich. Nun gehts - DANKE!
Liebe Grüße
Marcel

AW: Zellen in Listen wechselseitig aktualisieren
24.07.2007 10:07:00
Marcel
Hallo nochmal,
langsam werd ich nervig, aber die .ShowAllData-Methode funktioniert nicht mehr. Ist der Filter in einer Liste aktiv, startet das Makro den "Firma xy nicht gefunden, neu anlegen?"-Teil statt den Filter aufzuheben und das "x" zu setzen. Daran hab ich aber eigentlich nichts geändert! Es gibt keine Fehlermeldung oder so, die Zeile scheint einfach übersprungen zu werden.
Liebe Grüße
Marcel

Anzeige
AW: Zellen in Listen wechselseitig aktualisieren
26.07.2007 09:47:00
Marcel
Hat sich erledigt, ich habe den Code einfach ein bissl umgebaut und aktiviere das Sheet vorher direkt. Da fasst sich zwar jeder Profi an den Kopf, aber nun gehts und das ist die Hauptsache! Danke für die tolle Unterstützung vorab!
Gruss
Marcel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige