Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  3 Tabellen mit Makros vergleichen...

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  3 Tabellen mit Makros vergleichen... (4289 mal gelesen)
Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 20. Aug. 2007 14:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
ich habe 3 Tabellen die ich mit Makros vergleichen will, kann mir da jemand helfen?
Also in jeder der 3 Tabellen sind gleiche und ungleiche Zeilen und Spalten und wenn in einer Tabelle ein Wert geändert wird, sollen sich die anderen 2 Tabellen, wenn Zeilen und Spalten mit der ersten Tabelle gleich ist, anpassen...also irgenwie so....

if Vergleiche(Tabelle1,Spalte&Zeile mit (Tabelle2,Spalte&Zeile;Tabelle3,Spalte&Zeile )
dann (cange;WERTvon(Tabelle2&Tabelle3))

Weil ich garkeine Ahnung von Makros habe, ist dies natürlich totaler Humbug...wird jeder Programmierer einen Herzinfarkt bekommen (hoffentlich nicht  )

Gruß der Falschprogrammierer 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hajo_Zi
Mitglied
Projektant


Sehen Sie sich das Profil von Hajo_Zi an!   Senden Sie eine Private Message an Hajo_Zi  Schreiben Sie einen Gästebucheintrag für Hajo_Zi

Beiträge: 479
Registriert: 26.03.2003

AutoCad 2020 (ich arbeite in 2D)
Betriebssystem Windows 10

erstellt am: 20. Aug. 2007 15:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Unbekannter,

das liest so so als ob Du jede Zelle mit der gleichen Zelladresse in einer anderen Tabelle vergleichen willst?

Falls Du nur eine Spalte in der einen tabell mit einer Spalte in der anderen Tabelle vergleichen willst. Ist dies vielleicht eine Lösung.

Link zur Datei

Gruß Hajo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 20. Aug. 2007 16:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Firefox1982   und willkommen auf CAD.de!

Gegenfrage: Müssen es denn unbedingt Makros sein?

Wenn Du die beiden Mappen namens Mappe1 und Mappe2 geöffnet hast, kannst Du doch bequem verknüpfen/vergleichen? Also z.B. in Zelle A1 mit "=" anfangen und dann A1 in der anderen Mappe anklicken?! Dabei ist Vorsicht geboten - siehe hier. U.U. könnte auch die Formel ZELLE nützlich sein - siehe Excel-Hilfe.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 23. Aug. 2007 10:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo erstmal und danke für die Antworten,

...mmmmhhhh...weiß nicht genqau wie ich mein Problem genauer beschreiben soll, aber ich versuchs mal...

Tabelle 1

__________Länge______Breite_______Höhe
Version 1__1__________1___________1
Version 2__999________1___________1
Version 3 __1__________1___________1
Version 4 __1__________1___________1

Tabelle 2

_____________Tiefe_______Länge________Durchmesser
Version 1.1____2__________2____________2
Version 1.2____2__________2____________2
Version 2______2__________999__________2
Version 2.1____2__________2____________2


Wie man in den 2 Tabellen sieht sind die Zahlen 999 in der gleichen Zeile und Spalte...ich habe zwar 3 Tabellen aber dieses Beispiel soll mein Problem vereinfacht darstellen...also wenn man in Tabelle die 999 einträgt, sollen Makros die Zeilen und Spalten aus Tabelle 2 vergleichen und den Wert automatisch auf 999 ändern. Das gleiche soll aber auch Tabelle 1 tun, wenn ein Wert in Tabelle 2 geändert wird (in meinem Falle auch Tabelle 3) .

@Paulchen

Also die Lösung muss nicht umbedingt mit Makros geschrieben werden, habe aber erfahren, dass dies nur mit Makros zu Lösen sei....bin aber über neue Ideen sehr aufgeschlossen...


Gruß Flo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 23. Aug. 2007 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hey Flo,

Danke für's Verdeutlichen! Du kannst auch Bilder und Mappen anhängen - dann sparst Du Dir die (sicher sehr aufwändige) Formatierung  .

Zitat:
Wie man in den 2 Tabellen sieht sind die Zahlen 999 in der gleichen Zeile und Spalte
Nein - sind sie nicht! Sie sind vielleicht den gleichen Zeilen- und Spaltenüberschriften ("Version 2", "Länge") zugeordnet; so, wie Du es darstellst, sind es aber durchaus unterschiedliche Spalten (außer, Du hast in Tab. 1 'ne Spalte ausgeblendet)? Spielt zwar hier vermutlich keine große Rolle, aber naja... SCNR
Zitat:
Das gleiche soll aber auch Tabelle 1 tun, wenn ein Wert in Tabelle 2 geändert wird...
Jupp, das geht nur mit Makros - Du würdest ja sonst vorhandene Formeln überschreiben. Mit "Bordmitteln" - also ohne VBA - ginge es nur in eine Richtung - Du willst ja beide . Und es müssen auch tatsächlich drei Mappen sein - also sind unterschiedliche Register (Tabellen) in einer Datei ist keine Lösung? (Entschuldige die Frage, aber diese feine Unterscheidung kann durchaus eine Rolle spielen...)

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 23. Aug. 2007 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Frederik,

brauchst dich nicht für die Fragen zu entschuldigen, das zeigt ja nur dein Interesse...

Zitat:
Nein - sind sie nicht! Sie sind vielleicht den gleichen Zeilen- und Spaltenüberschriften ("Version 2", "Länge") zugeordnet; so, wie Du es darstellst, sind es aber durchaus unterschiedliche Spalten (außer, Du hast in Tab. 1 'ne Spalte ausgeblendet)? Spielt zwar hier vermutlich keine große Rolle, aber naja... SCNR 

Natürlich, das meinte ich doch.    Die 3 Tabellen sehen ja nicht exakt gleich aus, dann bräuchte ich sie ja nicht miteinander zu vergleichen...Sorry für das Missverständnis!!! Trotzdem haben die 3 Tabellen gleiche und ungleiche Spalten und Zeilen. Und deshalb brauche ich einen Makrocode, von dem ich leider keine Ahnung habe...

Zitat:
Und es müssen auch tatsächlich drei Mappen sein - also sind unterschiedliche Register (Tabellen) in einer Datei ist keine Lösung?

Also es kann auch eine Mappe (1 Datei) mit 3 Sheets sein...wäre sogar vom Vorteil...

Danke fürs Interesse 

Gruß Flo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 23. Aug. 2007 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Zitat:
Die 3 Tabellen sehen ja nicht exakt gleich aus, dann bräuchte ich sie ja nicht miteinander zu vergleichen
Hmja, da hast Du mal völlig Recht , hätte mir auffallen sollen ...

Denke schon, daß da mit VBA was zu machen wäre. Ich komm' bloß leider nicht dazu; vielleicht hat einer der Profis hier schon was "fertig" ?

Vergnügter Gruß,
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 23. Aug. 2007 17:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Flo,

ich habe diesen Dialog jetzt schon ein wenig verfolgt. Frederik hat mit seinen Anmerkungen völlig Recht - das Problem ist mit den nicht VBA Methoden von Excel nicht zu lösen. Du musst also auf Makros zurück greifen. Das birgt allerdings bei der Beschreibung, die Du gegeben hast, auch noch Probleme:

Nimm an Du hast 3 Tabellen, die alle eine Zelle haben, die die gleich Zuordnung hat (Version und Länge), wenn jetzt in einer Tabelle ein Wert verändert wird - woher soll das Makro wissen, welcher Wert geändert wurde und welcher noch alt ist. Außerdem besteht die Möglichkeit, dass an verschiedenen Stellen gleichzeitig geändert wird und dann kann das Makro gar nicht mehr wissen, was ist Original und was ist Fälschung.

Hast Du Dir hierzu schon einmal etwas überlegt?
Muss überhaupt in jeder von den drei Sheets geändert werden dürfen?

Du könntest ja evtl. auch gleiche Zeilen in zwei von den drei Tabellen zur Eingabe sperren und nur in einer Änderungen zulassen, die dann in die anderen übertragen werden. Übrigens: Das geht wieder mit den Standardhilfsmitteln von Excel, also auch ohne VBA.

Ich vermute, dass Du alle drei Sheets brauchst, um jeweils unterschiedliche Daten zu halten, aber ebenfalls gemeinsame Zuordnungen zu erlauben. Habe ich das richtig verstanden?

Gruß,
Ortrun

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 24. Aug. 2007 09:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ortrun,

ja ich habe 3 Tabellen die mehrere gleiche Spalten haben...also du hast ja ganz schön viele Fragen...ich hoffe dass ich sie alle beantworten kann.

Zitat:
wenn jetzt in einer Tabelle ein Wert verändert wird - woher soll das Makro wissen, welcher Wert geändert wurde und welcher noch alt ist

ich habe jetzt z.B. einen neuen Wert für die Spalte Länge und dort trage ich, egal in welcher Tabelle, den neuen Wert ein und die beiden anderen Tabellen müssen diesen (neuen) Wert annehmen, dass heisst dieser Wert der neu reingeschrieben wird ist der neue Wert.

Zitat:
Außerdem besteht die Möglichkeit, dass an verschiedenen Stellen gleichzeitig geändert wird und dann kann das Makro gar nicht mehr wissen, was ist Original und was ist Fälschung.

ich habe nicht gewusst, dass man in Excel in 2 Zeilen auf einmal etwas ändern kann!? Ich denke dass meinst du auch nicht oder!? Sobald ein Wert geändert wurde ist dieser Bearbeitet und der nächste Wert kann eingetragen werden...also muss das Makro die ganze Zeit im Hintergrund laufen, ich glaube dieses schreibt man mit (privat) bin mir aber nicht sicher, und die 3 Tabellen miteinander vergleichen und ändern...meintest du das?

Zitat:
Muss überhaupt in jeder von den drei Sheets geändert werden dürfen?

Ja es sollte in jedem sheet etwas ändern dürfen...das heisst man braucht 1 Makro pro sheet...denke ich. Es kann aber auch passieren, dass sich die eine oder andere Tabelle erweiter, 1 Zeile bzw. Spalte hinzukommt. Ich glaube schon alleine deshlab kann man keinen Verweis mit Formeln schreiben, denn wenn eine Spalte in der Mitte eingefügt wird, bringt das ja die ganze Tabelle durcheinander...

Zitat:
Du könntest ja evtl. auch gleiche Zeilen in zwei von den drei Tabellen zur Eingabe sperren und nur in einer Änderungen zulassen, die dann in die anderen übertragen werden.

mmmhhh....nein, es sollten keine Zeilen gesperrt werden, den in jeder Tabelle sollte man etwas ändern können...ich weiß es ist blöd, du fragst dich bestimmt warum ich nicht die Daten welche gleich sind zu einer Tabelle zusammen fasse....leider brauche ich 3 Tabellen in der gleiche Daten als auch ungleiche Daten beinhaltet sind, damit man immer einen direkten Vergleich hat.

@ Frederik...kein Problem hast mir trotzdem geholfen und vielleicht wirst du diesem Beitrag ja noch ein wenig folgen...

Gruß Flo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 24. Aug. 2007 11:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Flo,

das sind schwierige Bedingungen, die Du hier schaffst.

Prinzipiell läßt sich mit Excel ein Makro programmieren, dass in allen drei Sheets schaut, ob es Zellen mit denselben Überschriften findet. Wenn da dann noch zweimal der gleiche und einmal ein anderer Wert drin steht, dann kann man auch die bisher gleichen Zellen ändern. Das bedeutet aber, dass zwingend immer drei Werte vorhanden sein müssen. Wenn Du einen Wert, den Du global ändern willst nur in zwei Sheets drin hast, dann weiss das Makro nicht was alt und was neu ist - außer Du schaffst es, ihm noch zu sagen, welche Zelle gerade verändert worden ist. Anyway - das ist keine wirklich einfache Aufgabe (zumindest mit Deinen Einschränkungen).

Zitat:
ich habe nicht gewusst, dass man in Excel in 2 Zeilen auf einmal etwas ändern kann!? Ich denke dass meinst du auch nicht oder!? Sobald ein Wert geändert wurde ist dieser Bearbeitet und der nächste Wert kann eingetragen werden...also muss das Makro die ganze Zeit im Hintergrund laufen, ich glaube dieses schreibt man mit (privat) bin mir aber nicht sicher, und die 3 Tabellen miteinander vergleichen und ändern...meintest du das?

Makros werden soweit ich sie bisher verwendet habe, gezielt gestartet um ganz bestimmte Aufgaben auszuführen. Also ich muss ganz ehrlich sagen, ob man mit Excel noch arbeiten kann, wenn ständig ein Makro im Hintergrund läuft, kann ich nicht sagen. Ob die Möglichkeit besteht, ein Makro so zu programmieren, dass es nur gestartet wird, wenn in einer Zelle etwas geändert worden ist, weiß ich so auf Anhieb auch nicht. Vielleicht kann zu dem Thema jemand etwas sagen, der da mehr Erfahrung hat. So im ersten Ansatz würde ich das erst mal lassen, da ich die Befürchtung hätte, dass die ganze Tabelle dann nicht mehr zu benutzen ist. Wenn das Makro also nicht ständig läuft können durchaus mehrere Zellen geändert werden, bevor jemand das Makro aktiviert. Leider muss eine Eingabe in einer Zelle ja auch nicht immer mit ENTER abgeschlossen werden, sonst könnte man ein Makro evtl. warten lassen, bis die ENTER Taste gedrückt worden ist. Da weiß ich im Moment keine Lösung für... Sorry!!!

Zitat:
mmmhhh....nein, es sollten keine Zeilen gesperrt werden, den in jeder Tabelle sollte man etwas ändern können...ich weiß es ist blöd, du fragst dich bestimmt warum ich nicht die Daten welche gleich sind zu einer Tabelle zusammen fasse....leider brauche ich 3 Tabellen in der gleiche Daten als auch ungleiche Daten beinhaltet sind, damit man immer einen direkten Vergleich hat.

Wäre es so schlimm, wenn du die gemeinsamen Daten in ein Blatt reinsteckst, in dem diese geändert werden können und in den anderne Blättern werden die aktuellen Daten dann nur angezeigt? Das wäre doch vielleicht eine Lösung, die praktikabel ist. Du kannst dann in jedem Blatt die dort spezifischen Daten ändern und hast noch ein weiteres in dem die globalen Daten gehalten werden. Lass es Dir vielleicht mal durch den Kopf gehen, ob das ein Weg wäre.

Gruß,
Ortrun

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 24. Aug. 2007 11:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ortrun,

ich glaube du hast mich falsch verstanden...oder ich dich...
also es soll nur die Überschrift und der Zeilenrand geprüft werden, in meinem Fall "Länge" und "Version2", es soll prüfen ob es diese Felder auch in den anderen Tabellen gibt. So nun ändere ich in diesem Feld, wo sich das Feld "Länge" mit dem Feld "Version2" schneidet, die Zahl von X auf 999...jetzt soll das Makro Arbeiten und prüfen. Gibts es nun z.B. "Länge" in Spalte "F" und "Version2" in Zeile 10, dann soll der Wert im Feld "F10" auf 999 geändert werden....
...also ich hab zwar keine von Makros, aber das hört sich doch nicht soooo schwierig an oder? Wenn es natürlich einfach wäre, würde ich keine Hilfe brauchen... ...es sind doch aber nur einfache Anweisungen.

Wenn Spalte&Zeile = Spalte&Zeile aus (Tabelle1 bzw. Tabelle2) dann ändere Wert......oder ist es wirklich komplizierter? Gerade wegen den sheets?

Will mich nicht über dich lächerlich machen, im Gegenteil!!! Ich denke nur dass es schwierigere Aufgaben gibt oder ich verstehe wirklich nichts von alle dem!!! 

Zitat:
Wäre es so schlimm, wenn du die gemeinsamen Daten in ein Blatt reinsteckst, in dem diese geändert werden können und in den anderne Blättern werden die aktuellen Daten dann nur angezeigt? Das wäre doch vielleicht eine Lösung, die praktikabel ist. Du kannst dann in jedem Blatt die dort spezifischen Daten ändern und hast noch ein weiteres in dem die globalen Daten gehalten werden. Lass es Dir vielleicht mal durch den Kopf gehen, ob das ein Weg wäre.


Ja das habe ich mir schonmal durch den Kopf gehen lassen...mit einem 4 sheet, indem alle Spalten drin sind, aber das hätte ich wiederum auch nur mit Formeln gelöst. =Tabelle1! <--- irgendwie so...
der Nachteil wäre dann aber, dass man die Tabellen nicht mehr erweitern kann. Schon aber dann nur nach unten oder nach rechts...oder wie siehst du das?

Vielen vielen Dank Ortrun...auch wenn du mir nicht weiterhelfen kannst bin ich dir sehr dankbar für deine Hilfe!!! 

Gruß der Verzweifelte 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 24. Aug. 2007 14:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich


Vergleiche3Mappen.jpg

 
Hallo Flo,

ich glaube nicht, dass wir prinzipiell aneinander vorbei reden. Ein Makro kann nur das tun, was Du in der Lage bis ihm zu sagen, was es tun soll. Ich beschreibe jetzt mal eine Konstellation, die mit Makro meineserachtens funktionieren würde (allerdings nicht vollautomatisch - wenn da jemand noch ein Lösung weiß, wäre ich für jeden Hinweis dankbar):

Zunächst erläutere ich meine Annahmen:
1) Jede Zelle, die Mittels des Makros bearbeitet werden soll, kommt in jedem der drei Tabellenblätter vor
2) Das Makro wird jedesmal gestartet, wenn eine Zelle verändert worden ist
3) Wenn das Makro 3 zueinander gehörende Zellen findet (drei identische Überschriften in allen Tabellenblättern), dann werden die aktuellen Zellwerte miteinander verglichen
4) Sind alle Zellwerte gleich: nichts tun
5) Sind alle Zellwerte verschieden: Fehlermeldung ausgeben - hier ist etwas nicht korrekt gelaufen
6) Wenn zwei Werte gleich ist und einer anders, dann werden alle Werte auf den einzelnen geändert

