Benutzer mit den meisten Antworten
Collatz Reihe in Excel mithile von VBA

Frage
-
Hallo
In der Schule nutzen wir Visual Studio 6.0 und Excel 97 2002.
Unsere Aufgabe ist es eine Userform (aufrufbar per STRG+M) zu erstellen welche es ermöglicht einen Start- und Endwert festzulegen. Dies habe ich bereits getan. Nun soll bei Excel (angenommen SW: 5 und EW: 9) in Zeile 1 5 stehen und dann hochgezählt werden bis 9 also bei 1A = 5, bei 1B = 6, bei 1C = 7, bei 1D = 8 usw.
Immoment klappt nicht mal das.
Dann soll für den Wert die Collatz Reihe berechnet werden und dann für den Wert 6 usw. und das halt immer nach unten also eine Spalte tiefer etc.
Ich komme einfach nicht weiter.
Momentanes Programm:
Dim startwert As Integer Dim endwert As Integer Dim zeile As Integer Dim spalte As Integer Dim zahl As Integer Private Sub cbCollatz_Click() startwert = TextBox1.Text endwert = TextBox2.Text zeile = 1 spalte = 1 For n = startwert To endwert zahl = startwert Cells(zeile, spalte) = zahl z = 1 Cells(zeile, spalte) = startwert startwert = 1 + startwert Do While zahl <> 1 If zahl Mod 2 = 0 Then zahl = zahl / 2 Else zahl = zahl * 3 + 1 End If zeile = zeile + 1 spalte = spalte + 1 Cells(zeile, spalte) = zahl Loop Next n End Sub Private Sub cbUserform2öffnen_Click() UserForm2.Show End Sub
Code für Collatz:
Do While zahl <> 1 If zahl Mod 2 = 0 Then zahl = zahl / 2 Else zahl = zahl * 3 + 1 End If zeile = zeile + 1 spalte = spalte + 1 Cells(zeile, spalte) = zahl Loop
Antworten
-
Hi,
...wo soll man da anfangen...
Also, um einen Wert per VBA in eine Zelle zu schreiben, brauchst du etwas wie:
Worksheets("Sheet1").Cells(5, 3).Value = 14
oder
Sheets("Tabelle1").Range("A1").Value = 14
Wenn du jetzt nicht weiterkommst, weiterfragen...
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 23. April 2018 05:10
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. April 2018 08:15
-
Naja,....
Ich weiß jetzt nicht, ob es sinnvoll ist sich eine Lösung für eine Aufgabe in der Schule in einem Internetforum zu holen. Da kannst du genau so gut morgen im Bus kurz bei deinen Kumpels abschreiben oder auf die Erklärung des Lehrers warten (Nachdem du es vorher zumindest selbst versucht hast).
Folgendes sollte dir allerdings weiter helfen fall noch nicht bekannt:
1. Im VBA-Editor kannst du druch doppelklick auf die graue Leiste Haltepunkte setzen. Die Ausführung wird an dieser Stelle angehalten, und du kannst dir die Werte in unterschiedlichen Variablen ansehen. Durch Druck auf die Playtaste geht's dann wieder weiter.
2. Bei Rechtsklick auf eine Variable findest du im Kontexmenü den Eintrag "Überwachung hinzufügen". Der Wert der Variable ist dann während der Ausführung in einem separaten Fenster sichtbar.
3.Nutzen von Messageboxen
Msgbox "Hallo Welt!" 'Ausgabe von "Hallo Welt!" in Popup Msgbox test 'Ausgabe des Wertes der Variable test in Popup
4. Wenn du über das Menü Ansicht das Direktfenster einblendest kannst du dir dort mit debug.Print Werte anzeigen lassen und sie danach analysieren:
Sub test() Dim i For i = 0 To 10 Debug.Print i Next End Sub
Viel Erfolg!
PS: Pass auf dass du keine Endlosschleifen baust. Sonst stürzt dir dein Excel ab. Am besten baust du in Schleifen zu Beginn einen Haltepunkt, bis du weißt, dass sicher beendet wird. Ist mühsehlig beim durchklicken, aber das ist das Warten auf das abstürzende Excel auch ;). Wenn du etwas mehr Erfahrung gesammelt hast, lässt du das mit dem Haltepunkt in der Schleife dann wieder weg.
- Bearbeitet Mail0 Mittwoch, 18. April 2018 06:19
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 23. April 2018 08:49
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. April 2018 08:15
Alle Antworten
-
Hi,
...wo soll man da anfangen...
Also, um einen Wert per VBA in eine Zelle zu schreiben, brauchst du etwas wie:
Worksheets("Sheet1").Cells(5, 3).Value = 14
oder
Sheets("Tabelle1").Range("A1").Value = 14
Wenn du jetzt nicht weiterkommst, weiterfragen...
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 23. April 2018 05:10
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. April 2018 08:15
-
Naja,....
Ich weiß jetzt nicht, ob es sinnvoll ist sich eine Lösung für eine Aufgabe in der Schule in einem Internetforum zu holen. Da kannst du genau so gut morgen im Bus kurz bei deinen Kumpels abschreiben oder auf die Erklärung des Lehrers warten (Nachdem du es vorher zumindest selbst versucht hast).
Folgendes sollte dir allerdings weiter helfen fall noch nicht bekannt:
1. Im VBA-Editor kannst du druch doppelklick auf die graue Leiste Haltepunkte setzen. Die Ausführung wird an dieser Stelle angehalten, und du kannst dir die Werte in unterschiedlichen Variablen ansehen. Durch Druck auf die Playtaste geht's dann wieder weiter.
2. Bei Rechtsklick auf eine Variable findest du im Kontexmenü den Eintrag "Überwachung hinzufügen". Der Wert der Variable ist dann während der Ausführung in einem separaten Fenster sichtbar.
3.Nutzen von Messageboxen
Msgbox "Hallo Welt!" 'Ausgabe von "Hallo Welt!" in Popup Msgbox test 'Ausgabe des Wertes der Variable test in Popup
4. Wenn du über das Menü Ansicht das Direktfenster einblendest kannst du dir dort mit debug.Print Werte anzeigen lassen und sie danach analysieren:
Sub test() Dim i For i = 0 To 10 Debug.Print i Next End Sub
Viel Erfolg!
PS: Pass auf dass du keine Endlosschleifen baust. Sonst stürzt dir dein Excel ab. Am besten baust du in Schleifen zu Beginn einen Haltepunkt, bis du weißt, dass sicher beendet wird. Ist mühsehlig beim durchklicken, aber das ist das Warten auf das abstürzende Excel auch ;). Wenn du etwas mehr Erfahrung gesammelt hast, lässt du das mit dem Haltepunkt in der Schleife dann wieder weg.
- Bearbeitet Mail0 Mittwoch, 18. April 2018 06:19
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 23. April 2018 08:49
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. April 2018 08:15