Zellen bei Excel sollen immer identisch sein, egal welche ausgefüllt wird. Wie geht das?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

WIE werden die Haken gesetzt? Einfach als Eintrag in einer Zelle?

Falls ja, also z.B. ein x eingetragen wird oder die Schriftart der Spalte z.B. auf Wingdings gestellt ist und ein ü eingetragen wird (würde ich so machen) dann ist das prinzipielle Problem, dass in Excel in einer Zelle immer nur eine Formel ODER ein Wert stehen kann. Wenn Du in beiden Blättern Formel schreibst, um den jeweiligen Wert aus der anderen Zelle zu sehen (=Tabelle2!B1), dann hast Du zum einen einen Zirkelbezug, zum anderen überschreibst Du die eine Formel, wenn Du einen Wert einträgst. Mit dem Zirkelbezug kann man notfalls leben, es funktioniert trotzdem, aber wenn einmal ein Haken in der einen Tabelle gesetzt ist und wieder gelöscht wird, ist die Formel weg und beim wiederholten Setzen wird der Haken nicht in die andere Tabelle übertragen. Da DAS meiner Erfahrung nach kaum auszuschließen ist, lässt sich das Problem imho nicht mit Formeln, sondern nur mit einem Ereignismakro lösen:

Angenommen Du hast Tabelle1 und Tabelle 2 und die Haken als Werte in den Zellen B1:B100 der jeweiligen Tabelle stehen, dann mache, falls Makros bei Euch erlaubt sind, Folgendes:

Mach einen Rechtsklick auf den Tabellenreiter von Tabelle1 (unten, da wo z.B. Tabelle1 steht) und gehe dann auf "Code anzeigen...".

In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("B1:B100") '"B1:B100" anpassen
Dim Blatt As Worksheet
Set Blatt = Sheets("Tabelle2")  ' "Tabelle2" anpassen

If Not Intersect(Target, Bereich) Is Nothing Then
    On Error GoTo ErrorHandler
    Application.EnableEvents = False
    Blatt.Range(Target.Address) = Target.Value
ErrorHandler:  Application.EnableEvents = True
End If
End Sub

Entsprechendes machst Du mit Tabelle2:

Mach einen Rechtsklick auf den Tabellenreiter von Tabelle2 (unten, da wo z.B. Tabelle2 steht) und gehe dann auf "Code anzeigen...".

In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("B1:B100") '"B1:B100" anpassen
Dim Blatt As Worksheet
Set Blatt = Sheets("Tabelle1") ' "Tabelle1" anpassen

If Not Intersect(Target, Bereich) Is Nothing Then
   On Error GoTo ErrorHandler
   Application.EnableEvents = False
   Blatt.Range(Target.Address) = Target.Value
ErrorHandler: Application.EnableEvents = True
End If
End Sub

Die Datei musst Du danach aber als .xlsm speichern, und Makros zulassen.

Teste mal ausführlich. Klappt es?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

topmacuser 
Beitragsersteller
 27.03.2018, 10:54

Super! Deine Anleitung war perfekt! Hat alles geklappt. Echt toll, dass du dir so viel Zeit für mich genommen hast!

Eine kleine Frage habe ich noch: Wie passe ich die Range bei mehreren Spalten an? Also deine Formel soll insgesamt bei folgenden Zellen angewandt werden:

F21:F137

G21:G137

H21:H137

Hatte das so versucht: "F21:137;G21:G137;H21:H137", was aber leider nicht funktioniert. Wenn ich dann H21 ausfülle springt der sofort in den Code.

0
Oubyi, UserMod Light  27.03.2018, 14:01
@topmacuser

Das ist doch auch nur EIN Bereich:

Set Bereich = Range("F21:H137")

Allerdings verstehe ich nicht:

Wenn ich dann H21 ausfülle springt der sofort in den Code.

Das SOLL doch so sein, denn H21 ist doch im Bereich!?

1
topmacuser 
Beitragsersteller
 28.03.2018, 16:37
@Oubyi, UserMod Light

natürlich ... wie dumm von mir. Danke! Jetzt funktioniert alles tadellos.

mit dem "in den Code springen" meinte ich, dass sich das VBA-Fenster öffnet und ich auf einmal dort drinnen weitertippe, sobald ich eine Zelle des festgelegten Bereiches ausgewählt hatte. Aber das ist ja jetzt auch egal.

Alles ist jetzt, wie es soll. Danke!

0

Ohne Makros geht das über eine "CheckBox" für jedes Dokument. Diese werden mit einer gemeinsamen Zelle verbunden.

-----

Vorgehensweise

Dazu brauchst du den Bereich "Entwicklertools". Den musst du ggf. erst sichtbar machen - Anleitungen dazu gibt's im Internet, z. B. hier: https://support.office.com/de-de/article/Anzeigen-der-Registerkarte-Entwicklertools-E1192344-5E56-4D45-931B-E5FD9BEA2D45

Unter "Entwicklertools" klickst du auf "Entwurfsmodus" (falls das Symbol nicht schon hervorgehoben ist)

Dort klickst du auf "Einfügen", dann unter "Active-X-Steuerelemente" auf das Symbol mit dem "Tooltip-Text" "Kontrollkästchen (ActiveX-Steuerelement)" (obere Zeile, 3. von links). Jetzt kannst du ein Kontrollkästchen auf die Form zeichnen. Oder du machst einen Doppelklick auf das Symbol und verschiebst das neue Kontrollkästchen.

