Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Formeln klonen in Excel 2000

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:  Formeln klonen in Excel 2000 (1339 mal gelesen)
axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 24. Apr. 2006 10:02    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

Guten Tag

Ich bin Excel-Laie (Ausbildung by trial and error) und habe eine Aufgabe, zu der ich in den Excel-Büchern und im Netz bisher keine Lösung gefunden habe:

Eigentlich könnte man dem, was ich machen will "Formeln klonen" sagen:

In einer Tabelle 1 habe ich eine Formel, z.B. in Zelle B2 "=A1+A2".

Hat also A1 den Wert 1 und A2 den Wert 2, steht in B2 die 3.

Ich weiss, dass ich nun die Formel in B2 in eine Tabelle 2 verknüpfen kann und dass dann B2 auf Tabelle 2 auch 3 anzeigt.

Doch ich möchte die Formel so verknüpfen, dass die Formel in B2 auf Tabelle 1 zwar in B2 auf Tabelle 2 geklont wird, dass die Formel dort dann aber die Zellen A1 und A2 VON TABELLE 2 zusammenrechnet (oder subtrahiert, wenn ich später in der Quelltabelle 1 die Formel ändere).

Soweit das Problem.

Dass ich es mit einer Art von Klonen lösen will, hat damit zu tun, dass die Quelltabelle 1 sozusagen die Mastertabelle sein soll, auf der ich immer wieder Formeln versuchsweise verändern will (Im Sinn von was-wäre-wenn).
So gibt es über 100 Zieltabellen (Tabelle 2 bis ...), die die verknüpften Formeln aus den Feldern der Mastertabelle übernehmen sollen, aber dann mit diesen Formeln die Daten, die in der EIGENEN Tabelle stehen, berechnen sollen.

In den Excel-Handbüchern steht: dass verknüpfte Formeln in einer Zieltabelle immer die Zellen der Quelltabelle berechnen. Gibt es eine Lösung, dass die Veränderung einer Formel in einer Quelltabelle von der damit verknüpften Formel auf Zieltabellen übernommen wird, diese Formel dann aber die Berechnung mit den eigenen Daten auf der jeweiligen Zieltabelle durchführt?

Herzlichen Dank, wenn jemand mir hier weiterhelfen kann. Er/Sie würde mir helfen, eine längere Suchaktion zu beenden.

MfG Axis

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 24. Apr. 2006 11:15    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 axis 10 Unities + Antwort hilfreich

Hi und herzlich willkommen auf cad.de !

Zu deinem Problem: Was hältst du davon das Tabellenblatt zu kopieren ?

Da steht dann in jeder neuen Tabelle dasselbe drinnen wie in der Master-Tabelle und jede Formel bezieht sich auf das eigene Blatt.

------------------
Grüsse

Thomas

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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6

erstellt am: 24. Apr. 2006 11:20    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 axis 10 Unities + Antwort hilfreich

Tach auch!

Also, wenn Du ein Makro benutzen darfst, dann sieht der Code so aus:

Private Sub Worksheet_Activate()
  Sheets(2).Cells(2, 2) = Sheets(1).Cells(2, 2).Formula
End Sub

Füge diesen Text in Dein Tabellenblatt ein, in dem die Formeln übernommen werden sollen. Aber Achtung: jedesmal, wenn du das Blatt aufrufst, werden die Formeln übernommen. Kann also lange dauern (je nach Anzahl) und möglicherweise auch Formeln überschreiben, die nicht überschrieben werden sollen. Wenn Du das eleganter machen willst, dann versuch das über Buttons und Auswahlfelder zu gestalten.

Mfg
okl

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

axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 24. Apr. 2006 12:22    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

Herzlichen Dank für die Anleitungen, okl und Thomas

Wahrscheinlich ist die Makro-Anleitung von okl der richtige Weg. (Beim reinen Kopieren des Tabellenblattes, wie von Thomas vorgeschlagen, ändert das ja später nichts mehr am kopierten Tabellenblatt, wenn ich in der OriginalTabelle1 eine Formel in einer Zelle ändere. Es ist aber die eigentliche Absicht, dass ich immer wieder am Original Formeln ändern kann und die Kopien berechnen dann mit den geänderten (und geklonten) Formeln IHRE eigenen Daten neu).