Wenn das dem entspricht, was Du möchtest, dann läßt sich das realisieren. Schau mal das Bild an und importier den Code und lass dann die sub checkValues laufen. Vielleicht ist das so, wie Du Dir das vorstellst - allerdings reagiert das nicht automatisch auf Eingaben!!! Wirst aber vermutlich noch die ein oder andere Anpassung machen müssen                             

Gruß,
Ortrun

P.S.: Ops - Bild vergessen - nachgeliefert... Die anderen Tabs sind erst mal leere Kopien des ersten Tabs ;-)

Code:
Sub checkValues()
Dim indX1, indY1, indX2, indY2, indX3, indY3 As Integer
Dim value1, value2, value3, valueX, valueY, t As Variant

indX1 = 0 'Spaltenoffset für erstes Tabellenblatt
indY1 = 0 'Zeilenoffset für erstes Tabellenblatt
indX2 = 0 'Spaltenoffset für zweites Tabellenblatt
indY2 = 0 'Zeilenoffset für zweites Tabellenblatt
indX3 = 0 'Spaltenoffset für zweites Tabellenblatt
indY3 = 0 'Zeilenoffset für erstes Tabellenblatt

Sheets("Tabelle1").Activate
Sheets("Tabelle1").Range("B1").Activate
ActiveCell.Offset(0, indX1).Activate
valueX = ActiveCell.value

Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
    indY1 = 0 'Zeilenoffset für erstes Tabellenblatt
    Sheets("Tabelle1").Activate
    Sheets("Tabelle1").Range("A2").Activate
    ActiveCell.Offset(indY1, 0).Activate
    valueY = ActiveCell.value
   
    Do While ActiveCell.value <> ""    ' Schleife für Zeilenindex
        indX2 = findIndexX("Tabelle2", valueX)
       
        If indX2 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indY2 = findIndexY("Tabelle2", valueY)
       
        If indY2 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indX3 = findIndexX("Tabelle3", valueX)
       
        If indX3 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indY3 = findIndexY("Tabelle3", valueY)
       
        If indY3 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        ' hole Werte und vergleiche
        value1 = getV("Tabelle1", indX1, indY1)
        value2 = getV("Tabelle2", indX2, indY2)
        value3 = getV("Tabelle3", indX3, indY3)
       
        If ((value1 <> value2) _
                And (value1 <> value3) _
                And (value2 <> value3)) Then
            Exit Do
        End If
       
        If value1 = value2 Then
            ' neuer Wert ist drittes Blatt
            t = setV("Tabelle1", indX1, indY1, value3)
            t = setV("Tabelle2", indX2, indY2, value3)
        ElseIf value1 = value3 Then
            ' neuer Wert ist zweites Blatt
            t = setV("Tabelle1", indX1, indY1, value2)
            t = setV("Tabelle3", indX3, indY3, value2)
        ElseIf value2 = value3 Then
            ' neuer Wert ist erstes Blatt
            t = setV("Tabelle2", indX2, indY2, value1)
            t = setV("Tabelle3", indX3, indY3, value1)
        End If
       
        indY1 = indY1 + 1
        Sheets("Tabelle1").Activate
        Sheets("Tabelle1").Range("A2").Activate
        ActiveCell.Offset(indY1, 0).Activate
        valueY = ActiveCell.value
    Loop
   
    indX1 = indX1 + 1
    Sheets("Tabelle1").Activate
    Sheets("Tabelle1").Range("B1").Activate
    ActiveCell.Offset(0, indX1).Activate
    valueX = ActiveCell.value
Loop
End Sub

Function findIndexX(ByVal s As String, ByVal value As Variant) As Integer
Dim ind As Integer

    Sheets(s).Activate
    Sheets(s).Range("B1").Activate
    ActiveCell.Offset(0, ind).Activate
   
    Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
        If ActiveCell.value = value Then
            findIndexX = ind
            Exit Function
        End If
       
        ind = ind + 1
        Sheets(s).Activate
        Sheets(s).Range("B1").Activate
        ActiveCell.Offset(0, ind).Activate
    Loop
   
    findIndexX = -1
End Function

Function findIndexY(ByVal s As String, ByVal value As Variant) As Integer
Dim ind As Integer

    Sheets(s).Activate
    Sheets(s).Range("A2").Activate
    ActiveCell.Offset(ind, 0).Activate
   
    Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
        If ActiveCell.value = value Then
            findIndexY = ind
            Exit Function
        End If
       
        ind = ind + 1
        Sheets(s).Activate
        Sheets(s).Range("A2").Activate
        ActiveCell.Offset(ind, 0).Activate
    Loop
   
    findIndexY = -1
End Function

Function getV(ByVal s As String, ByVal indX As Integer, ByVal indY As Integer) As Variant
    Sheets(s).Activate
    Sheets(s).Range("A1").Activate
    ActiveCell.Offset(indY + 1, indX + 1).Activate
    getV = ActiveCell.value