Noch im Entwurfsmodus lässt du dir die Eigenschaften anzeigen (wenn das "Eigenschaften"-Fenster nicht angezeigt wird, klickst du unter "Entwicklertools" auf "Eigenschaften").

Gib dem Kontrollkästchen eine angemessene Position und Größe (mit der Maus mittendrauf = verschieben, mit der Maus auf die "Ziehpunkte" = Größe ändern).

Im "Eigenschaften"-Fenster nimmst du den Text neben "Caption" heraus - die Beschriftung wird ja vom Dokumentnamen übernommen.

Neben "LinkedCell" gibst du eine Zelle an, die für beide Sprachversionen dieselbe ist. Diese kann auch in einer anderen Arbeitsmappe liegen.

Wenn die gemeinsam genutzte Mappe z. B. "gf_20180326_01a.xlsx" heißt, die Tabelle, die die Zustände aufnehmen soll, "Tabelle 1" und die bezogene Zeile die Zeile 2 ist, kommt bei "LinkedCell" hinein:

[gf_20180326_01a.xlsx]Tabelle1!$A$2

Diese Arbeitsmappe ("gf_20180326_01a.xlsx") muss zusätzlich geöffnet sein, deshalb ist es einfacher, beide Sprachversionen in derselben Tabelle zu haben. Dann reicht eine Angabe wie

TabelleZustände!$A$2

(Dumm nur, dass man das für jedes Kontrollkästchen einzeln machen muss. Oder man nimmt eben doch ein Makro, das die Kontrollkästchen bei Bedarf automatisch einfügt.)

-----

Vielleicht gibt es noch eine Möglichkeit, über die Datenüberprüfung zu gehen, aber da finde ich keine "Wahrheitswerte" (ja/nein, ein/aus, angehakt / nicht angehakt ...).


topmacuser 
Beitragsersteller
 27.03.2018, 13:15

Danke für deine Hilfe. Insgesamt wären das in meinem Fall über 3.000 Kästchen, die ich manuell setzen müsste. Daher habe ich lieber den Weg mit dem Makro gewählt.

0

Hallo,

da ich nicht sicher bin, ob dazu überhaupt etwas kommt, will ich dir mal antworten. "Sehr einfach" wird hier leider schwierig sein.

Du willst also, wenn in Datei 1 im Feld G22 ein x gesetzt wird, dass dieses auch in Datei 2 im Feld G22 automatisch gesetzt wird. Soweit wäre das kein Problem. Allerdings willst du auch, dass dies umgekehrt funktioniert, wenn in Datei 2 etwas erfasst würde.

Ab dem Punkt funktioniert das leider nicht mehr mit Formeln. Man müsste hierfür meiner Ansicht nach also ein Makro programmieren. Darin bin ich selbst eher Laie, daher habe ich hier nichts spontan parat für dich... aber ein Makro sollte man auch immer selbst verstehen, um eventuelle Änderungen daran dann eigenständig machen zu können.

Möglicherweise sind in der Firma aber auch Makro-Dateien generell geblockt...

LG, Chris


topmacuser 
Beitragsersteller
 26.03.2018, 14:22

Hallo Chris,

sowas habe ich mir schon gedacht und deswegen auch "VBA" als keyword hinterlegt. Macros funktionieren bei uns in der Firma auf jeden Fall. In meinem Beispiel befinden sich beide Tabellenblätter zudem im selben Dokument.

Das mit dem "Formel verstehen" stimmt natürlich. Ich denke aber für mich reicht es, wenn ich weiß, wo welche Platzhalter wie eingefügt werden müssen.

Vielleicht hat hier ja noch jemand eine Idee. Erst einmal danke für deine Hilfe!

0
Funfroc  26.03.2018, 14:29
@topmacuser

Hallo,

ok, auf die Keywords schaue ich nicht mehr, weil die leider oft von GF automatisch anhand des Textes vergeben werden... Glaubst nicht wie oft etwas bei Reisen drin ist, nur weil Amerika im Titel steht.

Zu deiner Datei. Ich nehme an, dass man das man hier über ein Worksheet_change-Ereignis abfragt, welche Zelle gerade geändert wurde, den Inhalt in einer Variable speichert und diese Variable dann einfach im anderen Tabellenblatt an gleicher Stelle ausgibt. Aber... wie gesagt, hab ich so noch nie selbst gemacht und tue mich auch schwer bei sowas.

Schau ggf. mal im Herber-Forum. Da finde ich häufiger Sachen, die ich für meine VBA-Projekte brauche und nur noch anpassen muss.

LG, Chris

2

Also Excel und mehrere gleichzeitige Nutzer ist glaube ich gar nicht möglich.

Wenn mehrere Nutzer die Datei zu unterschiedlichen Zeiten nutzen, ist es möglich.

Wenn es nun 2 Sparchig sein soll warum stellst du dann den Deutschen Namen nicht in Spalte A, den Englische Namen in Spalte B, und in Spalte C macht man dann das Kreuz.

Ansosten kann man es vielleicht mit einer "Wennfunktion" Dateiübergreifend machen. Funktioniert aber nur, wenn Datei 1 Bearbeitet wird und Datei 2 geschlossen ist. oder andersherum. Beide geöffnet geht nicht, da Excel am Anfang die Datenaktualisierung abfragt. Ebenfalls müssen die Daten im selben Verzeichnis liegen. Ich glaube über http geht das nicht.


Funfroc  26.03.2018, 15:40

Nur als Anmerkung: Gleichzeitig in einer Excel arbeiten geht mit Office 365.

0