Problema con OptionButtons

13/11/2007 - 11:18 por Daniel Domínguez | Informe spam
Hola tengo un problemilla con visual basic en Excel. El caso es que tengo una
hoja en la que tengo 3 optionbuttons y quiero que en función del valor
seleccionado se modifiquen las celdas de la tabla.

Para ello me he creado la siguiente función

Option Explicit
Public Function tipoP(cualquiera As Integer) As String
If Sheets.Item("Hoja1").OptionButton1.Value = True Then
tipoP = "OFICINAS"
ElseIf Sheets.Item("Hoja1").OptionButton2.Value = True Then
tipoP = "FFVV"
ElseIf Sheets.Item("Hoja1").OptionButton3.Value = True Then
tipoP = "TOTAL"
End If
End Function

Y en los eventos click de los botones he puesto lo siguiente:

Option Explicit

Private Sub OptionButton1_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

Private Sub OptionButton2_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

Private Sub OptionButton3_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

El problema que tengo es que no consigo que me funcione, los datos de las
fórmulas que tengo en el excel (por ejemplo SUMAR.SI(A1:A10;tipoP(0);C1:C10))
no se me actualizan cuando cambio los botones.

Me parece que me falta algo. ¿Alquien me puede ayudar?

Muchas gracias por adelantado
 

Leer las respuestas

#1 David
13/11/2007 - 16:04 | Informe spam
Hola, Daniel.

Parece que tu problema se debe a que una función personalizada, por omisión
no es volátil. Eso significa que sólo se actualizará cuando cambien "las
celdas" que la alimentan, y en tu caso, es alimentada por objetos (los
botones de opción), no por celdas. Para volverla volátil, modifica tu
función a lo siguiente:

Public Function tipoP(cualquiera As Integer) As String
Application.Volatile
If Sheets.Item("Hoja1").OptionButton1.Value = True Then

y luego el resto de tu código. Esto debería permitir que tu función se
recalculara junto con la hoja, al ejecutar el método Calculate.

No olvides comentar los resultados.

Saludos...



"Daniel Domínguez" escribió:

Hola tengo un problemilla con visual basic en Excel. El caso es que tengo una
hoja en la que tengo 3 optionbuttons y quiero que en función del valor
seleccionado se modifiquen las celdas de la tabla.

Para ello me he creado la siguiente función

Option Explicit
Public Function tipoP(cualquiera As Integer) As String
If Sheets.Item("Hoja1").OptionButton1.Value = True Then
tipoP = "OFICINAS"
ElseIf Sheets.Item("Hoja1").OptionButton2.Value = True Then
tipoP = "FFVV"
ElseIf Sheets.Item("Hoja1").OptionButton3.Value = True Then
tipoP = "TOTAL"
End If
End Function

Y en los eventos click de los botones he puesto lo siguiente:

Option Explicit

Private Sub OptionButton1_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

Private Sub OptionButton2_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

Private Sub OptionButton3_Click()
Sheets.Item("Hoja1").EnableCalculation = True
Sheets.Item("Hoja1").Calculate
End Sub

El problema que tengo es que no consigo que me funcione, los datos de las
fórmulas que tengo en el excel (por ejemplo SUMAR.SI(A1:A10;tipoP(0);C1:C10))
no se me actualizan cuando cambio los botones.

Me parece que me falta algo. ¿Alquien me puede ayudar?

Muchas gracias por adelantado

Preguntas similares