Registriert seit: 24.09.2016
Version(en): Office 365 / Mac OS
24.09.2016, 08:40
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 08:40 von LeibnizCasio.)
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?
Registriert seit: 21.07.2016
Version(en): 2007
24.09.2016, 09:00
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 09:02 von IchBinIch.)
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
Registriert seit: 24.09.2016
Version(en): Office 365 / Mac OS
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
Registriert seit: 21.07.2016
Version(en): 2007
24.09.2016, 09:51
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 09:52 von IchBinIch.)
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
Registriert seit: 24.09.2016
Version(en): Office 365 / Mac OS
24.09.2016, 10:09
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 13:33 von WillWissen.
Bearbeitungsgrund: Minischriftformatierung entfernt und Makro in Codetags gesetzt
)
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...
Registriert seit: 21.07.2016
Version(en): 2007
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 | A | B | C | 1 | Anzahl Objekte | Modifikationsintervall | Nutzungsdsauer | 2 | 3 | 0,3 | 1 | 3 | | | | 4 | Objekt 1 | Objekt 2 | Objekt 3 | 5 | 1,3 | 1,3 | 1,3 | 6 | 1,6 | 1,6 | 1,6 | 7 | 1,9 | 1,9 | 1,9 | Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8 Es ging Dir ja um die Syntax Gruß Ich
Registriert seit: 21.07.2016
Version(en): 2007
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 | A | B | C | D | E | 1 | Anzahl Objekte | Modifikationsintervall | Nutzungsdsauer | | | 2 | 5 | 0,3 | 1 | | | 3 | | | | | | 4 | Objekt 1 | Objekt 2 | Objekt 3 | Objekt 4 | Objekt 5 | 5 | 1,3 | 1,3 | 1,3 | 1,3 | 1,3 | 6 | 1,6 | 1,6 | 1,6 | 1,6 | 1,6 | 7 | 1,9 | 1,9 | 1,9 | 1,9 | 1,9 | Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8 Gruß Ich
Registriert seit: 24.09.2016
Version(en): Office 365 / Mac OS
24.09.2016, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 10:43 von LeibnizCasio.)
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:
Registriert seit: 21.07.2016
Version(en): 2007
Also sowas? Tabelle1 | A | B | C | 1 | Anzahl Objekte | Modifikationsintervall | Nutzungsdsauer | 2 | 3 | 0,3 | 1 | 3 | | | | 4 | Objekt 1 | Objekt 2 | Objekt 3 | 5 | 1,3 | 2,3 | 3,3 | 6 | 1,6 | 2,6 | 3,6 | 7 | 1,9 | 2,9 | 3,9 | Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
24.09.2016, 10:54
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2016, 10:55 von Käpt'n Blaubär.)
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:
|