Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

ein makro Makro für alles





Frage

Hallo, ich habe folgendes problem: ich habe eine tabelle in der ich verschiedene makros verwende. nun habe ich ein makro das zB bei zelle a1 liegt und einige sachen in den zellen rechts davon (b1,c1,etc.) anstellt. dieses makro möchte ich nun gerne auch auf die zeilen darunter anwenden, dabei ist mir egal, ob ich ein neues makro erstelle (und so auch einen neuen button) oder ob ich das vorherige makro weiternutzen kann (und dieses sich aus einer bestimmten zelle immer die gewünschten zeilen holt) problem bei dem neuen makro ist nur folgendes: da das makro eine reihe von dingen anstellen muss, ist der code sehr lang und ich habe 40 dieser operationen. daher ist es mir zu umsändlich das makro 40 mal neu aufzuzeichen bzw. die parameter in visual basic separat zu ändern. hinzu kommt dass ich pro zeile 3 makros habe und mir die arbeit (und am liebsten auch den speicherplatz) ersparen will und das in 3 "mastermakros" ;) machen will, die sich einfach aus ner zelle die bezüge raussuchen. ich hoffe ihr habt mein problem verstanden und könnt mir helfen thx darklord

Antwort 1 von .DUMMSCHWÄTZER

zellen markieren und 'Strg'+U


Antwort 2 von Darklord

wie meinste das genau?

Antwort 3 von Darklord

Wenn ich das mache, bekomme ich auch nur die kopierten makros, die sich aber immer noch auf die alten Zeilen beziehen, sie sollen sich aber dann auf die zeilen weiter unten beziehen (bestimmter Abstend, zb dann zeile 5, zeile 10, zeile 15, etc.)

Antwort 4 von DarkLord

so habe hier mal meinen code gepostet, damit ihr vielleicht wisst, was ich meine:
die 3 makros sollen kopiert werden (und dabei die bezugszellen um 5 zeilen nach unten gehen), bzw. ein makro was nach eingabe die bestimmte zelle bearbeitet

__________________________________________________
Sub sup1()
Range("E13").Select
Selection.Copy
Range("D13").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End Sub
__________________________________________________
Sub neu1()
Rows("13:13").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Rows("18:22").Select
Selection.Copy
Rows("13:17").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("G15").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Position letztes Spiel"
Range("G16").Select
ActiveCell.FormulaR1C1 = "Anzahl Sterne"
Range("G17").Select
ActiveCell.FormulaR1C1 = "Bemerkungen"
Range("I15").Select
ActiveCell.FormulaR1C1 = "*"
Range("I16").Select
ActiveCell.FormulaR1C1 = "*"
Range("I17").Select
ActiveCell.FormulaR1C1 = "*"
Range("H15:I17").Select
Selection.AutoFill Destination:=Range("H15:BQ17"), Type:=xlFillDefault
Range("H15:BQ17").Select
Range("A23:BQ25").Select
Range("BQ25").Activate
Range("A18:C218").Select
Range("C218").Activate
Selection.Cut Destination:=Range("A13:C213")
Range("A13:C213").Select
Range("A213:C213").Select
Selection.Cut Destination:=Range("A218:C218")
Rows("213:217").Select
Selection.Delete Shift:=xlUp
ActiveWindow.SmallScroll Down:=-240
Range("D13").Select
End Sub
__________________________________________________
Sub del1()
Range("A13:C213").Select
ActiveWindow.SmallScroll Down:=-207
Selection.Cut Destination:=Range("A18:C218")
Range("A18:C218").Select
ActiveWindow.SmallScroll Down:=186
Range("D208:BR213").Select
Selection.Copy
ActiveWindow.ScrollColumn = 1
Range("D213").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-210
Rows("13:17").Select
Selection.Delete Shift:=xlUp
End Sub
__________________________________________________

Antwort 5 von coros

Hi Dark Lord,

gestatte mir zunächst eine Anmerkung zu Deinen Beiträgen: Ein Hallo am Anfang und ein Gruß am Ende, würden Deine Beiträge gleich viel netter aussehen lassen. Denn alle die Dir hier helfen wollen, haben das glaube ich verdient.

Das gleiche gilt für den Kollegen DUMMSCHWÄTZER.

Ich habe Deine Codes mal etwas eingekürzt. Die ganzen Sachen mit Select und Selection und dem Scrollen kann man weglassen. Test mal die Makros an einer Kopie Deiner Datei, ob sie noch das machen, was auch die alten Makros gemacht haben.

Sub sup1()
Application.ScreenUpdating = False
Range("E13").Copy
Range("D13").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub

