Atualizar valores de macro quando o valor da célula é alterado

0

Eu tenho um controle de caixa de seleção com uma macro que recebe valor das colunas da célula 6 e a insere na 8ª ou na 9ª coluna, dependendo se a caixa de seleção está marcada ou desmarcada. Esta é a macro:

Public Sub CB_Read()

Dim oShape As Shape
Dim oTarget As Range
Dim iTarget As Range

Set oShape = ActiveSheet.Shapes(Application.Caller)
'Change the "Offset(Row,Column)" in the next line to whatever cell is desired for the status of the checkbox.
Set StdRate = oShape.TopLeftCell.Offset(0, 6)
Set oTarget = oShape.TopLeftCell.Offset(0, 8)
Set iTarget = oShape.TopLeftCell.Offset(0, 9)


If oShape.ControlFormat.Value = xlOff Then
    iTarget.Value = StdRate.Value * [cityIndex]
    oTarget.Value = ""
Else
    oTarget.Value = StdRate.Value * [cityIndex]

    iTarget.Value = ""
End If

End Sub

Gostaria agora de atualizar os valores nas colunas de deslocamento (iTarget.Value e oTarget.Value) para atualizar quando o valor na célula denominada [cityIndex] for alterado, sem ter que operar a caixa de seleção.

    
por user307009 12.03.2014 / 05:43

1 resposta

0

Uma maneira seria criar uma função do VBA que analisasse o valor da célula cityindex e alterasse o deslocamento adequadamente.

Exatamente como fazer isso depende do que você coloca na célula cityindex. Se for um número, você provavelmente poderá simplesmente adicionar esse número ao deslocamento da base para obter a coluna da direita. Se for texto, você precisará fazer uma pesquisa - se as cidades não mudarem muito, provavelmente será mais fácil fazer isso diretamente no código, caso contrário, você precisará de uma tabela de consulta em uma planilha e precisará fazer uma vlookup sobre isso.

    
por 12.03.2014 / 09:56