Cargar una hoja de cálculo a través de un formulario VBA
Ante todo muy feliz día del trabajador, que como corresponde estoy en eso y es por esto que después de varios intentos, me decidí a preguntar porque no logro armar lo que necesito.
Tengo armados varios formularios en VBA que se interrelacionan entre sí.
En todos tengo varios controles y como cada pregunta requiere de más de un tipo de respuesta, cada una está dentro de un grupo que contiene la pregunta, un optionbutton de dos opciones y un textbox.
Ahora bien, los optionbutton responden a la pregunta con un "SI" o un "NO" y en caso de ser "SI" la respuesta correcta entonces va al textbox e indica un número o un texto dependiendo de lo que se pregunta.
De ser "NO" la respuesta entonces va a la siguiente pregunta.
Pero en este mismo formulario algunas preguntas sólo tienen textbox y también la pregunta y el textbox están en un grupo.
Este mismo formulario llama a dos formularios diferentes uno que sólo tiene checkbox y que las respuestas completan una hoja de cálculo diferente y otro que tiene combobox y que se completa en otra hoja de cálculo distinta, es decir son 3 hojas de cálculo.
Estos botones se encuentran dentro del grupo que corresponde a la pregunta y que nuevamente, si responde SI, debería habilitarse el botón y si responde NO entonces pasar a la siguiente pregunta.
El problema que me surge es que no sé como programar los controles de formulario dentro del grupo.
Yo armé algo con solamente los option button y si bien funciona correctamente y carga los datos en la columna que corresponde, no lo hace en una sola fila de cada columna sino que la completa toda, es como que se repite la acción indefinidamente.
Ahora bien, en el medio de algunos de estos optionbutton están los textbox de los que hablé previamente, pero no sé como programarlos para que los guarde en la columna correspondiente.
Adjunto el código a ver si pueden ayudarme. No importa ahora cuál es la pregunta que luego carga el textbox con que me digan una, como hacer para que no se cargue indefinidamente y como habilitar el botón o dejarlo inactivo según la respuesta al optionbuton ya es más que suficiente
Desde ya, muchas gracias.
Marisa
Va el código
Private Sub BotonGrabarDatos_Click()
Dim obj As Object
Dim grupo1 As Boolean
Dim grupo2 As Boolean
Dim grupo5 As Boolean
Dim grupo6 As Boolean
Dim grupo7 As Boolean
Dim grupo8 As Boolean
Dim grupo9 As Boolean
Dim grupo10 As Boolean
Dim grupo11 As Boolean
Dim grupo12 As Boolean
Dim grupo13 As Boolean
Dim grupo14 As Boolean
Dim grupo15 As Boolean
Dim grupo16 As Boolean
Dim grupo17 As Boolean
Dim grupo18 As Boolean
Dim grupo19 As Boolean
Dim grupo20 As Boolean
Dim grupo21 As Boolean
Dim grupo22 As Boolean
Dim grupo23 As Boolean
Dim grupo24 As Boolean
Dim ultimafila As Double 'Variable que almacena el valor en la última fila libre
'Escanear a través de cada objeto activo
For Each obj In ActiveDatosPMI.OLEObjects
Set obj = obj.Object
'Analizar para verificar que es un botón de opción
If TypeOf obj Is MSForms.OptionButton Then
'Pruebe a ver si el optionbutton es cierto y en uno de los grupos
If obj.GroupName = "grupo1" And obj.Value = True Then
RingStent = True
End If
If obj.GroupName = "grupo2" And obj.Value = True Then
FenNum = True
End If
If obj.GroupName = "grupo5" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo6" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo7" And obj.Value = True Then
RingStent = True
End If
If obj.GroupName = "grupo8" And obj.Value = True Then
FenNum = True
End If
If obj.GroupName = "grupo9" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo10" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo11" And obj.Value = True Then
RingStent = True
End If
If obj.GroupName = "grupo12" And obj.Value = True Then
FenNum = True
End If
If obj.GroupName = "grupo13" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo14" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo15" And obj.Value = True Then
RingStent = True
End If
If obj.GroupName = "grupo16" And obj.Value = True Then
FenNum = True
End If
If obj.GroupName = "grupo17" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo18" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo19" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo20" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo21" And obj.Value = True Then
RingStent = True
End If
If obj.GroupName = "grupo22" And obj.Value = True Then
FenNum = True
End If
If obj.GroupName = "grupo23" And obj.Value = True Then
HookNum = True
End If
If obj.GroupName = "grupo24" And obj.Value = True Then
HookNum = True
End If
End If
Next
Range("A:A") = grupo1
Range("B:B") = grupo2
Range("E:E") = grupo5
Range("G:G") = grupo6
Range("I:I") = grupo7
Range("K:K") = grupo8
Range("M:M") = grupo9
Range("O:O") = grupo10
Range("Q:Q") = grupo11
Range("S:S") = grupo12
Range("U:U") = grupo13
Range("W:W") = grupo14
Range("Y:Y") = grupo15
Range("AA:AA") = grupo16
Range("AC:AC") = grupo17
Range("AF:AF") = grupo18
Range("AJ:AJ") = grupo19
Range("AK:AK") = grupo20
Range("AM:AM") = grupo21
Range("AO:AO") = grupo22
Range("AR:AR") = grupo23
Range("BB:BB") = grupo24
ultimafila = ActiveDatosPMI.UsedRange.Row - 1 + ActiveDatosPMI.UsedRange.Row.Count
Cells(ultimafila + 1, 1) = grupo1
Cells(ultimafila + 1, 2) = grupo2
Cells(ultimafila + 1, 5) = grupo5
Cells(ultimafila + 1, 7) = grupo6
Cells(ultimafila + 1, 9) = grupo7
Cells(ultimafila + 1, 11) = grupo8
Cells(ultimafila + 1, 13) = grupo9
Cells(ultimafila + 1, 15) = grupo10
Cells(ultimafila + 1, 17) = grupo11
Cells(ultimafila + 1, 19) = grupo12
Cells(ultimafila + 1, 21) = grupo13
Cells(ultimafila + 1, 23) = grupo14
Cells(ultimafila + 1, 25) = grupo15
Cells(ultimafila + 1, 27) = grupo16
Cells(ultimafila + 1, 29) = grupo17
Cells(ultimafila + 1, 32) = grupo18
Cells(ultimafila + 1, 36) = grupo19
Cells(ultimafila + 1, 37) = grupo20
Cells(ultimafila + 1, 39) = grupo21
Cells(ultimafila + 1, 41) = grupo22
Cells(ultimafila + 1, 44) = grupo23
Cells(ultimafila + 1, 54) = grupo24
End Sub