Excel-Makro ist leider ein noch neues Feld für mich, aber ich werd mich reinknien.

Einen ersten Versuch gemacht hab ich mit dem Code:

Sub formelnklonenversuch3()
' formelnklonenversuch3 Makro
' Tastenkombination: Strg+m

  Sheets(Tabelle2).Cells(B2) = Sheets(Tabelle1).Cells(B2).Formula
End Sub

Zuerst gab ich den Code allerdings genau so ein, wie okl ihn aufgezeichnet hast, dann kam aber beim Ausführen die Fehlermeldung "Laufzeitfehler 13, Typen unverträglich".

Dann habe ich den Code "intuitiv" abgeändert, weil ich die Zellennumerierungsform A1 habe. Aber es kommt immer noch die gleiche Fehlermeldung.

Also werd ich weiter probieren.

Schon mal herzlichen Dank für diese neue Fährte - sie könnte ja die Lösung bringen. Und wenn dem Profi mit einem Blick klar ist, was ich als Makro-Neuling am Code falsch notiert habe, bin ich für einen Hint dankbar.

Gruss
axis

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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6

erstellt am: 24. Apr. 2006 12:48    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 axis 10 Unities + Antwort hilfreich

Hallo!

Sheets(x): x muss entweder der Name als String sein (zB "Tabelle1") oder der Index (zB 1; ohne "). Daher kommt der Laufzeitfehler. Dann die Notation der Zellen: cells(Rowindex, Columnindex) => Zelle A1 = cells(1,1), Zelle B1 = (1,2). Kannst auch über Range arbeiten, würde ich aber nicht unbedingt zum Einstieg empfehlen.
In Deinem Fall zB. Sheets("Tabelle2").cells(2.2) = Sheets("Tabelle2").cells(2,2).Formula
Bei Fragen : fragen!!!!

Schüs


Blödfug, sorry! Muss natürlich Sheets("Tabelle2").cells(2.2) = Sheets("Tabelle1").cells(2,2).Formula heißen

[Diese Nachricht wurde von okl am 24. Apr. 2006 editiert.]

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

Tjobe
Mitglied
Angestellter Konstruktion


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

Beiträge: 267
Registriert: 26.06.2002

erstellt am: 24. Apr. 2006 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 Nur für axis 10 Unities + Antwort hilfreich

Hallo Axis,

wir hatten das Problem auch einmal im Bereich Kalkulation.
Im laufenden Kalkulationsprozess gab dann immer wieder Änderungen im Bereich der Material- und Lohnwerte,..., wodurch immer wieder alles durchgerechnet werden musste.

Die Lösung war dann ein Übersichtsblatt, auf dem alle Artikel mit zugehörigen Werten (Bezeichnung, Material, Zeit,...) eingetragen wurden (übersichtlich, da auf einem Blatt beschränkt) und es gab das Kalkulationsblatt, auf dem die Werte einzusetzen waren, um den Endpreis zu berechnen.
Das von einem Kollegen erstellte Makro ist dann durch jede Zeile des Übersichtsblattes gegangen, hat die Grundwerte in das Kalkulationsblatt kopiert, die Zwischen- und Endpreise wieder in das Übersichtsblatt kopiert und hat mit der nächsten Zeile (also dem nächsten Artikel) im Übersichtsblatt weitergemacht.
Alternativ konnte dann ebenfalls für jeden Artikel ein fertig ausgefülltes Kalkulationsblatt ausgedruckt werden.

Vorteilig ist, dass alle wesentlichen Werte auf einem Blatt stehen und nicht erst zusammengesucht werden mussten.
Vielleicht ist das noch ein weiterer Lösungsansatz.

Gruß Tjobe

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: 24. Apr. 2006 13:37    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 axis 10 Unities + Antwort hilfreich

Hallo axis,
einfaches, übersichtliches Makro ohne die Allgemeingültigkeit mit Workbook, Sheet und Cells:
wenn Du Dich nur in dieser mappe aufhälst, sollte das reichen für den Anfang

als Modul einfügen:

Code:
Public Sub Klonen()
Set rangeQ_B1 = Tabelle1.Range("B1")
Set rangeZ_B1 = Tabelle2.Range("B1")
   
    rangeZ_B1.Formula = rangeQ_B1.Formula

End Sub


Jetzt kannst Du wahlweise das Makro als Makro ausführen, oder Du fügst einen button ein, mit dem Du die Sub Klonen aufrufst.
Diese Variante bewirkt, daß die Formeln erst bei Bedarf aktualisiert werden.
Das Modul ist beliebig erweiterbar, mußt halt nur zusätzliche Bereiche (z.B. rangeQ_B17 und rangeZ_B17) definieren und die in der nächsten Zeile wieder zuweisen (rangeZ_B17.Formula = rangeQ_B17.Formula)

Gruß,
Nicole

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

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

Thomas Harmening
Moderator
Arbeiter ツ




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

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 24. Apr. 2006 16:12    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 axis 10 Unities + Antwort hilfreich


Auswertendie2.xls.txt

 
ohne Verwendung von Macros; ein weitere Möglichkeit wäre, =Auswerten() zu verwenden,

-only Bsp.-
deine zu berechnenden Formeln stehen alle in Spalte A
es wid ein relativer Bezug erstellt und als Name (einfügen/Name/definieren) definiert zb. Berechne =AUSWERTEN(Tabelle1!$A:$A)
in Spalten B-G stehen deine festen Parameterwerte - in der Spalte H steht dann =Berechne
Deine weiteren Blätter sind dann alle so aufgebaut das Spalte A sich auf dein 1 Blatt bezieht und in den Spalten B-G weiter deine verschiedenen festen Werte stehen.
in der Spalte H steht dann wiederum =Berechne

Funktion: es wird immer das ausgewertet, was relativbezogen in Spalte A des ersten Blatt steht, aber mit den jeweiligen Werten des aktiven Blattes...

hmm,hmmm,hmmm, ich hänge mal eine sheet an

aber siehe auch --> http://ww3.cad.de/foren/ubb/Forum226/HTML/000403.shtml#000003  beitrag von Rainberg!, dort wurde =AUSWERTEN() auch behandelt

------------------
Am Anfang war kein Licht - und Vater blickte Kalt
Miss Brauch

[Diese Nachricht wurde von Thomas Harmening am 24. Apr. 2006 editiert.]

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

axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 24. Apr. 2006 16: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

Kurzer Zwischenbericht,
schon mal mit einem GROSSEN DANKESCHÖN an die diversen Profis, die mir so spontan Ideen gegeben haben.

Die Beschreibung von Tjobe ist auch etwa das, wie ich es am Schluss brauchen möchte...

Das Makro von okl hat zu meiner grossen Freude schon mal in einer rudimentären Versuchsanordnung funktioniert und die richtigen Zellen zusammengerechnet. Es geht allerdings nur, wenn man die Arbeitsmappe auf die Zellennotation z1s1 umschaltet.

Das Makro von Nicole hätte mir sehr gefallen, v.a., weil ich dann bei der Zellennotation A1 hätte bleiben können, die ich mehr gewohnt bin. Doch obwohl ich das Makro genau so erstellt habe, passierte einfach nichts in der Tabelle2 in Zelle B1. (Kann gut sein, dass ich ausser dem Übernehmen des Makros noch etwas Anderes hätte tun sollen, was ich nicht weiss, was aber für Profis eine Selbstverständlichkeit ist, sodass sie gar nicht extra darauf hinweisen.)

So werde ich im Moment versuchen, das okl-Makro weiter auszubauen.

Und da Schüs geschrieben hat: bei Fragen: fragen!!!
erlaube ich mich, hier noch drei Fragen zur Benennung eines Bereichs in der Makrosprache zu stellen:

1. Wie ist die korrekte Schreibweise, wenn ich (im okl-Makro) einen ganzen Zellenbereich benennen will; heisst es dann z.B.
Sheets("Tabelle2").cells(2,2 : 3,3) = Sheets("Tabelle1").cells(2,2 : 3,3).Formula  ? 
Werden mit diesem Makrobefehl alle Formeln zwischen z2s2 und z3s3 in Tabelle1 in die identischen Zellen in Tabelle2 geklont?

2. Da das Befehlswort "Sheets" sowieso schon in der Mehrzahl steht: Kann man im Makro auch gleich mehrere Sheets erfassen und von ihm abarbeiten lassen, z.B.
(wenn ich die Sheets mit Zahlen versehe, statt ihnen Namen zu geben):
Sheets(2 : 20).cells(2,2 : 3,3) = Sheets(1).cells(2,2 : 3,3).Formula  ?
Überträgt der Makro dann alle Formel zwischen z2s2 und z3s3 in Sheet1 in die identischen Zellen in den Sheets 2 bis 20 ?

3. Kann ich diese Methode der Bereichsumschreibung auch verwenden, wenn es sich sogar um eine andere Excel-Datei handelt, wenn ich also die Quell-Tabellealso in einer separaten Datei ablege und für jede Zieldatei (mit den geklonten Formeln drin aus der Quelldatei) eine eigene Datei mache ? 
z.B. DateiB.Sheets("Tabelle1").cells(2.2) = DateiA.Sheets("Tabelle1").cells(2,2).Formula    ? 
Falls das überhaupt geht, wie würde die korrekte Parameterschreibweise lauten?


Herzlichen Dank für die bisherige Hilfe und allfällige Antworten auf meinen Fragen.

Axis


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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6

erstellt am: 24. Apr. 2006 17:39    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 axis 10 Unities + Antwort hilfreich

 
Zitat:
Und da Schüs geschrieben hat: bei Fragen: fragen!!!

Niedlich! "Schüs" war, wie man oben links sehen kann, nur der Abschluss meiner Antwort. Aber ich werde über eine Namensänderung nachdenken...

 

Zitat:
1. Wie ist die korrekte Schreibweise, wenn ich (im okl-Makro) einen ganzen Zellenbereich benennen will; heisst es dann z.B.
Sheets("Tabelle2").cells(2,2 : 3,3) = Sheets("Tabelle1").cells(2,2 : 3,3).Formula  ? 

Gibt zwar schönere Varianten, aber Du sollst ja was lernen...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Integer 'Spalten
    Dim j As Integer 'Zeilen
    Dim k As Integer 'Anzahl der Tabellblätter
    Dim sh As Sheets
    For k = 2 To Sheets.Count 'oder bis zu welchem Sheet auch immer
        For i = 1 To 100 'oder bis zu welcher Spalte auch immer
            For i = 1 To 100 'oder bis zu welcher Zeile auch immer
                Workbooks(AName).Sheets(k).Cells(j, i) = Workbooks(Dname).Sheets(1).Cells(j, i).Formula
            Next
        Next
    Next
End Sub

Zitat:
Werden mit diesem Makrobefehl alle Formeln zwischen z2s2 und z3s3 in Tabelle1 in die identischen Zellen in Tabelle2 geklont?

Ja.

 

Zitat:
2. Da das Befehlswort "Sheets" sowieso schon in der Mehrzahl steht: Kann man im Makro auch gleich mehrere Sheets erfassen und von ihm abarbeiten lassen, z.B.
(wenn ich die Sheets mit Zahlen versehe, statt ihnen Namen zu geben):
Sheets(2 : 20).cells(2,2 : 3,3) = Sheets(1).cells(2,2 : 3,3).Formula  ?

Nicht ganz, siehe oben.

 

Zitat:
Überträgt der Makro dann alle Formel zwischen z2s2 und z3s3 in Sheet1 in die identischen Zellen in den Sheets 2 bis 20 ?

Freilich.

 

Zitat:
3. Kann ich diese Methode der Bereichsumschreibung auch verwenden, wenn es sich sogar um eine andere Excel-Datei handelt, wenn ich also die Quell-Tabellealso in einer separaten Datei ablege und für jede Zieldatei (mit den geklonten Formeln drin aus der Quelldatei) eine eigene Datei mache ? 
z.B. DateiB.Sheets("Tabelle1").cells(2.2) = DateiA.Sheets("Tabelle1").cells(2,2).Formula    ? 
Falls das überhaupt geht, wie würde die korrekte Parameterschreibweise lauten?

der Rest bleibt gleich.

Viel Spaß, schüs, okl

Bei weiteren Fragen: fragen!!!!


Wieder die Hälfte vergessen: AName und DName stehen für Deine Dateien. Wenn die geöffnet sind, einfach nur den Dateinamen nehmen (zB. meineDatei.xls), wenn sie nicht geöffnet sind : c:\meinPfad\meineDatei.xls). Ich würde dir vorschlagen, dass du die vorher öffnest. Wenn Du die per Code öffnen möchtest: bitte nicht mehr heute, stell die Frage und Du kriegst morgen Deine Antwort

