Excel VBA отображает валюту с событиями Afterupdate и Change - PullRequest
3 голосов
/ 14 апреля 2020

Я создал базу данных пользовательской формы, в которую я могу добавлять новые данные и искать текущие сведения о проекте.

В некоторых текстовых полях мне бы хотелось следующее:

  1. При добавлении данных, для отображения суммы в качестве валюты.

      I already used the Afterupdate() event and it works well,
    
        Private Sub txtPOAmount_Afterupdate()
            txtPOAmount.Value = Format(txtPOAmount.Value, "$#,###.##")
        End Sub
    
  2. Мне также хотелось бы, чтобы при выводе данных отображалась валюта

     I used the Change() event, which also does the job
    
    
       Private Sub txtPOAmount_Change()
           txtPOAmount.Value = Format(txtPOAmount.Value, "$#,##0.00")
       End Sub
    

Текущие проблемы с использованием одного или другого:

- Когда я использую событие Afterupdate (), если я должен был извлечь данные, уже находящиеся в базе данных, он не показывает валюту, если только Я обновляю его.

-Когда я использую только событие Change (), он отображает данные в виде валюты, но когда я хочу обновить данные, работает только первый номер, введенный в. (напр., тип 5337, он отображает 5,00 долл. США)

Однако я бы хотел, чтобы обе эти опции работали одновременно. Если я хочу получить данные, я бы хотел, чтобы пользовательская форма отображала валюту, а если я обновлю ее, я бы хотел, чтобы она ввела полную сумму.

1 Ответ

0 голосов
/ 14 апреля 2020

Попробуйте использовать TextBox1_Exit, чтобы обновить его вместо события Change(), это означает, что вы получаете свободу редактировать более одного символа в строке текстового поля до того, как событие будет запущено, и вам больше не придется использовать клавиши со стрелками для перемещения влево и вправо в текстовом поле «валюта»:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "£#,##0.00")
End Sub
...