3.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich bin noch nicht lange dabei und habe auch im Netz nichts gefunden, was mir helfen könnte.

Ich habe in meinem Makro folgenden Code hinterlegt, der auch funktioniert. Allerdings muss ich jede einzelne Zelle ansprechen.
Leider sind es dann 100 (!)...
Wenn ich Bezug nehme auf die Zellen z.B.("J15:J114"), um mir diese
mühsame Arbeit zu ersparen, dann erscheint eben die Fehlermeldung
'Typen unverträglich' Fehler 13

Kann mir da vielleicht jemand von den Experten weiterhelfen
?
Für jeden Tipp bin ich sehr dankbar.

Sub Makro1()
'
' Makro1 Makro

'POSITION 1

Do
'Zellen markieren
Range("I15").Select

If ActiveCell.FormulaR1C1 = 10800 And [b]Range("J15") = Range("N15") Then GoTo line2
[/b]
ActiveCell.FormulaR1C1 = ((ActiveCell.FormulaR1C1) - 100)


'Schleife bis der Wert passt
Loop Until Range("J15") = Range("N15")

line2:

18 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Warumn Formula, wenn keine Formel eingetragen wird?

Range("I15").Select

If ActiveCel = 10800 [And Range("J15")[] = Range("N15") Then
ActiveCell. =ActiveCell) - 100)
Sprungmarken sind kein Guter Stil, macht den Code nur unübersichtlich.
Wo Dein Problem liegt konnte ich nicht erkennen.

Gruß Hajo
0 Punkte
Beantwortet von
Mein Problem besteht darin, dass ich nicht jede einzelne Zelle ansprechen will, sondern alles in einer Schleife behandeln möchte.
Ich sagte ja, dass ich erst seit kurzer Zeit dabei bin.

Aber lass mal gut sein. Danke für die Antwort.
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
CElls(Lozeile,9) =CElls(Lozeile,9) - 100)
Lozeile=Lozeile+1

Gruß Hajo
0 Punkte
Beantwortet von
Danke für deine Antwort. Das muss ich gleich mal ausprobieren.
Hört sich schon mal vielversprechend an.

Gruß
Michael
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Michael,

Lozeile vor Do auf 15 setzen.

Gruß Hajo
0 Punkte
Beantwortet von
Naja, bzw. könntest du meinen Quellcode dementsprechend mal ansatzweise ändern ?
Irgendwie bin ich etwas konfus, was deinen Vorschlag angeht.
Was bedeutet Cells( Lozeile,9) ?

Tschuldigung schon mal im Voraus :-)
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Nein das kann ich nicht. Wie schon geschrieben.

Sprungmarken sind kein Guter Stil, macht den Code nur unübersichtlich.

da bist Du der beste Partner.
Range("I15")

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Hajo,

bin wohl noch viel zu grün. Kann das leider nicht umsetzen mit 'lozeile' etc.
Da muss ich wohl noch zur VHS :-(
Aber vielen Dank für deine Bemühungen !

Ich werde aber nicht aufgeben. Das Forum hier ist wohl nur was für sehr weit Fortgeschrittene.

Aber ich finde schon was für Dummies, die erst seit ein paar Wochen dabei sind.

Viele Grüße
Michael
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Michael,

Das Forum hier ist wohl nur was für sehr weit Fortgeschrittene.

....da kann ich Dir leider nicht zustimmen, das Forum hilft jeden!

Es kommt natürlich darauf an, ob die Frage für jeden verständlich formuliert ist.
In Deinem Fall wäre es besser gewesen, anstatt Code zu posten, mit verständlichen Worten zu erklären,
was der Code erledigen soll.
Wenn Du dann noch erläuterst wo in Deiner Mappe welche Daten stehen, müsste man mit der Frage
mehr anfangen können.
Übrigens sollte es selbstverständlich sein, bei jeder Frage die verwendete Excelversion anzugeben.

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

danke, da habe ich wieder etwas dazugelernt.

Ich verwende Excel 2007.

Jetzt der Versuch, das in verständlichen Worten zu erklären:

Auf Basis der Zelle I15 mit dem Ausgangswert 10800 möchte ich gerne die Zellen J15 und N15 in der Mappe "Gewichtsberechnung" vergleichen.

Der Wert in I15 wird jedes mal um den Wert 100 verringert.
Sobald dann J15 und N15 passen, soll das Makro aussteigen.

Das Problem ist, es soll nicht nur eine Zeile (Zelle) berechnet werden, sondern insgesamt 100.

Also I15 bis I114 etc.

Nun habe ich die Lösung mit einer (unsauberen) Sprungmarke gelöst, indem ich sage, "Bist du mit der ersten Zeile fertig, dann gehe zur nächsten und berechne alles wieder nach dem gleichen Prinzip". I16.....I17 etc.

Die Frage lautet, wie kann ich es in einer Schleife schaffen, die Zellen I,J,N 15 bis I,J,N114
so zu behandeln, dass ich nicht immer jede einzelne Zelle ansprechen muss ?

Gruß
Michael
...