Como controlar as células do Excel juntamente com o script vba?

0

No userform, há nomes de produtos ( combobox ), preços, quantidade ( textbox ). Para controle de nome de produto eu uso com combobox. Eu escrevo quantidade de produto para a minha caixa de texto como um manuel quando eu escolho o nome do produto, eu quero fazer isso próxima célula vai escrever custo do preço deste produto depois que quando eu escrevo quantidade deste produto para quantidade celular, o Excel irá calcular o total preço e mostrar-me o preço total no preço total celular. Eu recebo os preços da minha planilha específica do Excel e eu crio uma fórmula para isso. Quando altero o nome do produto na planilha ( nome do prdocut da célula fixada como uma lista ) está tudo bem, mas quando uso o script e quando escolho o nome do produto do Combobox e escrevo na planilha via userform prices cell don ' t muda quando o nome do produto muda e não calcula os preços totais.

 Private Sub UserForm_Initialize()

   With cboProduct
    .AddItem "Iron"
    .AddItem "Plank"
    .AddItem "ANOTHER PRODUCT1"
    .AddItem "ANOTHER PRODUCT2"
    .AddItem "ANOTHER PRODUCT3"
    .AddItem "ANOTHER PRODUCT4"

End With
End Sub

     Private Sub cboProduct_Change()

     End Sub

     Private Sub cmdOK_Click()
         ActiveWorkbook.Sheets("list").Activate
         Range("A33").Select
     Do
If IsEmpty(ActiveCell) = False Then
    ActiveCell.Offset(2, 3).Select
End If
Loop Until IsEmpty(ActiveCell) = True


 Range("C20").Select
ActiveCell.Offset(1, 0) = txtAmount.Value

 Range("A20").Select
ActiveCell.Offset(1, 0) = cboProductName.Value

txtAmount.Value = ""
cboProduct.Value = ""
Range("A33").Select
 End Sub

    
por John Nash 19.01.2015 / 14:55

1 resposta

0

A partir da descrição do seu problema, parece que as coisas funcionam da maneira desejada quando você clica em "ok" no formulário do usuário, mas não quando você altera um produto do controle de formulário do usuário. Isso ocorre porque sua função de evento "Sub cboProduct_Change ()" está vazia. Se você quiser que o evento de alteração tenha o mesmo efeito que "ok", você pode chamar o cmdOK_click () ou criar uma terceira função de atualização mais genérica que tanto a mudança quanto a chamada de eventos ok.

Você não menciona como a coluna D é preenchida. Parece que a planilha tem fórmulas pré-preenchidas lá. Pode ser mais confiável adicionar novamente a fórmula da coluna D durante esse evento OK.

Além disso, você pode simplificar algum código sem mover a célula ativa. Por exemplo, em vez de:

Range("C20").Select
ActiveCell.Offset(1, 0) = txtAmount.Value

Você pode fazer isso:

Range("C20").Offset(1, 0) = txtAmount.Value
    
por 22.01.2015 / 17:22