AW: Excel RPG
07.05.2021 06:49:06
Klaus
Hallo Andy,
du wirst wohl die ganze Datei hochladen müssen - der Code läuft sonst nur bis hier:
' Initial mapUpdate
Sheets("RPG_map").Range("B2:U21").Copy
und geht dann mit "Index ausserhalb des Bereichs" in den Fehler.
Mein Tipp: Erstelle ganz am Anfang alle Blätter die du brauchst auch per VBA-Code.
[EDIT]: Achso, ich muss "Worksheet Activate" starten, nicht "Initialise"!
Kurz über den Code geschaut ohne tief einzusteigen:
' Schaltet Ereignismakros und Blattschutz aus, damit Zellen ausgewählt und verändert werden dürfen
Application.ActiveSheet.Unprotect
Das ist unnötig! Du kannst den Blattschutz auch so setzen, dass "Mensch nein, VBA ja" ändern kann. Dann muss der nicht jedesmal an/ausgeschaltet werden.
' Inventar
Range("W2").ColumnWidth = 2 [...]
Hier hast du vergessen, mit Punkt-Range zu referenzieren. Oder ist das absicht, weil du direkt vorher ein Blatt kopiert hast das jetzt aktiv ist? Dann würde ich trotzdem "with ActiveSheet" einrücken, und wenn es nur für die Optik und durchgehenden Stil ist ....
'# SELECTION CHANGE
' Wenn die Auswahl geändert wird
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Das funktioniert nicht, da ich deinen ganzen Code natürlich in ein Modul geladen habe.
' Inventar
Sheets("RPG").Range("Y3").Value = muenzen
Sheets("RPG").Range("Z3").Value = herzen
Sheets("RPG").Range("X3").Value = Sheets("RPG_detail").Cells(19, 1 + Spielstand).Value
Sheets("RPG").Range("X4").Value = Sheets("RPG_detail").Cells(20, 1 + Spielstand).Value
Sheets("RPG").Range("X5").Value = Sheets("RPG_detail").Cells(21, 1 + Spielstand).Value
Sheets("RPG").Range("X6").Value = Sheets("RPG_detail").Cells(22, 1 + Spielstand).Value
Sheets("RPG").Range("X7").Value = Sheets("RPG_detail").Cells(23, 1 + Spielstand).Value
WITH Sheets("RPG") .....
If status = "c" Then
MsgBox "Nein, erst Rot fangen!", Title:=KIname
ElseIf status = "b" Then
MsgBox "Ah, du hast mich.", Title:=KIname
Call changeQuestCode("change", 7, "e")
ElseIf status = "e" Then
MsgBox "Du hast mich schon gefangen.", Title:=KIname
Hier bin ich nicht hingekommen. Ich kann mir aber vorstellen, dass die "Dialog"-MsgBox eher nervig wird. Mach doch lieber eine große verbundene Zelle auf dem "RPG" Sheet, mit rotem Rahmen und knalligem Hintergrund, in der die Dialoge gezeigt werden. Das hat dann so einen JRPG Flair, wie die alten "Secret of Mana".
' Karte zeichnen
' Rand
.Range("B2:B84").Value = "X"
.Range("B2:CF2").Value = "X"
.Range("B84:CF84").Value = "X"
.Range("CF2:CF84").Value = "X"
Da ich das Spiel nicht testen konnte - ist es wichtig wo exakt die X und H sind, oder könntest du hier auch einen Map-Editor machen?
Wie gesagt, ich konnte es nicht ausprobieren - Lad doch einfach die Datei :-)
Kann mir aber vorstellen dass das ganz witzig ist - vor allem, da kleine Excel-Games auch mal im Büro gespielt werden können *hust*
Und das klassische Rougelike auch heute noch funktionieren, hat zuletzt "A Dark Room" gezeigt.
Und bei EtoPHG's Zweig antwortest du einfach mit "Aye, Sheriff".
LG,
Klaus M.