[Diese Nachricht wurde von okl am 24. Apr. 2006 editiert.]

[Diese Nachricht wurde von okl am 24. Apr. 2006 editiert.]

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

axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 25. Apr. 2006 00: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

Lieber okl

Danke für Deine unermüdliche Unterstützung.

Aber ich fürchte, ich hab mich zu weit vorgewagt (it's maybe too ambicious for my level of knowledge). Oder klappt das Ding nicht, weil ich noch mit Excel 2000 arbeite?

Es ist 0.50 Uhr und ich bin auf keinen grünen Zweig gekommen. Ich erwarte auch keine weitere Unterstützung, möchte Dir aber fairerweise noch erzählen, wo ich stecke, da ich Deine Hilfe heute sehr schätzte.

Ich habe den Makro zuerst wie von den Excel-Handbüchern empfohlen, in die versteckte persönliche Makro-Arbeitsmappe geschrieben. Hat nicht geklappt. Darum alles wieder gelöscht und neu aufgesetzt und diesmal für das Makro-Platzieren "neue Arbeitsmappe" ausgewählt. Klappte auch nicht. Wieder alles gelöscht und neu aufgesetzt. Beim xten Versuch habe ich für die Platzierung des Makro "Diese Arbeitsmappe" (versuchcopy8) ausgewählt und bin jetzt dabei geblieben. (Hat laut Handbuch den Vorteil, dass der Makro automatisch ausgeführt wird, wenn man die Arbeitsmappe öffnet).

Wenn ich jedoch das Makro-Dialogfenster aufrufe (unter Extras / Makro / Makros...), ist es immer leer. Erst wenn ich "run8" in die Kopfzeile des Dialogfensters eingebe, kann man den Makro ausführen oder bearbeiten etc. Keine Ahnung, wieso er nicht aufgelistet wird.(Weil ich ihn immer wieder eingeben musste, um ihn ausführen oder bearbeiten zu können habe ich irgendwann mal Deinen längeren Makro-Namen "Worksheet_SelectionChange" durch einen kürzeren, eben "run8" ersetzt.)

Eigentlich meine ich, dass ich nachvollziehen und im Grossen Ganzen verstehen kann, wie Dein Code die Aufgaben abarbeitet.

Da aber immer Fehlermeldungen kamen, habe ich nach und nach alle  Bereichserweiterungen, die Du mir aufgelistet hast, als Remarks markiert, bis am Schluss nur noch die eine Zeile mit der Aufgabe des Klonens EINER Zelle übrigblieb. Im versuchcopy8.xls siehst Du den Endzustand.

Aber immer noch kommt eine Fehlermeldung. Sie heisst: "das Argument ist nicht optional". Ich weiss nicht, was damit gemeint ist und der Debugger meldet auch keine Fehler, wenn ich ihn den Code untersuchen lasse, oder einen Kompilierungsversuch mache.

An diesem Punkt ist nun mein Latein definitiv zu Ende. Wie gesagt, wahrscheinlich ist diese Aufgabe doch zu anspruchsvoll für meinen (Un)Kenntnisstand.

Nochmals Danke für Deine Hilfe heute und einen schönen Gruss.

axis

PS: Ich hatte immer alle beteiligten Dateien offen, wie Du es vorgeschlagen hast.

PS2: Ich habe gerade die Mitteilung erhalten, dass man keine Excel-Dateien als Anhang mitsenden kann (Filetype not allowed). Somit also ohne Anhang.
 


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

axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 25. Apr. 2006 01: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

Nachtrag zu meiner Antwort an okl von vorhin:

Da ich eben die Excel-Datei "versuchcopy8.xls" nicht anhängen konnte, kannst Du ja auch den Code nicht einsehen, wie er nun am Schluss meiner Odyssee ist. Diesen somit hier noch rasch dazukopiert:

Private Sub run8(ByVal Target As Range)
    'Dim i As Integer 'Spalten
    'Dim j As Integer 'Zeilen
    'Dim k As Integer 'Anzahl der Tabellblätter
    'Dim sh As Sheets
    'For k = 2 To Sheets.Count 'oder bis zu welchem Sheet auch immer
        'For i = 2 To 3 'oder bis zu welcher Spalte auch immer
            'For j = 3 To 4 'oder bis zu welcher Zeile auch immer
                Workbooks(versuchcopy8.xls).Sheets("Tabelle1").Cells(3, 2) = Workbooks(versuchmaster9.xls).Sheets("Tabelle1").Cells(3, 2).Formula
            'Next
        'Next
    'Next
End Sub

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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6

erstellt am: 25. Apr. 2006 09:39    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 axis 10 Unities + Antwort hilfreich


axis.zip

 
Hallo!

Tut mir echt leid, dass es beio Dir nicht geklappt hat. Weiß auch nicht so richtig, warum. Hab Dir mal als Anhang ein einfaches Beispiel angehängt, welches Dir vielleicht doch noch helfen könnte und Du nicht komplett den Spaß am Programmieren verlierst!

Und Du weißt ja: bei Fragen: fragen!!!

Wiederschaun

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: 25. Apr. 2006 09:41    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 axis 10 Unities + Antwort hilfreich


VBA-Ansicht.JPG

 
Hallo Axis,

Zitat:
Wenn ich jedoch das Makro-Dialogfenster aufrufe (unter Extras / Makro / Makros...), ist es immer leer

Du mußt Makros als "Modul" schreiben, d.h. im Projektexplorer ein Modul einfügen und den Code da rein. Dann sollte mein Code auch auf dem 2. Tabellenblatt funktionieren. (Voraussetzung ist natürlich, das das Blatt auch Tabelle2 heißt)
Der Ansatz von okl ist natürlich toll, da da auch Erklärungen drin stecken.
Meine Sache war nur eine schnell-Lösung für kleine Hände und deshalb ziehe ich mich jetzt auch dezent zurück 
weiterhin viel Erfolg!!
Gruß,
Nicole

noch was:

Zitat:
Weil ich ihn immer wieder eingeben musste, um ihn ausführen oder bearbeiten zu können habe ich irgendwann mal Deinen längeren Makro-Namen "Worksheet_SelectionChange" durch einen kürzeren, eben "run8" ersetzt.

Ich meine, daß das nicht nur ein freier Name ist, sondern ein festgelegter, der sich auf ein Ereignis bezieht, nämlich daß die Auswahl (Selection) wechselt. Deshalb darf man diese vorgegebenen Namen nicht ändern. Die verschiedenen Ereignisse die passieren können siehst Du im VBA-Editor: guckst Du Bild:
das sind Gerüste, in die man ebenfalls einen Code eingeben kann, der dann ausgeführt wird, wenn dieses Ereignis stattfindet.

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

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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6

erstellt am: 25. Apr. 2006 09: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 axis 10 Unities + Antwort hilfreich

Hab den Fehler doch noch gefunden:

Übergabe der Variablen bzw. Werte. Musst Du Dir unbedingt mal anschauen. Es gibt eine sehr wichtige Konvention: Strings (=sind Texte, die der Compi nicht anders lesen kann als eine Folge von Zeichen ohne tieferen Sinn; zB. der Name eines Tabellenblattes) müssen in "" (Gänsefüßchen) geschrieben werden. Also: Workbooks("meineDatei.xls"). Sonst rallt unser Freund der Binärmeister das nicht. Nur Zahlformlate, Booleanwerte oder Variablennamen werden ohne "" übergeben (zB Sheets(2) oder cells(2, Spalte), wenn Du vorher Dim Spalte as Integer deklariert hast, sonst gibt's auch dabei Probleme.
Viel Spaß, okl

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

Thomas Harmening
Moderator
Arbeiter ツ




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

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 25. Apr. 2006 13:24    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 axis 10 Unities + Antwort hilfreich


Ref_vorlage_kopie.xls.txt

 
hmm,hmm,
klingt alles ein wenig abenteuerlich ;-)
vielleicht stellst du ja mal eine kleine Bsp-Mappe hoch.
Auf deinem Dateisystem an dein *xls-File ein .txt dranhängen, schon ist die Überprüfung der file extension beim upload gültig.

so richtig schlau bin ich nicht wirklich geworden aus dem vielem Text, der hier schon steht.
unter Umständen brauchst du ja keine 'geklonten' Formeln ;-)

