Seite 1 von 2
nur ungerade Zeilen ansprechen
Verfasst: Sa, 21.08.2010 20:14
von clag
Hallo Leutz,
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
wie würde man das am sinnigsten machen ?
kann man "ungerade" irgendwie direkt auswerten,
oder muss da eine Schleife her mit 1+2, oder was könnte man da noch anstellen ?
Re: nur ungerade Zeilen ansprechen
Verfasst: Sa, 21.08.2010 21:11
von sven-my
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
Re: nur ungerade Zeilen ansprechen
Verfasst: Sa, 21.08.2010 21:46
von turtle47
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
verwenden.
Bei 100 Zeilen dauert das auf meinem Läppi gerade mal 32 Millisekunden.
Viel Erfolg.
Jürgen
Re: nur ungerade Zeilen ansprechen
Verfasst: Sa, 21.08.2010 21:56
von clag
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
Verfasst: Sa, 21.08.2010 21:59
von sven-my
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
Verfasst: Sa, 21.08.2010 22:05
von clag
Hi,
da werde ich natürlich probieren wass wie läuft
Danke !
Re: nur ungerade Zeilen ansprechen
Verfasst: Sa, 21.08.2010 23:31
von Karolus
Hallo
if mod(Zahl / 2) <> Zahl / 2 then "ungerade"
Das wird so nicht laufen, Die Basicsyntax für mod lautet:
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
Verfasst: So, 22.08.2010 09:30
von sven-my
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
Verfasst: So, 22.08.2010 10:33
von sven-my
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:
gruß
sven-my
Re: nur ungerade Zeilen ansprechen
Verfasst: So, 22.08.2010 10:55
von komma4
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.
Hättest Du Dir mal meine Makro-Seite angesehen, wäre Dir
calc_colorRows doch aufgefallen, oder?
Re: nur ungerade Zeilen ansprechen
Verfasst: So, 22.08.2010 15:07
von Karolus
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
Verfasst: So, 22.08.2010 15:22
von sven-my
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
Verfasst: So, 22.08.2010 15:55
von clag
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
Verfasst: So, 22.08.2010 16:13
von Karolus
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 .. )
Gruß Karo
Re: nur ungerade Zeilen ansprechen
Verfasst: So, 22.08.2010 16:28
von clag
Hi
ja man wat iss'n nu, rin inne Katoppeln rut usse Kattopeln
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