End Function

Function setV(ByVal s As String, ByVal indX As Integer, ByVal indY As Integer, ByVal value As Variant) As Variant
    Sheets(s).Activate
    Sheets(s).Range("A1").Activate
    ActiveCell.Offset(indY + 1, indX + 1).Activate
    ActiveCell.value = value
   
    setV = value
End Function


[Diese Nachricht wurde von LaBonita am 24. Aug. 2007 editiert.]

und gleich noch die Tippfehler korrigiert...

[Diese Nachricht wurde von LaBonita am 24. Aug. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 24. Aug. 2007 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wow super danke es tut sich was...
leider aber nicht das was ich genau wollte...

Zitat:
1) Jede Zelle, die Mittels des Makros bearbeitet werden soll, kommt in jedem der drei Tabellenblätter vor

nein, jede Zelle die bearbeitet werden soll, muss mindestens in 2 Tabellenblätter vorkommen, also natürlich in dem welches gerade bearbeitet wird und in mindestens einem der 2 anderen Tabellen...

Zitat:
2) Das Makro wird jedesmal gestartet, wenn eine Zelle verändert worden ist

Ja...

Zitat:
3) Wenn das Makro 3 zueinander gehörende Zellen findet (drei identische Überschriften in allen Tabellenblättern), dann werden die aktuellen Zellwerte miteinander verglichen

