Just nu i M3-nätverket
Gå till innehåll

VBA: anropa SUB med variabel


niklas1973
 Share

Rekommendera Poster

Hej.

Jag får inte det här att funka. Jag viil att varje Text_x rutin ska anropa en ny Text_x rutin via variabeln ch då man klickar på en cell.
Den första Suben tar han om vilken cell man väljer. 
Text_1 skriver ut den första texten och laddar variabeln med alternativen Text_2 och Text_3

Den första Suben borde då köra ch1 som innehåller Text_2 om man klickar på cell A2 och ch2  om man klickar på A3 ch1 som innehåller Text_3.
Jag har provat med Call, utan något alls och som nedan. 
Med application.run får jag felet "makrot är inaktiverat". Med Call eller utan Call får jag felet "Sub Function eller Property förväntas".

 

Tanken är här att man ska kunna stega sig igenom en berättelse beroende på vilken cell man klickar på. Det sker genom att olika SUBs som skriver ut text och presneterar nya val åberopas beroende på vilket val man gör.

 

Vad är felet jag gör?

KOD:
 

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ch1 As String
Dim ch2 As String

' cellens måste vara fylld

If Target.Address = "$A$2" Then Application.Run ch1

If Target.Address = "$A$3" Then Application.Run ch2


End Sub



Sub Text_1()
Dim ch1 As String
Dim ch2 As String
Range("a1") = "Du kan" & Chr(10) & "gå åt"
Range("a2") = "Väst"
Range("a3") = "öst"
ch1 = "Text_2"
ch2 = "Text_3"

End Sub



Sub Text_2()
Range("a1") = "Du gick åt Väst. Du ser en flod."
Range("a2") = "Simma i den."
Range("a3") = "Gå tillbaka"
ch1 = "Text_4"
ch2 = "Text_1"
End Sub



Sub Text_3()
Range("a1") = "Du gick åt öst. Du ser en kista. "
Range("a2") = "Öppna den"
Range("a3") = "Gå tillbaka"
ch1 = "Text_5"
ch2 = "Text_1"
End Sub



Sub Text_4()
Range("a1") = "Sim Sim"
Range("a2") = ""
Range("a3") = ""
End Sub



Sub Text_5()
Range("a1") = "Kistan är öppen"

Range("a2") = ""
Range("a3") = ""
End Sub

 

Länk till kommentar
Dela på andra webbplatser

Application.Run  ?

Call?

När behövs dessa? Inte vid normala anrop.

Private Sub ShowMyMessage(inData As String)
    MsgBox "Hello " & inData
End Sub


Sub helloWorld()
    Dim name As String
     name = InputBox("Ett namn")
    ShowMyMessage name
End Sub

Psst formatera kod som javascript så blir det ganska fint.

 

Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...