Erstelle eine saubere Excelmappe mit Formeln.
Benenne in deinem Referenzblatt deine Zellen logisch.
zb. A1 kann auch Guthaben / B2 MWST /B3 SKONTO heissen
und Excel kann auch mit = GUTHABEN*MWST-SKONTO rechnen
Auf dem Berechnungsblatt (das aus einer Vorlage erstellt wird) werden Werte aus der Refsheet übernommen und wenn man Werte ändern will - die mit einer weiteren Spalte realisieren.
Man fragt eine weitere Zelle ab (in der der User eigene Werte eingeben kann) ala

Code:
=wenn(neuerwertMSTW<>"";Guthaben*neuerwertMSTW;Guthaben*MSTW)

Eine Weitere Möglichkeit wäre das Betrachen von Extras/Szenarien?

Die Refsheet sollte Refsheet (die sich auch als Externe Mappe ansprechen lässt) bleiben ;-) - ich befürchte, dass das Ganze ziemlich schnell crashen kann, gerade wenn man nicht fit in den Sheets und dem Macros dazu ist - Stichwort: Weiss man noch was man vor 3 Monaten mit dem Macros bewirkt hat...
& ich weiss nicht ob das so eine gute Idee, ist die gesamten Formeln aus dem Refsheet nachher über 100 Sheets laufen zu lassen... unterumständen will man ja Sheet49 und Sheet74 nicht ändern und in Sheet 80 nur A12,,, etc - i don't know - klingt ein wenig abenteuerlich ;-)
- Sind ein wenige meine Bedenken...

Das Einzige was ich mit Makros machen würde - Automation
- ein Export des 'Endresultates' save as new Sheet with value only.
- und das Duplizieren der Eingabevorlage
- und wenn wirklich Formeln aus dem Refsheet auf alle Sheets übertragen werden sollen, dann mit Auswahl bestimmter Zellen und der Auswahl alle oder Einzelner Sheets

Mappe enthält Macros:
kopiere Vorlage -> vorlage(xxx)
und
sicherne Aktuelles Blatt unter neuem Namen nur mit Werten und ohne Commandbutton

gruss Thomas

------------------
Am Anfang war kein Licht - und Vater blickte Kalt
Miss Brauch

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

axis
Mitglied
Kaufmann

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

Beiträge: 6
Registriert: 24.04.2006

erstellt am: 26. Apr. 2006 08:11    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

HERZLICHEN DANK

Das ist das erste Mal, dass ich Rat in einem solchen Forum suchte und das überwältigende Echo hat mich schlichtweg erschlagen.

Ich möchte allen, die mir mit ihren Rat- und Vorschlägen antworteten wirklich herzlich danken.

Nun muss ich aber erst mal alles für mich aussortieren und dazu lernen (ausserdem bin in nun auch erst mal einen Monat weg).

Denn als Excel-Laie habe ich ca gut die Hälfte der Infos in Euren Tipps verstanden, bei einem weiteren Drittel erahne ich, was gemeint ist, und ein paar Begriffe und Zusammenhänge sind mir schlicht noch fremd, da ich mich nie mit Makros und VBA beschäftigt habe (z.B. keine Ahnung, wie man einen Button herstellt, oder wie Module im Zusammenhang mit Excel-Tabellen zu verstehen sind und wie man da vorgehen muss.) Also muss ich erst mal die Schulbank drücken.

Ein bisschen weiss ich jetzt wie sich der Zauberlehrling gefühlt haben muss, als er die Geister rief.

Herzlichen Dank nochmals an Alle, die dem Zauberlehrling weitergeholfen haben. Ich habe auch viel gelernt bei diesem Abenteuer.

Axis

PS: Sicher werde ich erst mal mit den Codes weiterversuchen, die mir okl zuerst gesandt hatten, die haben, mindestens in dieser rudimentären Form bei mir funktioniert, also müssen die sich auch ausbauen lassen. (Für okl: der Tipp mit den "Anführungszeichen" für die Dateinamen hat übrigens die Fehlermeldung wegen dem nicht optionalen Argument nicht beeindrucht).


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