nein...ist das nicht ähnlich wie bei dem 1. Punkt? Es müssen ausschliesslich 2 Tabellen verglichen werden, denn sonst Stopt das Makro sobald es keine 3 übereinstimmenden Überschriften gibt. Aber ich habe eine Tabelle da gibt es Version1, Version2, Version3, Version4 in der nächsten habe ich Version1, Verion2, aber in der anderen habe ich wiederum Version2, Version3...wie du hier siehst Habe ich Version1 nur in 2 Tabellen, trotzdem soll die andere Tabelle den neuen Wert übernehmen...

Zitat:
4) Sind alle Zellwerte gleich: nichts tun

mmmhhh...denke schon 

Zitat:
5) Sind alle Zellwerte verschieden: Fehlermeldung ausgeben - hier ist etwas nicht korrekt gelaufen

was heisst alle verschieden? Der Wert welcher gerade geschrieben wurde, soll in den 2 anderen Tabellen eingebaut werden, sofern mindestens 1 der anderen Tabellen die gleiche Spalte hat. Egal was drin stand...

Zitat:
6) Wenn zwei Werte gleich ist und einer anders, dann werden alle Werte auf den einzelnen geändert

ich denke die Antwort steckt in der Antwort von Punkt 5...

Also ich denke ich Verstehe jetzt warum dieses Makro so schwierig ist...das Makro überpfrüft gleichzeitig 3 Tabellen, wobei es nicht weiß welches die aktuelle Version ist...ich denke das kann man nur lösen indem man 3 Makros für jeweils 1 Tabelle schreibt, den für jedes Tabellenbezogene Makro ist die Tabelle welche gerade offen ist, die aktuelle Tabelle....also hat man 3 Makros mit dem gleichen Code, nur muss man von Tabelle zu Tabelle die Priorität ändern...in Tabelle1 soll nur Tabelle1 mit Tabelle2 und Tabelle3 geprüft werden, nicht Tabelle2 mit Tabelle3. In Tabelle2 soll nur Tabelle2 mit Tabelle1 und Tabelle3 geprüft werden, nicht Tabelle1 mit Tabelle3. Tabelle 3 genauso

....Ohje ich glaub ich blick da selber net mehr durch!!!!     

Aber super Code, bin dir echt Dankbar....bin erst wieder am Mittwoch in diesem Forum und ich freu mich schon auf deine Antwort...also schönes We wünsch ich dir und allen die diesem Beitrag interessiert folgen.

Gruß Flo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 24. Aug. 2007 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Flo,

Zitat:
Also ich denke ich Verstehe jetzt warum dieses Makro so schwierig ist...das Makro überpfrüft gleichzeitig 3 Tabellen, wobei es nicht weiß welches die aktuelle Version ist...ich denke das kann man nur lösen indem man 3 Makros für jeweils 1 Tabelle schreibt, den für jedes Tabellenbezogene Makro ist die Tabelle welche gerade offen ist, die aktuelle Tabelle....also hat man 3 Makros mit dem gleichen Code, nur muss man von Tabelle zu Tabelle die Priorität ändern...in Tabelle1 soll nur Tabelle1 mit Tabelle2 und Tabelle3 geprüft werden, nicht Tabelle2 mit Tabelle3. In Tabelle2 soll nur Tabelle2 mit Tabelle1 und Tabelle3 geprüft werden, nicht Tabelle1 mit Tabelle3. Tabelle 3 genauso

Jetzt reden wir eine Sprache!!! Genau das ist das Problem, das ich die ganze Zeit versucht habe Dir zu erläutern. Die Subs und Funktionen, die ich Dir geschrieben habe, eignen sich aber auch, um drei Makros zu bauen, die Du dann wieder mit Buttons auf der entsprechenden Seite verbinden könntest, um sie direkt ansprechen zu können. Da gibt es glaube ich auch die Möglichkeit, zu prüfen, was das aktuelle Blatt (vermutlich mit ActualWorksheet oder so) ist und wenn es nicht das für das gewünschte Makro (Vergleich zwischen ActualWorksheet und dem im Makro verwendeten Worksheet) ist, kann man die Ausführung auch abbrechen.

Wenn Du diesen Weg gehen möchtest, dann probier mal aus, was Du brauchen kannst und viel Erfolg!!!

Gruß,
Ortrun

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 24. Aug. 2007 15:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo zusammen,

