VBA Value Excel-Formelinhalt

Hallo Leute.

Ich möchte folgendes erreichen.
Dieser Inhalt soll in Zelle W3 stehen:
=WENN(U$4=W$2;WENN(INDIREKT($AK3&AM3)=„Ja“;1;0);"")
Dieser Inhalt soll in Zelle W4 stehen:
=WENN(U$4=W$2;WENN(INDIREKT($AK4&AM4)=„Ja“;1;0);"")
usw. bis Zelle W12. Also immer AK und AM um eins erhöhen.

Ab W12:
=WENN(U$10=W$2;WENN(INDIREKT($AK13&AM13)=„Ja“;1;0);"")
Also der U-Teil ändert sich immer nach einer Schrittweite von 6.

Wie kann ich dieses Prinzip der Eigenschaft Value übergeben.

Meine Versuche:
Sub test2()
Dim j As Integer
j = 3

'=WENN(U$4=W$2;WENN(INDIREKT($AK3&AM3)=„Ja“;1;0);"")

For i = 4 To 1198 Step 6
Worksheets(„BW Uebersicht“).Range(„W“ & j).Value = „=WENN(U“ & j&"=W2;WENN(INDIREKT(AK" & j & „&AM“ & j & „)=Ja;1;0);“")"
End Sub

Hier kommen dann die Fehler :frowning:

Bitte um Hilfe.

Grüße,
Sebastian

Zeichne mal ein Mini-Makro auf, während Du eine beliebige Formel in eine Zelle eingibst. Dann guckst Du Dir das Ergebnis an und sieht, wie es geht. Am besten drückst Du dann nochmal F1 und konsultierst die Hilfe.

Alternativ kann man auch mal die Eigenschaften eines Range.Objektes durchsuchen. Dazu gibt es ja die schöne Funktion, dass alle Eigenschaften und Funktionen angezeigt werden, sowie man den Punkt eingibt. In der Hilfe kann man die Hilfe natürlich auch durchgucken. Nach kürzester Zeit hättest Du die richtige Eigenschaft gefunden.

Dies mal wieder zum Thema „Hilfe zur Selbsthilfe“ :wink:

Viele Grüße,
Kristian

Hi Sebastian

Dieser Inhalt soll in Zelle W3 stehen:
=WENN(U$4=W$2;WENN(INDIREKT($AK3&AM3)=„Ja“;1;0);"")
Dieser Inhalt soll in Zelle W4 stehen:
=WENN(U$4=W$2;WENN(INDIREKT($AK4&AM4)=„Ja“;1;0);"")
usw. bis Zelle W12. Also immer AK und AM um eins erhöhen.

Nicht .Value sondern FormulaLocal, also etwa so:

For i = 3 To 11 
 Worksheets("BW Uebersicht").Range("W" & **i** ).FormulaLocal= \_ 
"=WENN(U" & **i** &"=W2;WENN(INDIREKT($AK" & **i** & "&AM" & **i** & ")=Ja;1;0);"")"
End Sub

Die eigentliche(n) Wenn-Formeln habe ich jetzt nicht geprüft.

Ab W12:
=WENN(U$10=W$2;WENN(INDIREKT($AK13&AM13)=„Ja“;1;0);"")
Also der U-Teil ändert sich immer nach einer Schrittweite von
6.

Habe ich nicht verstanden, von W3 bis W11 ist die Schrittweite mehr als 6.

Meine Versuche:
Sub test2()
Dim j As Integer
j = 3

'=WENN(U$4=W$2;WENN(INDIREKT($AK3&AM3)=„Ja“;1;0);"")

For i = 4 To 1198 Step 6
Worksheets(„BW Uebersicht“).Range(„W“ & j).Value = „=WENN(U“ &
j&"=W2;WENN(INDIREKT(AK" & j & „&AM“ & j & „)=Ja;1;0);“")"
End Sub

Du benutzt das „i“ nicht in der Schleife und veränderst das „j“ nie.

Gruß
Reinhard

Hallo Reinhard.

Nicht .Value sondern FormulaLocal, also etwa so:

For i = 3 To 11
Worksheets(„BW Uebersicht“).Range(„W“ &
i ).FormulaLocal= _
„=WENN(U“ & i &"=W2;WENN(INDIREKT($AK" & i &
„&AM“ & i & „)=Ja;1;0);“")"
End Sub

Die eigentliche(n) Wenn-Formeln habe ich jetzt nicht geprüft.

Klappt, danke…!!!

Ab W12:
=WENN(U$10=W$2;WENN(INDIREKT($AK13&AM13)=„Ja“;1;0);"")
Also der U-Teil ändert sich immer nach einer Schrittweite von
6.

Habe ich nicht verstanden, von W3 bis W11 ist die Schrittweite
mehr als 6.

Brauch ich nicht mehr. Habe die Schrittweite in eine Spalte geschrieben.

Meine Versuche:
Sub test2()
Dim j As Integer
j = 3

'=WENN(U$4=W$2;WENN(INDIREKT($AK3&AM3)=„Ja“;1;0);"")

For i = 4 To 1198 Step 6
Worksheets(„BW Uebersicht“).Range(„W“ & j).Value = „=WENN(U“ &
j&"=W2;WENN(INDIREKT(AK" & j & „&AM“ & j & „)=Ja;1;0);“")"
End Sub

Du benutzt das „i“ nicht in der Schleife und veränderst das
„j“ nie.

Hatte ich noch nicht gemacht. bin bei dem .Value stecken geblieben. :smile:

Danke nochmals für die Hilfe. Habs jetzt geschafft.

Grüße,
Sebastian