Cần giúp: Cell không tự động update kết quả khi thay đổi giá trị trong UserForm

Liên hệ QC

rennnnn

Thành viên mới
Tham gia
10/3/10
Bài viết
7
Được thích
0
Chào các bạn, mình đang mò mẫm lập trình VBA cho tính toán. Mình tạo UserForm1 để nhập các giá trị của tiết diện (Button Section). Từ các giá trị đó để tính các đặc trưng diện tích, momen quán tính... Nhưng không hiểu sao mỗi lần mình thay đổi các giá trị trong UserForm1 thì kết quả tính không tự động update mà mình phải vào trong cell đó, enter thì nó mới thay đổi. Ngoài ra sau khi tắt excel, mở lại thì các giá trị trong userform tự động trở về 0.
Thêm 1 vấn đề nữa là khi mình nhập giá trị vào textbox của Userform, khi mình gọi giá trị đó để tính toán trong Module1 thì tính nhân chia bình thường, nhưng khi tính cộng thì nó cộng như string.
VD: X1 = 1, X2 = 2 --> X1 + X2 = 12
Thế nên lúc mình gọi ra mình phải nhân số đó cho 1 để nó nhận đó là number.
Mình mới tập làm VBA nên còn rất gà, mong các bạn giúp đỡ. Cảm ơn các bạn rất nhiều
 

File đính kèm

  • Sheet 1.rar
    39.5 KB · Đọc: 34
1. Cell không cập nhật:
Thực ra là cell đang bị lỗi #Value#
Lý do là hàm bạn viết căn cứ vào các giá trị trên form, form đang active thì sheet không active. Vả lại, khi đóng form, làm gì còn giá trị trên form cho nó tính?
Nếu không có nhu cầu tính nhiều cell cùng 1 hàm, bạn hãy gán giá trị hàm xuống ô, thay vì gõ công thức vào ô:
PHP:
Private Sub CommandButton1_Click()
With ActiveSheet
  .[F9] = SECPROP("AP")
  .[H9] = SECPROP("so")
  .[J9] = SECPROP("ZG")
  .[L9] = SECPROP("I0")
  .[N9] = SECPROP("IG")
End With
UserForm1.Hide
End Sub
Nếu bạn định dùng công thức, thì tất cả các tham số X từ 1 đến hết, tham số T, ... tất tần tật phải đưa vào thành tham số của hàm. Và khi viết công thức, các tham số này phải hoặc là gõ tay, hoặc tham chiếu đến 1 ô trong bảng tính.

2. Giá trị Textbox bị cộng như String:
Vì bản chất nó là String. Nếu là số thì sao anh Bill lại đặt tên control là textbox mà không đặt tên là Numbox?
Do đó phải biến đổ thành số trước khi tính toán. Nhân 1 cũng là 1 cách, ngoài ra có thể dùng hàm Val

3. Userform mất giá trị trên textbox khi tắt Excel:
Vì anh Bill không có khả năng nhớ mãi mãi các giá trị trên form do người dùng nhập vào.
Bạn có thể lưu các giá trị đó xuống các ô nào đó (trước khi đóng form), rồi khi mở form dùng lệnh gán ngược lên form.

Dù vậy, nếu bạn giải quyết vấn đề 1 như trên, thì vấn đề 3 không cần quan tâm nữa.
 
Upvote 0
Cảm ơn bạn rất nhiều. Mình làm theo cách bạn hướng dẫn trong phần 1 thì ok rồi. Cho mình hỏi thêm có cách nào gán giá trị ban đầu mặc định cho textbox được ko? Ví dụ như khi vừa khởi động textbox thì nó có sẵn giá trị x thay vì là blank.
 
Upvote 0
Cảm ơn bạn rất nhiều. Mình làm theo cách bạn hướng dẫn trong phần 1 thì ok rồi. Cho mình hỏi thêm có cách nào gán giá trị ban đầu mặc định cho textbox được ko? Ví dụ như khi vừa khởi động textbox thì nó có sẵn giá trị x thay vì là blank.
PHP:
Private Sub UserForm_Initialize()
'''''''''thích gán giá trị nào cho nó hiện lên thì cho vào đây.lưu lại
'Ví dụ":
Me.txta.Value = 10
Me.txta.Value = 11
'''''.............
End Sub
 
Upvote 0
Web KT
Back
Top Bottom