ich lese noch mit - ansonsten bin ich 'raus (weil überfordert ). Zu Ortruns Gedankengang:

Zitat:
Ob die Möglichkeit besteht, ein Makro so zu programmieren, dass es nur gestartet wird, wenn in einer [bestimmten?!] Zelle etwas geändert worden ist...
könnte dieser Beitrag helfen?! Allerdings sollten die Bedenken von LaBonita (xls wird langsam etc) ernst genommen werden.

Hm    Ich überlege gerade, ob es sich tatsächlich um ein inhaltliches Problem handelt? Wohl kaum; es dürfte doch reichen, wenn die Werte ein einziges Mal vorhanden sind?! Der Rest ist dann nur eine Frage der Darstellung.

So, und da ich definitiv am Fr. nachmittag zu langsam bin, hat sich das mit Flos und Ortruns Antwort überschnitten.

Es ist nicht Sinn und Zweck dieses Forums, nach dem Motto: "Ich sag' euch, was ich brauche, und jetzt macht mal bitte!" vorzugehen. Tips zu konkreten Fragen - Ja. Hilfestellung bei speziellen Problemen - Ja. Musterlösung stricken lassen - NEIN! Es gibt Menschen, die bestreiten damit ihren Lebensunterhalt . LaBonita gibt sich reichlich Mühe und investiert 'ne Menge Zeit; da Du von Makros "keine Ahnung" hast, finde ich es etwas dekadent, ohne eigenes Zutun Sonderwünsche zu äußern. Nimm es bitte nicht persönlich; andere lesen das hier evtl. auch und sollten nicht auf dumme Gedanken kommen .

Mein "finaler" Vorschlag:

Angenommen, Tab1 ist diejenige, welche "gepflegt" wird, die anderen beiden dienen nur zum "Nachschauen" (hier kann nichts geändert werden). Richte Dir Deine Zeilen und Spalten so ein, wie Du sie brauchst (und schieb' doch bitte mal 'ne kleine Beispielmappe 'rauf - einfach an Mappe.xls ein .txt anhängen, und ab) und schreib' einfach in Tab2 "=Tab1!A1" 'rein. Also bastle so 'ne Art "Muster" IST - SOLL?

Zitat:
Ja das habe ich mir schonmal durch den Kopf gehen lassen...mit einem 4 sheet, indem alle Spalten drin sind, aber das hätte ich wiederum auch nur mit Formeln gelöst. =Tabelle1! <--- irgendwie so...
der Nachteil wäre dann aber, dass man die Tabellen nicht mehr erweitern kann. Schon aber dann nur nach unten oder nach rechts...oder wie siehst du das?
Das geht - mit Zeilen/Spalten einfügen?!

Vielleicht kommst Du von dem Gedanken weg, drei Register bearbeiten und vergleichen zu wollen, d.h. Du müßtest Deine gedankliche Basis ändern. Manchmal führen verschiedene Wege zum Ziel, wie auch Dein Gedankengang und Ortruns Vorschlag bereits aufzeigen. Meine große Frage: Wofür brauchst Du das eigentlich (Ziel)?

Bin gespannt, was es denn nun wird. Nix für ungut, erholsames Wochende!
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 30. Aug. 2007 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Anhang1.JPG

 
Hallo La Bonita,

ich glaube ich habs...fast. Dein Code den du mir geschrieben hast ist sehr, sehr gut!!! Nur hast du über 10 Ecken gedacht (Kommt wahrscheinlich daher, dass du Mathematikerin bist!!!  )
Ich habe den Code überarbeitet, aber da ich "keine Ahnung" (sehr Richtig Paulchen  ) vom Programmieren habe, musste ich einfach alles austesten...also habe ich einen Teil aus deinem Code gelöscht und ihn ausgeführt und das immer wieder bis er soweit funktioniert. Das klappte auch ganz gut, nur habe ich jetzt einen kleinen Bug...ich will nicht unverschämt und aufdringlich sein, keineswegs!!!!

@Paulchen: ich habe mich in Foren bis zum nicht mehr funktionieren meiner Maus durcheklickt und nichts gefunden was mir bei meinem Problem helfen konnte!!! Ich bin allen überaus dankbar die mir bei meinem Problem helfen (besonders La Bonita!!!  & schmatz  ) wollen...ich zwinge niemanden mir zu helfen, alles ist Freiwillig wie du auch siehst Paulchen...ich wäre auch mit weniger überaus dankbar gewesen!!! Ich habe mir halt erhofft einen kleinen Ansatz von jemanden zu bekommen....ich hatte Glück und traf auf "La Bonita"!!! Sie hat mir einen kompletten Quelltext geschrieben. Ich weiß das, aber  ich habe das Nicht verlangt Paulchen!!!!

Also zu dem Bug:
Ich habe den Quellcode soweit verändert, dass er macht was ich will.
Er läuft weiter, auch wenn eine Spalte Tab1 und Tab2 und nicht in Tab3 enthalten ist.
Er läuft auch weiter, wenn ein Wert in Tab2 & Tab3 nicht übereinstimmt und wird überschrieben.
Wenn, aber die Überschrift z.B. nicht in Tab3 enthalten ist, wird die Spalte einfach in die erste Spalte geschrieben und wenn auch schon Werte drin stehen sollten, werden diese überschrieben...(siehe Anhang 1)

Dein geschriebener und von mir überarbeiteter Quelltext...oder von mir vergewaltigt...

Code:

Sub checkValues()
Dim indX1, indY1, indX2, indY2, indX3, indY3 As Integer
Dim value1, valueX, valueY, t As Variant
indX1 = 0 'Spaltenoffset für erstes Tabellenblatt
indY1 = 0 'Zeilenoffset für erstes Tabellenblatt
indX2 = 0 'Spaltenoffset für zweites Tabellenblatt
indY2 = 0 'Zeilenoffset für zweites Tabellenblatt
indX3 = 0 'Spaltenoffset für zweites Tabellenblatt
indY3 = 0 'Zeilenoffset für erstes Tabellenblatt

Sheets("Tabelle1").Activate
Sheets("Tabelle1").Range("B1").Activate
ActiveCell.Offset(0, indX1).Activate
valueX = ActiveCell.value

Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
    indY1 = 0 'Zeilenoffset für erstes Tabellenblatt
    Sheets("Tabelle1").Activate
    Sheets("Tabelle1").Range("A2").Activate
    ActiveCell.Offset(indY1, 0).Activate
    valueY = ActiveCell.value
   
    Do While ActiveCell.value <> ""    ' Schleife für Zeilenindex
        indX2 = findIndexX("Tabelle2", valueX)
       
        If indX2 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indY2 = findIndexY("Tabelle2", valueY)
       
        If indY2 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indX3 = findIndexX("Tabelle3", valueX)
       
        If indX3 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        indY3 = findIndexY("Tabelle3", valueY)
       
        If indY3 = -1 Then
            ' index nicht gefunden
            Exit Do
        End If
       
        ' hole Werte
        value1 = getV("Tabelle1", indX1, indY1)

        If value1 = value1 Then
            ' Werte in alle Blätter einsetzten
            t = setV("Tabelle2", indX2, indY2, value1)
            t = setV("Tabelle3", indX3, indY3, value1)
        End If
       
        indY1 = indY1 + 1
        Sheets("Tabelle1").Activate
        Sheets("Tabelle1").Range("A2").Activate
        ActiveCell.Offset(indY1, 0).Activate
        valueY = ActiveCell.value
    Loop
   
    indX1 = indX1 + 1
    Sheets("Tabelle1").Activate
    Sheets("Tabelle1").Range("B1").Activate
    ActiveCell.Offset(0, indX1).Activate
    valueX = ActiveCell.value
Loop
End Sub

Function findIndexX(ByVal s As String, ByVal value As Variant) As Integer
Dim ind As Integer

    Sheets(s).Activate
    Sheets(s).Range("B1").Activate
    ActiveCell.Offset(0, ind).Activate
   
    Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
        If ActiveCell.value = value Then
            findIndexX = ind
            Exit Function
        End If
       
        ind = ind + 1
        Sheets(s).Activate
        Sheets(s).Range("B1").Activate
        ActiveCell.Offset(0, ind).Activate
    Loop
   
End Function

Function findIndexY(ByVal s As String, ByVal value As Variant) As Integer
Dim ind As Integer

    Sheets(s).Activate
    Sheets(s).Range("A2").Activate
    ActiveCell.Offset(ind, 0).Activate
   
    Do While ActiveCell.value <> ""    ' Schleife für Spaltenindex
        If ActiveCell.value = value Then
            findIndexY = ind
            Exit Function
        End If
       
        ind = ind + 1
        Sheets(s).Activate
        Sheets(s).Range("A2").Activate
        ActiveCell.Offset(ind, 0).Activate
    Loop

End Function

Function getV(ByVal s As String, ByVal indX As Integer, ByVal indY As Integer) As Variant
    Sheets(s).Activate
    Sheets(s).Range("A1").Activate
    ActiveCell.Offset(indY + 1, indX + 1).Activate
    getV = ActiveCell.value
End Function

Function setV(ByVal s As String, ByVal indX As Integer, ByVal indY As Integer, ByVal value As Variant) As Variant
    Sheets(s).Activate
    Sheets(s).Range("A1").Activate
    ActiveCell.Offset(indY + 1, indX + 1).Activate
    ActiveCell.value = value
   
    setV = value
End Function


Wäre für einen Tipp über den Bug dankbar...

PS: @Paulchen: Ich bin Werkstudent in einer Firma und da ich mich für Excel Interessiere, habe ich mich dieser Aufgabe entgegengestellt...leider auch recht schnell fast Aufgegeben. Da man es vergessen kann in wenigen Tagen ein VBA Crak zu werden, musste ich ein Forum um Hilfe Bitten..(bin froh hier geladet zu sein!!!).Ich werde mich auch nicht mit Fremden Federn schmücken!!! Ich werde sagen, dass ich Hilfe bekommen habe und Foren dieser Art hochloben!!! Es bringt mir auch nichts zu sagen dass ich den Code geschrieben habe, denn dann erwartet man solches von mir und ich stehe bei der nächsten Aufgabe aufm Schlauch...

Gruß Flo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 30. Aug. 2007 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Flo,

scan Deinen Code mal nach dem folgenden Ausdruck:

Code:
value1 = value1

Der Ausdruck ist _immer_ wahr und stellt daher keine wirkliche Bedingung dar. Da solltest Du vermutlich was dran ändern. Ausserdem glaube ich, dass Du trotz Deiner Änderungen nicht alle Einträge bekommst, weil Du meine Abbruchkriterien drin gelassen hast (if ... = -1 then exit do). Da überspringt er Dir alle Einträge, die nicht in jedem Tabellenblatt drin sind. Hier solltest Du auch noch etwas ändern.

Viel Erfolg weiterhin.

Gruß,
LaBonita

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 30. Aug. 2007 17:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Soweit ich die Problemstellung verstanden habe, ginge das mit einer Ereignisüberwachung in jeder Tabelle, die so aussehen könnte (hier der Code für Tabelle1):

Code:
Private Sub Worksheet_Change(ByVal Wert As Range)
    hier = ActiveCell.Address
    Worksheets("Tabelle2").Range(hier) = Wert
    Worksheets("Tabelle3").Range(hier) = Wert
End Sub

Erläuterung:
Nach Änderung einer Zelle wird dieses Ereignis der obigen Prozedur aufgezeigt nebst Übergabe des neuen Zellinhalts in die Variable Wert. Daraufhin merkt sich die Prozedur die aktive Zelladresse in der Variable hier und überträgt den neuen Zellinhalt auf die beiden anderen Tabellen auf eine Zelle jeweils an gleicher Adresse.

Die ganze Sache ist super kurz und tut was sie soll. Falls das nicht der Aufgabenstellung entspricht, naja, dann hab zumindest ich was neues gelernt und ihr könnt vielleicht auch was daraus entnehmen.

[Diese Nachricht wurde von carsten-3m am 30. Aug. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 30. Aug. 2007 17:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

@carsten Komplett in allen Sheets getestet? so ähnlich hatte ich nämlich anfangs auch gedacht, aber wenn Du die in jeder Tabelle drin hast, kommst Du leider aus den Change-Ereignissen nicht mehr raus  und hängst Dich auf ;-)
Allerdings war mein code dazu bedeutend länger, ich weiß gar nicht mehr, was ich da so alles getippt hatte, habe es ja wg. NichtFunzen wieder gelöscht... vielleicht lag es auch an dem Restcode 

------------------
Gruß,
runkelruebe                         Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 30. Aug. 2007 17:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Nö, hab ich nur in der ersten Tabelle getestet. Und siehe da, Du hast Recht, die Klamotte hängt sich in permamenten Änderungen auf. Na gut, ich denk da noch mal drüber nach, morgen... 

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LaBonita
Mitglied
Dipl.-Math.


Sehen Sie sich das Profil von LaBonita an!   Senden Sie eine Private Message an LaBonita  Schreiben Sie einen Gästebucheintrag für LaBonita

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 30. Aug. 2007 18:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Hallo Carsten,

unabhängig vom Aufhängen hat Dein Lösungsvorschlag noch den Nachteil, dass in jedem Blatt die zusammen gehörenden Zellen denselben Range haben müssen. Nach umfangreichen Diskussionen mit Firefox1982 (Flo) hat sich jedoch heraus gestellt, dass es nicht in jedem Tabellenblatt eine Zelle mit denselben Indizes (Spalte und Zeile sind benannt) gibt und diese müssen erst recht nicht an derselben Stelle stehen. Aus diesem Grund wird das Ganze so kompliziert - Leider...

Gruß,
Ortrun

[Diese Nachricht wurde von LaBonita am 30. Aug. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 30. Aug. 2007 21:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Firefox1982 10 Unities + Antwort hilfreich

Nachdem ich mich jetzt doch eingemischt habe, hier mal meine Idee zum Thema.
Das hier in jedes Tabellenblatt: das klappt nämlich jetzt doch ;-)
Code:
Private Sub Worksheet_Change(ByVal target As Range)
Call Dyn(Cells(target.Row, 1).Value, Cells(1, target.Column).Value, target.Value, Me.Index)
End Sub

und das hier als Modul:
Code:
Option Explicit
Public Sub Dyn(strVersion As String, strParameter As String, strAenderung As String, Blatt As Integer)
Static flag As Boolean
Dim cell As Range
Dim bl As Integer, a As Integer, b As Integer, i As Integer, j As Integer

If flag = True Then Exit Sub
flag = True

For bl = 1 To Workbooks(1).Sheets.Count
    If bl <> Blatt Then
        Sheets(bl).Activate
        a = Sheets(bl).Cells(Rows.Count, 1).End(xlUp).Row
        b = Sheets(bl).Cells(1, Columns.Count).End(xlToLeft).Column
        For i = 2 To a
            For j = 2 To b
                Set cell = Sheets(bl).Cells(i, j)
                'cell.Interior.ColorIndex = 34
                If cell.Offset(-(cell.Row - 1), 0).Value = strParameter And cell.Offset(0, -(cell.Column - 1)).Value = strVersion Then cell.Value = strAenderung
            Next j
        Next i
    End If
Next bl
flag = False
Sheets(Blatt).Activate
End Sub



Nachteile des Ganzen:
Es macht die Datei natürlich unglaublich langsam array-Lösung fand ich jetzt noch komplizierter
Jede Eingabe in jedem Blatt wird gnadenlos bei gleicher Überschrift in Zeile 1 und Versions-Index in Spalte A in die anderen Blätter übertragen, kein Abgleich wie 2x selber Wert ist führend oder so..
Es sind sehr umständliche Elemente drin ;-)