Sub neu1()
Application.ScreenUpdating = False
Rows("13:13").Select
Rows("18:22").Copy
Rows("13").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("G15").FormulaR1C1 = "Position letztes Spiel"
Range("G16").FormulaR1C1 = "Anzahl Sterne"
Range("G17").FormulaR1C1 = "Bemerkungen"
Range("I15").FormulaR1C1 = "*"
Range("I16").FormulaR1C1 = "*"
Range("I17").FormulaR1C1 = "*"
Range("H15:I17").AutoFill Destination:=Range("H15:BQ17"), Type:=xlFillDefault
Range("A18:C218").Select
Range("C218").Activate
Selection.Cut Destination:=Range("A13:C213")
Range("A13:C213").Select
Range("A213").Cut Destination:=Range("A218")
Rows("213:217").Delete Shift:=xlUp
Range("D13").Select
End Sub

Sub del1()
Application.ScreenUpdating = False
Range("A13:C213").Cut Destination:=Range("A18")
Range("A18:C218").Select
Range("D208:BR213").Copy Range("D213")
Rows("13:17").Delete Shift:=xlUp
End Sub


Die können mit Sicherheit noch weiter gekürzt werden, aber dazu fehlen Infos. Nun zu Deiner Frage: Ich habe ehrlich gesagt nicht verstanden, was Du erreichen möchtest. In Deinem ersten Beitrag schreibst Du was von einer Zeile darunter, in Deinem letzten Beitrag schreibst Du dann 5 Zellen runter usw. Schreib doch mal genau hier rein, was Du erreichen möchtest. Mit Deinen allgemeinen Erklärungen, wie z.B.

Zitat:
und einige sachen in den zellen rechts davon (b1,c1,etc.) anstellt.


kann kann man nicht viel anfangen. Man benötigt schon ein paar genauere Angaben was wann wo geschehen soll. Also schreib mal ein bisschen über das, was Du erreichen möchtest, eventuell mit kleinen Beispielen. Denn keiner kennt Deine Tabelle, außer Du.

Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar Dein Problem gelöst hat.

Antwort 6 von nighty

hi alle :)

schliesse mich corus an :)

und verschwende daher keine zeit :)

gruss nighty

FORUMSBEITRAG

Syntax

FORUMSBEITRAG(Begrüssung;[Text];Schlussformel;Name)
Begrüssung Erforderlich.Ein Zeichenfolgeausdruck,der den landestypischen Grpflogenheiten entspricht.Eine Auswahl kann der nachfolgenden Zeile entnommen werden : „Hallo“,“Hi“,Guten Tag“ oder ähnliches.Möglich sind auch regionstypische wie “Moin“,“Grüetze“ oder “Servus“

Text Erforderlich.Ein Zeichenfolgenausdruck,der Auskunft über das eigentliche Anliegen des Fragenden gibt.Der Inhalt ist frei wählbar,sollte aber freundlich und aussagekräftig abgefasst sein.

Schlussformel Erforderlich.Ein Zeichenfolgenausdruck, der den landestypischen Gepflogenheiten entspricht.Eine Auswahl kann der nachfolgenden Zeile entnommen werden:
“Ciao“,“Danke“,“Tschüss“,“Viele Grüsse“ oder ähnliches.

Name Optional.Veranlasst das Forum,freundlicher und persönlicher auf Text zu reagieren.

Anmerkung
Bei genauer Einhaltung der Syntax liefert die Funktion FORUMSBEITRAG das gewünschte Suchergebnis und hinterlässt zufriedengestellte Anwender.


Antwort 7 von DarkLord

hallo alle,
sorry dass ich in meinen antworten nicht die syntax eingehalten habe ;)

ich habe deinen code mal getestet und er macht leider nicht mehr das was ich vor hatte. ich hab einfach mal meine datei online gestellt:

http://home.arcor.de/tkrohne/Spieler.xls

es geht dabei um die drei buttons links ("Neuer spieler", "löschen", "Nr. Bereinigen")

in die grauen felder wird eine spielerliste kopiert.
diese soll dann durch die entsrpechenden "eintragen"-buttons am jeweiligen spieltag gespeichert werden. beim nächsten spieltag wird wieder die aktuelle liste in die grauen felder kopiert und dann durch den "eintragen"-button in den entsprechenden spieltag kopiert.

das ist was die datei eigentlich machen soll. das funktioniert auch so wie ich es haben will.


nun gibt es aber noch folgende probleme:

1. was passiert wenn ein spieler gelöscht wird?

