la variable mensaje lo he declarado siempre y cuando exista un 5 en el bucle para ahorrar memoria; ya que, tambien pude declararlo antes de inicar el bucle, pero en este último ya estaría metiendo a la memoria, la variable mensaje, sin saber si existe o no.
resulta que en este código funciona perfectamente tanto si la variable mensaje lo declaro antes de iniciar el bucle o como también en el momento en que se cumpla la condición.
Código:
Dim i As Long
Dim MostrarMensaje As Boolean
For i = 0 To 10
If i = 5 Then
Dim Mensaje As String
Mensaje = "Sí, existe 5"
MostrarMensaje = True
Else
MostrarMensaje = False
End If
Next i
If MostrarMensaje = True Then
MsgBox Mensaje, vbInformation
End If
PERO en este otro no funciona debido a que la variable es un contador. no se supone que cada ves que se declara una variable enpienza en null y el valor que se le asige será la variable inicial?
Código:
Dim i As Long
For i = 0 To 3
If i > 0 Then
Dim j As Long
Dim suma As Long
For j = 0 To i
suma = suma + j
Next j
End If
MsgBox "La suma desde (0) hasta (" & i & ") es: " & suma
Next i
lo correcto que mostraría el mensaje en cada (For i) sería:
Código:
(caso i=0) la suma desde (0) hasta (0) = 0
(caso i=1) la suma desde (0) hasta (1) = 1
(caso i=2) la suma desde (0) hasta (2) = 3 y NO ( 4)
(caso i=3) la suma desde (0) hasta (3) = 6 y NO (10)
el problema esta en que al cunplir la condicion y declarar la variable suma. ésta no incia con cero ya que suma lo que se obtuvo en el (For i) anterior.
Pues de aqui mi confusión. no se supone que se permite úncamente una variable en un procedimiento..? mi lógica es que cada ves que i > 0 destruye a la declaración y declara la misa variable.. o es que vasandose en que debe haher solo una variable con el mismo nombre en un procedimiento. una ves cunplida la condición al leer la linea de código "Dim suma As Long" verifica si se declaro en el For anterior, y si es así pasa por alto esa linea de código?
es esto cierto o que, ayuda?? :?