De entrada, muchas gracias por NO hacerme caso con lo de indentar tu código
, ya te lamentarás cuando programes códigos largos... en fin.
Estás muy perdido. Así en principio, deberías de leerte un manual de Visual Basic antes de intentar cosas más complicadas, porque te damos cosas hechas y que funcionan y te las cargas. xD
De entrada, no sé para que quieres esta parte del código:
Public Sub A1()
Dim x As String, z
Dim i As Integer
i = InStr(a, "clean")
If i = 0 Then
'no ta
Else
E = 1 'la cambia si se encuentra clean
End If
i = InStr(a, "jo")
If i = 0 Then
Else
F = 1
End If
End Sub
¿Para saber si está clean?. Eso ya lo hace tanto el código de cΔssiΔnі como el mío. Comprueban si existe el comando clean con if o con select case pero ambos lo comprueban, no necesitas ningún if antes.
Y esto ya...
If E = 1 Then 'comando clean
Dim sCacho() As String
Dim sResultado As String
Trim$ (a) ' quita espacios al principio-final
sCacho = Split(a, " ")
sResultado = ""
For i = 0 To UBound(sCacho)
Select Case (LCase$(sCacho(i)))
Case "clean": sResultado = sResultado & sCacho(i) & " "
MsgBox "indicar parametro"
Case "clean /q": sResultado = sResultado & sCacho(i) & " "
MsgBox "clean /q"
Case "clean /s": sResultado = sResultado & sCacho(i) & " "
MsgBox "clean /S"
End Select
Next
MsgBox sResultado
End If
¿Pero qué lío has hecho ahí?. ¿Un msgbox para cada resultado? Por qué modificas el código de cΔssiΔnі si funcionaba bien?
Private Sub Cmd_Click()
sCadena = Trim$(Text1.Text)
sCacho = Split(sCadena, " ")
sResultado = ""
For I = 0 To UBound(sCacho)
Select Case (LCase$(sCacho(I)))
Case "clean": sResultado = sResultado & sCacho(I) & " "
Case "/q": sResultado = sResultado & sCacho(I) & " "
Case "/s": sResultado = sResultado & sCacho(I) & " "
End Select
Next
MsgBox sResultado
End Sub
El Msgbox sResultado va sólo al final, no uno por cada case, el case lo que hace es ir añadiendo los parámetros si se los encuentra y sino no añade nada, no tienes que poner un msgbox por cada case. Eso sobra.
Case "clean": sResultado = sResultado & sCacho(i) & " "
MsgBox "indicar parametro"
Y eso tampoco tengo idea para que lo has puesto. Si ese case lo que hace es si encuentra la cadena clean la almacena en sResultado, sobra ahí msgbox, igual que todos los demás, un msgbox al final y listo.
Por último decirte que no pegues todo el código, queda mucho más claro tabulado y con saltos de línea para separar algunas cosas tal y como lo tenemos cΔssiΔnі y yo. Así como tú lo pones no sé si es que lo ves más claro, pero lo que haces es hacerlo más ilegible. Quitando todo lo que tú pones y dejando sólo y exclusivamente lo de cΔssiΔnі el código funciona perfectamente. Así que no lo modifiques mejor. Y sobre todo intenta leer y aprender a programar en Visual Basic antes de meterte en proyectos que te vienen grandes, es sólo un consejo.
Saludos!