nur ungerade Zeilen ansprechen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: nur ungerade Zeilen ansprechen

Re: nur ungerade Zeilen ansprechen

von Karolus » So, 22.08.2010 18:22

Hallo
Ja du kannst:

Code: Alles auswählen

if  startrow mod 2 = 0 then
	startrow = startrow +1
end if
for i = startrow to endrow step 2
	 machwas
next
...verwenden.

Karo

Re: nur ungerade Zeilen ansprechen

von clag » So, 22.08.2010 16:28

Hi

ja man wat iss'n nu, rin inne Katoppeln rut usse Kattopeln :lol:

nu lese ich in fremden Code nach und habe Fragen dazu und werde auch wieder angemacht

Code: Alles auswählen

for i = lStartRow to lEndRow
	' determine range
	actRange = actSheet.getCellRangeByPosition(lStartCol,i,lEndCol,i)
	' only every second row
	if  ((i MOD 2) = 0) then
		' even row number (zero considered even)
		actRange.setPropertyValue("CellBackColor", lOddColor)
	end if
next i
bzw kriege dann zu lesen ich würde nicht lesen :?

das mit step 2 hatte ich schon verstanden (glaube ich) :)
daraus resultiert ja diese Frage zu der von Komma4 verwendeten Schleife

Re: nur ungerade Zeilen ansprechen

von Karolus » So, 22.08.2010 16:13

Hallo
Irgendwo in den unendlichen Weiten dieses Threads wurde doch schon mal die Variante der For-Schleife genannt:
for zahl = 1 to 99 step 2
...
next

Für was steht wohl dieses ominöse step 2 ?
(Komma4 hat Recht - mit Lesen hast du es nicht so .. ) 8)

Gruß Karo

Re: nur ungerade Zeilen ansprechen

von clag » So, 22.08.2010 15:55

Hallo,

in der Zwischenzeit habe ich mir auch mal erlaubt in die Eingeweide von calc_colorRows zu sehen
da wendet Komma4 ja genau so diese Funktion an !

Dazu ich nun folgendes fragen/bemerken

wenn ich es richtig verstehe wird in jedem Durchgang auf gerade ungerade geprüft oder ?
ist das bei einer größeren Anzahl nicht unnötige Rechenarbeit ?

wäre es nicht erheblich schneller diese Prüfung nur einmal am Anfang vorzunehmen
und dann nur noch den Zähler um 2 zu variieren also +2 oder -2 je nach dem?
sonst einmal +1 und dann +2

Re: nur ungerade Zeilen ansprechen

von sven-my » So, 22.08.2010 15:22

Hallo karolus,

nun sehe ich klarer - von modulo habe ich vor Jahrzehten schon mal gehört.

Michaels Seite hat mich da auf den falschen Dampfer gebracht.

Danke Dir.

gruß
sven-my

Re: nur ungerade Zeilen ansprechen

von Karolus » So, 22.08.2010 15:07

Hallo
@Sven
mod ist der modulo-Operator und liefert den Rest der beim ganzahligen dividieren übrig bleibt, z.B.: 11 mod 4 ergibt 3
( 4 passt 2 mal in 11 → 2 mal 4 gibt 8 bleibt ein Rest von 3 )

Gruß Karo

Re: nur ungerade Zeilen ansprechen

von komma4 » So, 22.08.2010 10:55

clag hat geschrieben:ich möchte in einer Tabelle in einem Bereich zB die ersten 100 Zeilen nur für die geraden oder ungeraden Zeilen die Zeilenhöhe einstellen
Meine Rede: Du liesst nicht. :roll:
Hättest Du Dir mal meine Makro-Seite angesehen, wäre Dir calc_colorRows doch aufgefallen, oder?

Re: nur ungerade Zeilen ansprechen

von sven-my » So, 22.08.2010 10:33

Hallo Karolus,

Asche auf mein Haupt --- habe da was falsch verstanden :
Dank Michael hab auch ich es jetzt begriffen !

>mod< ist nicht die Entsprechung zu Ganzzahl, sondern rundet die Stellen nach dem Komma einer Division auf.

müßte dann also so gehen:

Code: Alles auswählen

