problemas con viaul Basic de excel

27/08/2004 - 09:55 por David | Informe spam
Mi problema es el siguiente. Tengo en un formulario un
ComboBox y 2 TextBox. Lo que quiero hacer es que al
escoger del Combo un valor se relenen automaticamente los
dos TextBox. El codigo que he usado es el siguiente:

Private Sub ComboBox_config_auxiliar_change()

Worksheets("Visual").Range("B32").Value =
ComboBox_config_auxiliar.Value
TextBox_poder_calorifico.Value = Worksheets("Visual").Cells
(35, 2).Value
TextBox_precio.Value = Worksheets("Visual").Cells(36,
2).Value

End Sub

El problema que tengo es que solo se me actualiza el
primero de los dos TextBox y el otro se queda con el mismo
valor que tenia antes. Si ejecuto el codigo paso a paso
funciona a la perfeccion pero ejecutandolo normalmente
solo se actualiza el primero de los 2 TextBox. He
conseguido medio areglarlo poniendo un retardo de 1
segundo antes de salirme de la funcion. El codigo que he
usado es:

Application.Wait Now + TimeValue("00:00:01")

El problema que se me plantea con esta solucion es que el
codigo se relentiza demasiado.

Si a alguien se le ocurre una solucion mejor sería de
agradecer ya que me urge mucho terminar dicho programa.

Un saludo y gracias
 

Leer las respuestas

#1 Héctor Miguel
28/08/2004 - 07:50 | Informe spam
hola, David !

... problema ... en un formulario un ComboBox y 2 TextBox.
... quiero ... que al escoger del Combo ... se relenen automaticamente los dos TextBox.
... solo se me actualiza el primero de los dos TextBox ...
... ejecuto el codigo paso a paso funciona ... pero ... normalmente solo se actualiza el primero ...
...he conseguido medio arreglarlo poniendo un retardo de 1 segundo antes de salirme de la funcion.
Application.Wait Now + TimeValue("00:00:01") [...]



'basado' en que la instruccion 'wait' suspende ->todo EXCEPTO<- 'procesos internos' [como el recalculo]...
es posible que la 'complejidad' de las formulas de tu modelo... [por si solas] ->se tomen 'su tiempo'<- :))
lo que [y si fuera aplicable] 'sumado' a una [posible] vinculacion de celdas 'precedentes y dependientes' ...
NO esta 'dando el suficiente tiempo' para que el valor de dicha celda ya 'hubiera sido actualizado'
al momento en que este es 'tomado' [por el codigo] para 'depositarlo' en el segundo textbox [???]

si usas excel xp [2002] en adelante... podrias usar un bucle 'vacio' [mientras excel 'termina' de recalcular el modelo]
[quizas no 'se tarde' un segundo... pero debe 'andar muy cerca'] :))
==> suponiendo que la aplicacion 'se encuentra' en modo de calculo ->automatico<- <==Private Sub ComboBox_config_auxiliar_change()
Worksheets("Visual").Range("B32") = ComboBox_config_auxiliar

Do While Application.CalculationState <> xlDone
DoEvents
Loop
TextBox_poder_calorifico = Worksheets("Visual").Cells(35, 2)
TextBox_precio = Worksheets("Visual").Cells(36, 2)
End Sub

o... [para cualquier version de excel] 'forzar' al recalculo ANTES de continuar con la 'carga' de los valores
[se 'espera' que al forzar un recalculo por codigo, la 'siguiente' instruccion en vba tambien 'se espere'] :))
Private Sub ComboBox_config_auxiliar_change()
Worksheets("Visual").Range("B32") = ComboBox_config_auxiliar
Application.Calculate
TextBox_poder_calorifico = Worksheets("Visual").Cells(35, 2)
TextBox_precio = Worksheets("Visual").Cells(36, 2)
End Sub

¿comentas?
saludos,
hector.

Preguntas similares