es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Con VBA determine qué botón de opción en un conjunto agrupado está seleccionado en PowerPoint.

He intentado tantas variaciones sin éxito que he perdido la cabeza. Necesito establecer un grupo de variables basadas en qué botón de opción se selecciona dentro de su grupo correspondiente. Hay 3 grupos simplemente etiquetados como OptionGroup1, OptionGroup2 y OptionGroup3. Cuando se ejecuta el botón de inicio, necesito determinar qué opciones están seleccionadas y establecer las variables correspondientes para su uso en otras partes del código. PowerPoint definitivamente no es lo mismo que Excel y no puedo encontrar la sintaxis correcta para ello. Este intento particular me da “error en tiempo de ejecución 438”, “el objeto no admite esta propiedad o método”

Set myDocument = ActivePresentation.Slides(1)

Select Case myDocument.Shapes.GroupName = OptionGroup2

    Case Is = 1: ACLDelay = 1
    Case Is = 2: ACLDelay = 2
    Case Is = 3: ACLDelay = 3
    Case Is = 4: ACLDelay = Int((4 * Rnd) + 1)

End Select

Select Case myDocument.Shapes.GroupName = OptionGroup1

    Case Is = 1: RunInt = 15
    Case Is = 2: RunInt = 60
    Case Is = 3: RunInt = 30
    Case Is = 4: RunInt = 5

End Select

Select Case myDocument.Shapes.GroupName = OptionGroup1

    Case Is = 1: MODDelay = 1.5
    Case Is = 2: MODDelay = 1
    Case Is = 3: MODDelay = 2
    Case Is = 4: MODDelay = 0.5

End Select
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que intenta comparar el nombre del grupo de una forma con el nombre del grupo de opción, lo que siempre resultará en un error. En su lugar, el código debe iterar a través de cada botón de opción en el grupo para verificar cuál está seleccionado.

    Un enfoque mejor sería usar el objeto OptionButton en PowerPoint VBA para verificar si un botón de opción específico está seleccionado. Aquí hay un ejemplo de cómo hacerlo:

    Dim optButton As OptionButton
    
    ' Compruebe el Grupo de Opciones 1
    For Each optButton In ActivePresentation.Slides(1).Shapes("OptionGroup1").GroupItems
        If optButton.Value = True Then
            Select Case optButton.Name
                Case "OptionButton1": RunInt = 15
                Case "OptionButton2": RunInt = 60
                Case "OptionButton3": RunInt = 30
                Case "OptionButton4": RunInt = 5
            End Select
            Exit For
        End If
    Next optButton
    
    ' Compruebe el Grupo de Opciones 2
    For Each optButton In ActivePresentation.Slides(1).Shapes("OptionGroup2").GroupItems
        If optButton.Value = True Then
            Select Case optButton.Name
                Case "OptionButton5": ACLDelay = 1
                Case "OptionButton6": ACLDelay = 2
                Case "OptionButton7": ACLDelay = 3
                Case "OptionButton8": ACLDelay = Int((4 * Rnd) + 1)
            End Select
            Exit For
        End If
    Next optButton
    
    ' Compruebe el Grupo de Opciones 3
    For Each optButton In ActivePresentation.Slides(1).Shapes("OptionGroup3").GroupItems
        If optButton.Value = True Then
            Select Case optButton.Name
                Case "OptionButton9": MODDelay = 1.5
                Case "OptionButton10": MODDelay = 1
                Case "OptionButton11": MODDelay = 2
                Case "OptionButton12": MODDelay = 0.5
            End Select
            Exit For
        End If
    Next optButton
    

    Este código itera a través de cada botón de opción en el grupo y verifica si está seleccionado. Si un botón de opción está seleccionado, se establece la variable correspondiente en función de su nombre. Tenga en cuenta que el ejemplo asume que los botones de opción están nombrados “OptionButton1”, “OptionButton2”, etc.

    ¡Espero que esto ayude!

Comments are closed.