y= x mod2
if  y = 0 then msgbox "gerade"

'oder
if y=1 then msgbox "[color=#FF0000]un[/color]gerade"
gruß
sven-my

Nachtrag:

die Entsprechung zu >Ganzzahl< ist >fix<

würde somit richtig lauten:

Code: Alles auswählen

if 5/2 <> fix(5/2) then msgbox "ungerade"
gruß
sven-my

Re: nur ungerade Zeilen ansprechen

von sven-my » So, 22.08.2010 09:30

Hallo Karolus,

habe ich das mit >mod< falsch verstanden, oder ist es doch das Äquivalent zu GANZZAHL ?

Da zitierst Du mich falsch :
Karolus hat geschrieben:die Bedingung (Zahl mod 2) <> (zahl / 2)
OK, ich häte besser geschrieben

Code: Alles auswählen

if x/2 <> mod(x/2) then .......
rem x ist die zu prüfende Zahl
"Zahl" soll sie Zahl sein, die geprüft wird. Und es ist doch ein Unterschied, ob ich

Ganzzahl(5/2) , oder 5/2 errechnen lasse, bei einer geraden Zahl ergibt es keinen Unterschied.

Michael (http://www.starbasicfaq.de/WelcheRuntim ... ml)schrieb
Mathematische Operatoren
.....
Mod
Liefert den ganzzahligen Rest einer Division.

gruß
sven-my

Re: nur ungerade Zeilen ansprechen

von Karolus » Sa, 21.08.2010 23:31

Hallo
if mod(Zahl / 2) <> Zahl / 2 then "ungerade"
Das wird so nicht laufen, Die Basicsyntax für mod lautet:

Code: Alles auswählen

if zahl mod 2  then   'ungerade
und die extra Prüfung auf ...<> zahl/2 ist ja nun völliger Quatsch - die Bedingung (Zahl mod 2) <> (zahl / 2) trifft bei allen Zahlen zu.

Gruß Karo

Re: nur ungerade Zeilen ansprechen

von clag » Sa, 21.08.2010 22:05

Hi,

da werde ich natürlich probieren wass wie läuft :)

Danke !

Re: nur ungerade Zeilen ansprechen

von sven-my » Sa, 21.08.2010 21:59

Hallo clag,

mein Vorschlag in BASIC:

if mod(Zahl / 2) <> Zahl / 2 then "ungerade"

gruß
sven-my

Gerade kommt mir Dein neuer Beitrag dazwischen - da bin ich überfragt.

gruß
sven-my

Re: nur ungerade Zeilen ansprechen

von clag » Sa, 21.08.2010 21:56

Hallo sven-my,

danke für den Hinweis
aber genau das möchte ich möglichts ,vermeiden jede Zeile einzeln finden und ansprechen

ich dachte an so etwas

thiscomponent.Sheets(0).getcellrangebyposition(0,1,0,2001).getrows().ungerade.Height = 10


oder so !?


edit:
da war ja zwischendurch der turtle47 mit einem Vorschlag, ok bei 32 mSek werde ich mal testen wie das hier so läuft .....
du hast aber nen schnellen Daumen . . ;)

Re: nur ungerade Zeilen ansprechen

von turtle47 » Sa, 21.08.2010 21:46

Hi Clag,
clag hat geschrieben:kann man "ungerade" irgendwie direkt auswerten,
Meines Wissens nicht.
clag hat geschrieben: oder muss da eine Schleife her mit 1+2, oder was könnte man da noch anstellen ?
Man könnte auch

Code: Alles auswählen

for i = StartRow to cRows  Step 2
verwenden.

Bei 100 Zeilen dauert das auf meinem Läppi gerade mal 32 Millisekunden. :lol:

Viel Erfolg.

Jürgen

Re: nur ungerade Zeilen ansprechen

von sven-my » Sa, 21.08.2010 21:11

Hallo clag,

das einfachste gerade von ungeraden Zahlen zu unterscheiden ist, ob die GANZZAHL von ( a/2) <> a/2 ist.

Beispiel:
5 / 2 = 2.5
GaNZZAHL(5/2) = 2

gruß
sven-my

Nach oben