Ich hoffe, es läuft, bitte um Rückmeldung.

[rredit] Unabhängig vom Spaß dieses Makros möchte ich übrigens betonen, dass ich eine andere Datenstruktur der Tabelle bevorzugen würde.
Ein Blatt als Eingabeblatt mit allen erforderlichen Einträgen, alle anderen warum die unbedingt sein müssen, weiß ich immer noch nicht? 'ne ordentliche Tabelle mit Filtern und Gruppierungen, zum Drucken vielleicht doch Seiteneinrichtungsmakros, ist auch übersichtlich, aber ich schweife ab Blätter dann mit Bezügen (Sverweis z.B.) [/rredit]

------------------
Gruß,
runkelruebe                        Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Firefox1982
Mitglied


Sehen Sie sich das Profil von Firefox1982 an!   Senden Sie eine Private Message an Firefox1982  Schreiben Sie einen Gästebucheintrag für Firefox1982

Beiträge: 8
Registriert: 20.08.2007

erstellt am: 31. Aug. 2007 12:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Man man, da hab ich was angerichtet...

@Ortrun

Ja danke für den Tipp, hatte es auch rausgenommen. Habe nur ausversehen die 1 Version angehängt...


@runkelrübe
Das ist es!!!! Und es funktioniert einwandfrei...Danke dir... ...Ortrun hat nur zu kompliziert gedacht, sonst hätte sie es auch hinbekommen...da bin ich mir sicher (schleim, schleim )!!!!!

und danke an alle, die mir geholfen haben!!!


Ich habe fertig 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz