Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Probleme bei der Code Erstellung (Syntax)
#1
Hi,

ich bin absoluter Excel Neuling und möchte folgendes realisieren:
Zwei ineinander geschachtelte for Anweisungen, die automatisiert mit eingegebenen Nutzerdaten ablaufen:

Das Makro soll starten, wenn in Zelle B37 etwas eingegeben wird:

for (j=0,j < Zelle A20,j++)

for (i=0,i*Zelle B22<1+Zelle B34,++)

ab Zelle A100 soll in Richtung AXX das Folgende ausgeben werden, solange die Bedingung der for Schleife wahr sind.:

1+j*Zelle B34+i*Zelle D40

könnt ihr mir helfen?
Antworten Top
#2
Guten Morgen,

zunächst...
Ich nehme an die Eingaben stehen in A20 und B22?
Dann wenn Du das mit einer For-Next-Schleife realisieren willst, ist die Syntax...

For a = x to y
.
.
Deine eigentliche Anweisung(en)
.
.
Next a

Das was ich mir aus einem Ansatz zusammenreime, scheint aber eher eine Prüfung zu sein.
Das wäre dann beispielsweise eine
If (zu prüfende Bedingung(en) Then-Anweisung

Deine eigentlich Anweisung was zu passieren hat wenn die Bedingung war (oder falsch) ist

Else

End If

Vielleicht beschreibst Du einmal mit Worten was Du machen/prüfen willst und stellst auch gleichzeitig eine (wenn möglich) Beispieldatei bereit.

Gruß
Ich
Antworten Top
#3
Guten Morgen und vielen Dank für deine Antwort.

Ich möchte folgendes realisieren:

Der Nutzer möchte eine gewissen Anzahl an Objekten hintereinander Nutzen ( Zelle A20)
Ein Objekt hat eine Nutzungsdauer ( Zelle B34),
zusätzlich muss aber noch alle X-Jahre (Zelle B22) etwas an dem Teil geändert werden. Dieser Zeitraum beginnt bei Null, wenn ein neues Objekt gekauft wird.
Deshalb zwei for Schleifen.

An einem Beispiel:

Anzahl an Objekten 3
Nutzungsdauer pro Objekt 1 Jahr
Modifikationsintervall 0,3 Jahre

Dann soll das Programm die Zeitpunkte ausgeben in denen modifiziert wird (In Jahr 1 wird der erste Kauf getätigt):

Jahr 1- Kauf (keine Ausgabe=
1,3 Modifikation, Wer soll ausgegeben werden
1,6  Modifikation,
1,9 Modifikation
2 Kauf, keine Ausgabe
2,3 Modifikation Ausgabe
Antworten Top
#4
Hi,

wir nähern uns.
Du schreibst der Intervall für die Modifikationen ist 0,3 Jahre.
Unten schreibst Du 1,3 Modifikation. Bedeutet das im ersten Jahr fallen keine Modifikationen an?

Und dann schreibst Du bei der Anzahl der Objekte 3. Weiter oben schreibst Du aber "... eine gewisse Anzahl an Objekten hintereinander Nutzen"
Werden die Objekte alle im 1. Jahr angeschafft oder im 1. Jahr das erste, im 2. Jahr das zweite, usw.?

Was willst Du da berechnen? Die total cost of ownership?

Gruß
Ich
Antworten Top
#5
Exakt.

Das habe ich missverständlich geschrieben.
Kauf wird in Jahr 1 getätigt und ab dann genutzt, nicht ab Jahr 0.
1,3 Jahre soll bedeuten in Jahr 1,3 ist eine Modifikation notwendig.
Die Anzahl der Objekte ist bekannt, bzw. in Excel kalkuliert worden. Die drei hier war nur beispielhaft.

Vielen Dank, bis jetzt sieht mein Code so aus:
Starten sollen das Macro wenn in Zelle B17 etwas eingegeben wird:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B17")) Is Nothing Then

Dim i As Integer
Dim j As Integer
Dim Stück As Integer
Dim Nutzungsdauer As Variant
Dim Modintervall As Variant
Dim Abbruch As Variant


i = 1


Stück = Range("B36").Value
stück = Range ("B36").Value
Nutzungsdauer = Range("B37").Value
Modintervall = Range("B68").Value

For j = 0 To j = Stück - 1

Do

Cells(100 + i, 1 + k).Value = 1 + j * Nutzungsdauer + i * Modintervall
i = i + 1



Loop While i * Modintervall < Nutzungsdauer



Next

End If
End Sub


So funktioniert es leider nicht:  Es wird eine Iteration zu viel ausgeführt und wenn ein neues Objekt gekauft werden müsste (for Schleife)
geht es nicht weiter...
Antworten Top
#6
Hi,

dann pack das mal in eine neue Tabelle zu testzwecken.

Sub LeibnizCasio()
Dim o As Long 'Anzahl Objekte
Dim nd As Double 'Nutzungsdauer

For o = 1 To 3
    Tabelle1.Cells(4, o).Value = "Objekt " & o
    zz = 5 'für die Ausgabe der Modifikationsintervalle
    For nd = 0 To 1 Step 0.3 'Step definiert die Schrittweite der Schleife ist also das Intervall
        If nd > 0 Then
            Tabelle1.Cells(zz, o).Value = 1 + nd
            zz = zz + 1
        End If
    Next nd
Next o

End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Im Ergebnis hälst Du das:

Tabelle1

ABC
1Anzahl ObjekteModifikationsintervallNutzungsdsauer
230,31
3
4Objekt 1Objekt 2Objekt 3
51,31,31,3
61,61,61,6
71,91,91,9

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Es ging Dir ja um die Syntax

Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • LeibnizCasio
Antworten Top
#7
Und damit Du fexibel auf die Anzahl Objekte referenzieren kannst dann so

Sub LeibnizCasio()
Dim o As Long 'Anzahl Objekte 
Dim nd As Double 'Nutzungsdauer 

For o = 1 To Tabelle1.Cells(2, 1).Value
    Tabelle1.Cells(4, o).Value = "Objekt " & o
    zz = 5 'für die Ausgabe der Modifikationsintervalle 
    For nd = 0 To 1 Step 0.3 'Step definiert die Schrittweite der Schleife ist also das Intervall 
        If nd > 0 Then
            Tabelle1.Cells(zz, o).Value = 1 + nd
            zz = zz + 1
        End If
    Next nd
Next o

End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Tabelle1

ABCDE
1Anzahl ObjekteModifikationsintervallNutzungsdsauer
250,31
3
4Objekt 1Objekt 2Objekt 3Objekt 4Objekt 5
51,31,31,31,31,3
61,61,61,61,61,6
71,91,91,91,91,9

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Gruß
Ich
Antworten Top
#8
Hi,

vielen vielen Dank.

Leider habe ich mich glaube ich missverständlich ausgerückt, dass ein Objekttyp soll mehrfach hintereinander gekauft werden mit den gleichen Parametern. Ich möchte dann nur den Zeitpunkt wissen wann modifiziert wird.

Leider bin ich absoluter Anfänger. Wie kriege ich deinen Code denn jetzt zum laufen?
Zudem verstehe ich nicht wie bei der Daten ausgelesen werden aus den Zellen.


Mein Problem ist de facto, dass ich prüfen muss wie oft modifiziert wird bis eines neues Teil gekauft wird. Dann geht das ganze wieder von vorne los die Jahre laufen nur weiter und werden entsprechend hochgezählt.
So viele Fragen... :22:
Antworten Top
#9
Also sowas?

Tabelle1

ABC
1Anzahl ObjekteModifikationsintervallNutzungsdsauer
230,31
3
4Objekt 1Objekt 2Objekt 3
51,32,33,3
61,62,63,6
71,92,93,9

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • LeibnizCasio
Antworten Top
#10
Hallo,

wenn:
Zitat:So viele Fragen... [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

wenn das mit den Fragen aufhören soll. solltest Du, wie im Post #2 bereits von "Ich" erbeten,
vielleicht doch mal darauf reagieren:

Zitat:Vielleicht beschreibst Du einmal mit Worten was Du machen/prüfen willst und
stellst auch gleichzeitig eine (wenn möglich) Beispieldatei bereit.

Das würde die Fragerei erheblich verkürzen  :19:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste