Umrechnung von Werten

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label ListBox MsgBox
Bild

Betrifft: Umrechnung von Werten
von: MatzeBo75
Geschrieben am: 03.08.2015 17:06:13

Hallo zusammen,
bin neu hier und brauch jetzt auch mal eure Hilfe.
Habe in diesem Forum schon viele Lösungen für meine Problemchen gefunden.
Dafür erst mal DANKE.
Ich bastle mir ein eigenes Dungeon-Game (Just for Fun).
Im Game arbeite ich mit Geldwerten in Kupfer, Silber und Gold
In meinen Tabellen im Hintergrund sollen aber nur die Kupfer-Werte stehen.
Sprich: In der Tabelle steht ein Wert von 111.111 Kupfer.
Dies soll dann beim Aufruf einer Userform in den entsprechend unterteilten Labels umgerechnet werden.
100 Kupfer = 1 Silber
100 Silber = 1 Gold
= 11 Gold, 11 Silber, 11 Kupfer
Wenn dann Kupfer hinzukommt und die 100er Marke überschritten wird, soll auch das Silber um einen hoch gehen und das Kupfer wieder zurück springen. Beim Geld ausgeben natürlich auch.
Ich habe schon viele Foren durchsucht und scheinbar hatte noch keiner so ein Problem.
Vllt. könnt Ihr mir ja helfen. Ich komm nicht weiter. Danke schon mal im Voraus.
Gruß MatzeBo75

Bild

Betrifft: AW: Umrechnung von Werten
von: Michael
Geschrieben am: 03.08.2015 17:45:47
Hi MatzeBo75,
z.B. so:

Sub umrechnen()
Dim kupfer&, silber&, gold&, alle&
Dim Skupfer&, Ssilber&, Sgold&, Salle$
alle = Range("e3").Value ' da stehen die 111111,
      ' ob sie nun mit oder ohne 1000er . angezeigt werden.
      
' 1. Rechenoperationen *immer* auf alle
kupfer = 50: silber = 70: gold = 5
alle = alle + kupfer
alle = alle + silber * 10 ^ 2
alle = alle + gold * 10 ^ 4
MsgBox alle
' 2. Anzeige *immer* aus Salle
 Salle = Range("e3").Value  ' hier auch
' bzw.
'Salle = alle
Skupfer = Right(Salle, 2)
Ssilber = Mid(Right(Salle, 4), 1, 2)
If Len(Salle) < 5 Then
    Sgold = "0"
  Else
    Sgold = Mid(Salle, 1, Len(Salle) - 4)
End If
MsgBox "g " & Sgold & " s " & Ssilber & " k " & Skupfer
End Sub
Schöne Grüße,
Michael

Bild

Betrifft: AW: Umrechnung von Werten
von: MatzeBo75
Geschrieben am: 03.08.2015 21:33:20
Danke Michael.
Erster Test ausserhalb des Games funktioniert Perfekt.
Werde es einbauen und testen.
Gruß MatzeBo75

Bild

Betrifft: AW: Umrechnung von Werten
von: MatzeBo75
Geschrieben am: 04.08.2015 10:24:36
Hallo nochmal,
leider funktioniert es noch nicht so ganz.
Es werden mir die Kupferwerte auch in der Silber-Spalte angezeigt.
Hier mal der Code für die Anzeige im Shop (Inventar-Verkauf).
Kann mir jemand 'nen Tipp geben ?

Sub umrechnen_shop_inventar()
Dim kupfer&, silber&, gold&, alle&
Dim Skupfer&, Ssilber&, Sgold&, Salle$
i = 0
Shop.ListBox1.Clear
Shop.ListBox1.ColumnCount = 5                                                           ' _
Spaltenanzahl festlegen
Shop.ListBox1.ColumnWidths = "1,3cm;4cm; 1,3cm;1,2cm; 1cm"                            ' _
Spaltenbreite festlegen
Sheets("Inventar").Activate
Max = Worksheets("Inventar").Cells(Rows.Count, 1).End(xlUp).Row
For lng = 2 To Max
For ggst = 2 To Max
If Worksheets("Gegenstände").Cells(ggst, 1) = Worksheets("Inventar").Cells(lng, 2) Then
    alle = Worksheets("Gegenstände").Cells(ggst, 4).Value                     ' da stehen die  _
111111, ob sie nun mit oder ohne 1000er . angezeigt werden.
    
    ' 1. Rechenoperationen *immer* auf alle
    kupfer = 50: silber = 70: gold = 5
    alle = alle + kupfer
    alle = alle + silber * 10 ^ 2
    alle = alle + gold * 10 ^ 4
    
    ' 2. Anzeige *immer* aus Salle
    Salle = Worksheets("Gegenstände").Cells(ggst, 4).Value ' hier auch bzw. Salle = alle
    Skupfer = Right(Salle, 2)
    Ssilber = Mid(Right(Salle, 4), 1, 2)
    If Len(Salle) < 5 Then
        Sgold = "0"
      Else
        Sgold = Mid(Salle, 1, Len(Salle) - 4)
    End If
    
    Shop.ListBox1.AddItem Cells(lng, 1).Value                                               '  _
