Posicione exatamente o novo botão de opção no VBA

Posicione exatamente o novo botão de opção no VBA

Existe uma maneira de posicionar e dimensionar exatamente um novo botão de opção no VBA ou em uma macro?

O código que estou usando insere um novo botão de opção em qualquer célula atualmente selecionada em uma planilha.

Se você executar o código novamente, ele inserirá um segundo botão exatamente em cima do primeiro.

Ele também define o tamanho dos botões de opção de acordo com o tamanho da célula selecionada.

O que preciso fazer é indicar no código a célula onde desejo que o novo botão de opção seja inserido, F15, e definir o tamanho exato do botão e a posição esquerda/direita e para cima/para baixo.

Isso ocorre para que o botão Opção seja sempre inserido na mesma célula, na mesma posição e sempre com o mesmo tamanho.

Isso pode ser feito?

O código para criar/inserir o novo botão de opção é:

Sub AddOptionButton()
    With ActiveSheet.OptionButtons.Add(Selection.Left, Selection.Top, 
Selection.Width, Selection.Height)
        .Name = "NewOptionButton"
        .Caption = "Green"
    End With
End Sub

Responder1

Em geral, você deseja evitar o uso de seleções no código

Você pode atribuir o intervalo a uma variável e colocar o botão nela:

Sub AddOptionButton()
    Dim myRange as Range

    Set myRange = Range("C3")
    With ActiveSheet.OptionButtons.Add(myRange.Left, myRange.Top, myRange.Width, myRange.Height)
        .Name = "NewOptionButton"
        .Caption = "Green"
    End With
End Sub

Mas talvez seja melhor passar o intervalo para uma função:

Function AddOptionButton(myRange as Range)
    With ActiveSheet.OptionButtons.Add(myRange.Left, myRange.Top, myRange.Width, myRange.Height)
        .Name = "NewOptionButton"
        .Caption = "Green"
    End With
End Function

Para o qual você pode ligar de qualquer lugar em Sub:

Call AddOptionButton(Range("F15"))

informação relacionada