Wie kann man zwei Variablen in einer For-Schleife hochzählen lassen (in VBA ) ?

Mein bisheriger Code - (programmieren, Excel, Programmierung)

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du brauchst keine zweite Variable und daher auch keine zweite For-Schleife.
Einfach:

If Range("c"& i ).Value=Range("b"& i ).Value

und das

For n= ...
...
Next n

weglassen.

Danke fürs

0

Du musst den Teil hinter dem Else am besten in eine neue Zeile packen und dann mit End If abschließen. Die Schleife an sich sollte aber funktionieren.

 Also so:

If Range("c" & i).Value = Range("b" & n).Value Then
    Range("c" & i).Interior.Color = vbGreen
Else
    Range("c" & i).Interior.Color = vbYellow
End If

Ich denke aber, dass du nicht den Effekt haben willst, den deine Funktion macht. Du willst wahrscheinlich vergleichen, ob der Wert in Spalte B genauso ist, wie der Wert in Spalte C und dann halt die Zellen in Spalte C entweder Grün oder Gelb hinterlegen. Wenn das der Fall ist, brauchst du aber nur eine Schleife und nicht zwei ineinander geschachtelte Schleifen. Statt dem n kannst du dann zum Vergleich auch einfach das i nehmen.

So, wie du es machst, wird im ersten Durchlauf die 12 aus der Zelle C2 mit jedem Wert aus der Spalte B verglichen und die Farben werden immer wieder überschrieben. Der letzte Vergleich (C2 mit B34) bleibt dann stehen, wird also Gelb. Das passiert mit jeder Zelle in C. Die werden alle Gelb, weil halt der letzte Vergleich immer mit B34 ist)

Also das, was ich denke, was du vorhast, würde so gehen:

For i = 2 to 34 Step 2

    If Range("c" & i).Value = Range("b" & i).Value Then
        Range("c" & i).Interior.Color = vbGreen
    Else
        Range("c" & i).Interior.Color = vbYellow
    End If

Next i



Alternativ kannst du dein Problem natürlich auch ohne VBA lösen, indem du einfach die Werte von der Spalte B mit C vergleichst. Z.B. in D2 die Formel =WENN(B2=C2;1;0) und dann nach 1 oder 0 filtern oder meinetwegen eine bedingte Formatierung für 1 oder 0 einstellen.

0

So wie du es gemacht hast, funktioniert es schon. Du hast nur das "End If" vergessen ;)

Übersichtlicher ist es übrigens, wenn du jede For-Schleife entsprechend einrückst:

For i = 2 To 34 Step 2
For n = 2 To 34 Step 2
' deine Prozedur
Next n
Next i

Dann weißt du immer, wo du gerade arbeitest. In deinem Fall nicht so wichtig, aber später dann schon.

Außerdem ist die Zuweisung i = 2 und n = 2 vor Beginn der Schleifen nicht nötig, er initiiert diese Variablen automatisch mit dem Startwert der Iteration.

Excel Zellvergleich: VBA oder bedingte Formatierung?

Ich habe eine Excel Tabelle mit 2 Spalten und einigen Zeilen. Nun möchte ich es schaffen, dass eine Zelle nach der anderen (For Schleife?) aus Spalte A mit allen Zellen aus Spalte B verglichen wird. WENN der Inhalt der Zelle aus Spalte A IN einer Zelle in Spalte B vorhanden ist, DANN färbe die Zelle NUR in Spalte B ein.

WIe mache ich das am geschicktesten? Geht es mit bedinger Formatierung oder VBA besser?

...zur Frage

Excel Zelle als Button

Hallo zusammen,

Ich möchte in VBA etwas programmieren, und dazu ist es nötig dass eine Zelle als Button funktioniert. Das heisst, sobald ich z.B auf die Zelle A1 klicke, also die aktiviert wird, soll ein Makro ausgeführt werden. Wie kann ich das realisieren?

MfG Duma123

...zur Frage

Excel Tabelle mit VBA fortlaufend befüllen?

Hallo,

ich habe eine ziemlich schwierige Aufgabe zu lösen, zumindest für mich als VBA Amateur und bräuchte deswegen eure Hilfe, da ich daran schon seit Tagen verzweifle.

Die Aufgabenstellung ist folgende:

Es soll durch ein Kontrollfenster (1. Bild links) möglich sein, einen neuen Datensatz anzulegen, der dann automatisch in der Tabelle (1. Bild rechts) davon erscheint. Die Erstellung der Datensätze soll fortlaufend geschehen, d.h. falls bereits ein Datensatz in Zeile 4 vorliegt, dass der neue Datensatz automatisch in Zeile 5 (usw.) angelegt wird. Zuletzt soll dann das Kontrollfenster geleert werden, sodass es theoretisch möglich wäre, direkt einen weiteren Datensatz anzulegen.

Weiterhin soll dieser neu angelegte Datensatz mit dem "DiagrammA" im Reiter "Diagramm" verknüpft werden (X/Y-Werte und Name in der Legende), sodass dort auch automatisch dieser Datensatz erscheint (2. & 3. Bild).

(Optional): Die Möglichkeit zum Entfernen eines Datensatzes.

Vielen Dank!

...zur Frage

VBA picklist formatierung?

Hi,

Und zwar habe ich eine Liste an Werten die eine bestimmte Farbe/Schriftfarbe annehmen. Ich weiß eigentlich würde ich es auch mit bedingter Formatierung machen, aber das Problem ist dass meine Combobox 30 Werte hat und 30 mal eine bedingte Formatierung machen ist nicht gerade so toll :). Wie kann ich das schneller oder einfacher machen?

P.S: Es handelt sich nicht um eine Userform sondern um eine Zelle die ein Auswahlfeld mit verschiedenen Inhalten (Picklist werten).

...zur Frage

Bedingte Formatierung für ganze Spalte in Numbers '09?

Hallo,

ich habe folgendes Problem in Numbers 09' (OS X Lion). Ich habe eine Spalte (B) mit einem kurzen Text in jeder Zelle. Ich möchte nun, dass der Text in der Spalte rechts daneben (C) eine bestimmte Formatierung annimmt, sobald in einer Zelle in C dasselbe steht, wie in der rechts neben ihr liegenden Zelle der Spalte B. C5 soll also genau dann formatiert werden, wenn sie denselben Text enthält wie B5.

Ich könnte jetzt für jede einzelne Zelle eine bedingte Formatierung einstellen (z.B. C4 entspricht C5: Formatierung ändern), aber da die gesamte Tabelle etwas größer ist, würde das ewig dauern. Gibt es also irgendeinen weg die bedingte Formatierung gleich auf die gesamten Spalten anzuwenden?

...zur Frage

Organigram Excel mit einklappen und ausklappen (per Makro?)?

Hallo Zusammen,

etwas komplizierteres Problem hier: (zumindest bin ich nach stundenlangem Googeln auf englisch und deutsch auf kein akzeptables ergebis gekommen)

Im Prinzip klingt es einfach: Ich will ein Organigramm erstellen per Excel (Word wuerde auch noch gehen, keine sonstige Freeware da ich im Buero keine Software runterladen kann/darf). Nun will ich aber kein "statisches" Organigram (zb per SmartArt). Es soll eher so etwas sein wo ich auf einen Namen klicke und dann alle untergeordneten Leute/Mitarbeiter aufklappen (NUR DIE VON DEM JEWEILIGEN "BOSS").

Mit Gruppieren etc. komme ich nicht vorran da ich 1. will dass es per Mausklick auf den namen geht und 2. ich nicht mehr als 8 untergruppen erstellen kann damit.

Am liebsten auch ein Makro dass ich anpassen koennte ?Hab hier noch ein Bild was vllt etwas besser erklaert was ich meine.

Zum Bild:Ich will dann quasi dass am Anfang nur "CEO" da steht. Dann klicke ich zb auf "C" dann poppen 1,2,3,4,5 auf und ich klicke auf "1" dann poppen 11,12,13 auf etc.. der rest soll am besten verborgen bleiben (viel uebersichtlicher)

Hoffe, dass war einigermassen gut erklaert. Bei Fragen etc einfach nachfragen...Ich finde dazu leider auch wirklich nirgends etwas (ausser irgendwelcher Freeware etc.) Aber es MUSS doch moeglich sein?

Danke euch vieeelmals schonmal!!!

EDIT:

hab jetzt mal probiert einen Makro zu schreiben:

Sub collapse()

Selection.Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).

Select Selection.EntireRow.Hidden = True

End Sub

_______

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If Target.Column = 2 Then

Target.Select

Call collapse

End If

If Target.Address = "$B$10" Then

Target.Select

Call collapse

End If

End Sub

____

Problem: Wenn ich es mit "target.column" mache (was mir lieber ist) dann wuerde ich gerne haben dass er bei leeren zellen nichts macht in dieser spalte... wie geht das genau? und hat einer eine ahnung wie ich das hinkrieg dass wenn ich WIEDER auf die gleiche zelle gehe er mir des rueckgaengig macht? Ich hab so eine ahnugn mit true/false denke ich mal aber habe keine ahnung wie ich das umsetzen kann..

Also irgendwie dass wenn ich einmal draufdruecke und des eingeklappt ist er weiss visibile = false oder sowas und wenn ich wieder draufdruecke soll er halt true machen versteht ihr mich :D?

...zur Frage

Was möchtest Du wissen?