Anzahl Gegenstände
    Shop.ListBox1.Column(1, i) = Cells(lng, 2).Value                                        '  _
Gegenstand im Inventar
    Shop.ListBox1.Column(2, i) = Sgold                                                      '  _
Gold VK-Preis
    Shop.ListBox1.Column(3, i) = Ssilber                                                    '  _
Silber VK-Preis
    Shop.ListBox1.Column(4, i) = Skupfer                                                    '  _
Kupfer VK-Preis
End If
'MsgBox Worksheets("Gegenstände").Cells(ggst, 1) & " / " & Worksheets("Inventar").Cells(lng, 2)
Next ggst
i = i + 1
Next lng
End Sub


Bild

Betrifft: AW: Umrechnung von Werten
von: Michael
Geschrieben am: 04.08.2015 19:26:46
Hi MatzeBo75,
erst nach dem Absenden habe ich gemerkt, daß die Logik nicht ganz fehlerfrei ist, aber dann hab ich mir gedacht, bevor ich einen Nachtrag poste, überlasse ich das Dir: mit VBA gut!
Man müßte theoretisch Stringlängen abfragen, insbesondere auch auf Länge kleiner 3, aber das ist alles Gefummel, ich habe es verworfen zugunsten einer rechnerischen Lösung, die durch 100 bzw. 10000 dividiert und die Nachkommastellen abschneidet:

Option Explicit
Sub umrechnen()
Dim alle&
Dim werte&(2)
Dim i&, j&
' die 3 vorhandenen Zeilen für die Addition kannst Du
' alle = alle + kupfer + silber * 10 ^ 2 + gold * 10 ^ 4
' auch zusammenfassen.
For i = 3 To 10
  alle = Range("e" & i).Value
  werte(0) = Int(alle / 10 ^ 4)
  werte(1) = Int((alle - werte(0) * 10 ^ 4) / 10 ^ 2)
  werte(2) = alle - werte(0) * 10 ^ 4 - werte(1) * 10 ^ 2
  For j = 0 To 2
    Cells(i, j + 6).Value = CStr(werte(j))
    ' CStr ist eine explizite Typumwandlung von Zahlenwerten
    ' in einen String; sollte aber auch problemlos ohne gehen.
  Next
Next
End Sub
Ist weniger Schreibarbeit und tut immer.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Umrechnung von Werten
von: MatzeBo75
Geschrieben am: 04.08.2015 21:51:11
Ein erneutes Danke an dich, Michael.
Es scheint zu funktionieren.
Morgen kommt der Hardcoretest in allen Modulen.
Ich habe deinen Unterton verstanden.
Da ich schon mehrere "Programme" geschrieben habe, hielt
ich mein Excel-VBA Wissen für gut.
Aber für dieses Forum wohl nicht gut genug.
Ich werde es ändern...
Nochmals Danke
MatzeBo75

Bild

Betrifft: Gerne und Hinweise
von: Michael
Geschrieben am: 05.08.2015 13:59:09
Hi MatzeBo75,
denk Dir nix, genau so hab ich vor gut einem Jahr auch gedacht, bis ich "ernsthaft" angefangen habe, was Komplexeres zu programmieren: welcome to the club.
Vielleicht sollte ich noch erwähnen, daß ich mir bei gewissen Sachen auch immer wieder überlege, ob es Sinn macht, sie in Excel zu programmieren: wenn Du was veröffentlichen und evtl. Geld damit verdienen willst, schränkst Du damit den potentiellen Kundenkreis ein. Soll heißen: die meisten Leute in meinem Umfeld benutzen eher eines der kostenlosen Office-Pakete, und kaum ein Excel-Makro läuft direkt ohne mehr oder weniger aufwendige Anpassung.
Sofern Du passabel englisch kannst, magst Du Dir evtl. Anregungen bei der MS virtual academy holen (die haben auch dt. Kurse, so isses nicht, aber der ist auf engl.); die haben eine ganze Reihe kostenloser Kurse, u.a. den: http://www.microsoftvirtualacademy.com/training-courses/game-production-basics
Der Kurs ist für Einsteiger ins Spiele-Business gedacht und enthält u.a. Hinweise auf diverse kostenlose Software zur Erstellung von Spielen, u.a. auch die hauseigenen .Net-Compiler.
Gutes Gelingen,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Umrechnung von Werten"