die alten daten stehen noch in der excel tabelle, müssen daher gelöscht werden. die reihenfolge der liste hat sich geändert (wenn z.B. der 5. spieler gelöscht wird, rücken alle spieler darunter eins nach oben)

2. was passiert wenn ein neuer spieler dazu kommt?

es müssen neue zeilen für den spieler eingefügt werden (z.B. ist der neue spieler nun der 3. der liste, daher müssen alle die vorher 3. spieler oder weiter unten waren auch weiter nach unten rücken, um für den neuen spieler platz zu machen)

3. nr. bereinigen:

einige spielerlisten beinhalten spielernummern, sodass der eigentliche spielername um eine spalte nach rechts rückt.

der button "nr. bereinigen" rückt nun diese spielernamen wieder eine spalte nach links und überschreibt die unnötige nummer, sodass der name wieder in den grauen feldern steht.

ich habe unter dem tabellenblatt "Test" einmal eine testliste eingefügt, sodass man es sich einmal anschauen kann, wie es sein soll. dabei funktioniert aber nur der erste Spieler.


die 3 makros sollen also nun so fit gemacht werden, dass sie für jeden spieler funktionieren. (jeder spieler hat dabei 5 zeilen, daher die 5 als abstand in meinem vorherigen post)
am liebsten würde ich dabei haben, dass man nur ein makro für jede funktion hat, das sich dann aus einer zelle die gewünschte spielernummer holt und dann den entsprechenden spieler bearbeitet.
sollte so etwas jedoch nicht möglich sein, muss ich wohl die drei makros kopieren und 40 mal neu machen :(

ich bedanke mich bei allen die mir schon geholfen haben und auch bei denen die mir noch helfen oder dies versuchen.
sorry dass ich bei meinen letzten post das vergessen hab, ich verzweifle nur schon seit 3 tagen an diesem problem :(

thx
darklord

Antwort 8 von coros

Moin DarkLord,

hast ja ne ganze Menge jetzt geschrieben, aber ich habe immer noch nicht verstanden, was Du eigentlich möchtest. Ich habe mir Deine Datei angesehen. Da funktioniert doch soweit alles. Warum schreibst Du eigentlich nicht mal hier hin, was Du z.B u.a. unter fit machen der 3 Makros, dass sie für jeden Spieler funktionieren verstehst? Was soll den an den 3 Makros geändert werden? Warum willst Du drei Makros kopieren und 40 mal neu machen ?
Für mich ist immer noch Erklärungsbedarf vorhanden. Also schreib mal, was an den Makors nicht so ist, wie Du es Dir vorstellst und was nun eigentlich geändert werden soll.

Eventuell verstehe ich dann auch, was das Endresultat sein soll. Sorry, aber bei uns Berlinern dauert es immer etwas länger bis man was gerafft hat. ;-)

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von DarkLord

hallo coros,

(bin auch berliner *hehe*)

das problem ist dass die 3 makros nur bei dem zeilenbündel für den 1. spieler funktionieren (bei der 1 halt GG)

das problem ist, dass die liste (immer gleiches format - 5 zeilen pro spieler - alphabetisch sortiert), welche nachher in die grauen felder kopiert wird von einer seite im internet kommt und wenn sich da die reihenfolge ändert (spieler werden gelöscht oder hinzugefügt) muss ich ja in meiner tabelle auch die reihenfolge ändern.

angenommen ich trage die liste mit den spielern a,b,c ein. am nächsten spieltag wird dann aber der spieler b gelöscht.
nun hab ich aber noch seine alten daten drin, der spieler hat bei mir ja noch die zeilen (da er beim letzten spieltag ja noch dabei war). will ich ihn nun aus meiner liste auch löschen, sodass in der excel tabelle wieder alles hinhaut, so muss ich seine alten daten löschen, bevor ich die liste wieder neu eintrage. (der 2. spieler der liste ist ja nun der spieler "c" und nicht mehr wie vorher "b".) würde ich dies nicht machen und einfach nur die liste einfügen, hätte ich ja dann die eigenschaften der spieler vermischt.
daher muss ich leider die möglichkeit haben, jeden einzelnen spieler zu löschen aus meiner datei, sodass die reinkopierte liste wieder mit den bereits eingetragenen daten vorheriger spieltage übereinstimmt.

und da die tabelle für 40 spieler ist, müsste ich dann das makro 40 mal kopieren. dadurch wird wie gesagt die datei riesig. deshalb such ich nach ner anderen möglichkeit (ausserdem ist das 40 mal kopieren der 3 makros seeeeehr zeitaufwendig ;) )

vielen dank und sorry dass ich als berliner mich so unverständlcih ausdrücke ;)

thx
timo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: