Đưa dữ liệu vào texbox mà vẫn dữ nguyên công thức trên ô bảng tính (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nguyet1982db

Thành viên chính thức
Tham gia
10/12/14
Bài viết
92
Được thích
4
Em có một vấn đề cần giúp đỡ về hiện dữ liệu ở một ô trong bảng tính nên texbox như sau:
1. Nếu dùng cách add đại chỉ ControlSource vào texbox thì khi nhập dữ liệu vào texbox ô tính sẽ tự động thay đổi theo nhưng công thức tại ô tương ứng ko còn.
2. Nếu dùng code thì phải bấm một nút Buttom nữa thì mới ghi được dữ liệu nên ô.
3. Yêu cầu: Khi đánh dữ liệu vào các texbox T4, T7, T10 (thì đồng thời các ô C5, C6, C7 (các texbox này để ẩn không cho chỉnh sửa) cũng thay đổi theo không phải bấm vào 1 buttom nào nữa) và các texbox T5 = T4*100/T1, T8=T7*100/T1; T11=T10*100/T1 (Có hiển thị số %, giống như dữ liệu trên sheet1)
Rất mong các bác giúp (File đính kèm)
 

File đính kèm

Lần chỉnh sửa cuối:
Em có một vấn đề cần giúp đỡ về hiện dữ liệu ở một ô trong bảng tính nên texbox như sau:
1. Nếu dùng cách add đại chỉ ControlSource vào texbox thì khi nhập dữ liệu vào texbox ô tính sẽ tự động thay đổi theo nhưng công thức tại ô tương ứng ko còn.
2. Nếu dùng code thì phải bấm một nút Buttom nữa thì mới ghi được dữ liệu nên ô.
3. Yêu cầu: Khi đánh dữ liệu vào các texbox T4, T7, T10 (thì đồng thời các ô C5, C6, C7 (các texbox này để ẩn không cho chỉnh sửa) cũng thay đổi theo không phải bấm vào 1 buttom nào nữa) và các texbox T5 = T4*100/T1, T8=T7*100/T1; T11=T10*100/T1 (Có hiển thị số %, giống như dữ liệu trên sheet1)
Rất mong các bác giúp (File đính kèm)
Chỉ đơn giản là dùng textbox_change thôi mà bạn!
PHP:
Private Sub T4_Change()
Range("C5").Value = T4.Value
End Sub
 
Upvote 0
Chỉ đơn giản là dùng textbox_change thôi mà bạn!
PHP:
Private Sub T4_Change()
Range("C5").Value = T4.Value
End Sub

Thank bạn nhưng chưa đúng yêu cầu của mình. Mình đã làm được bằng cách khóa ô trong sheet nhưng hơi phức tạp. Ý mình khi thay các số ở T4, T7, T10 thì T5, T8, T11 tự động thay đổi theo và hiện lên texbox (khi tắt đi công thức trong ô D5,6,7 vẫn giữ nguyên)
 
Upvote 0
Thank bạn nhưng chưa đúng yêu cầu của mình. Mình đã làm được bằng cách khóa ô trong sheet nhưng hơi phức tạp. Ý mình khi thay các số ở T4, T7, T10 thì T5, T8, T11 tự động thay đổi theo và hiện lên texbox (khi tắt đi công thức trong ô D5,6,7 vẫn giữ nguyên)
Bạn sử dụng code sau cho Form của bạn. Và bỏ đi ControlSource và Text cho T4, T7, T10, và thêm phần tag cho T1, T2, T4, T7, T10, T5, T8, T11 như trong file.
Mã:
Private Sub Gan()
Dim cCtrl As Control
For Each cCtrl In Me.Controls
  If cCtrl.Tag <> "" Then cCtrl.Text = Sheet1.Range(cCtrl.Tag).Value
  If Left(cCtrl.Tag, 1) = "D" Then cCtrl.Text = Round(cCtrl.Text * 100, 0) & "%"
Next cCtrl
End Sub


Private Sub T10_Change()
   Sheet1.Range(T10.Tag).Value = T10.Value
   Call Gan
End Sub


Private Sub T4_Change()
   Sheet1.Range(T4.Tag).Value = T4.Value
   Call Gan
End Sub


Private Sub T7_Change()
   Sheet1.Range(T7.Tag).Value = T7.Value
   Call Gan
End Sub


Private Sub UserForm_Activate()
Call Gan
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn sử dụng code sau cho Form của bạn. Và bỏ đi ControlSource và Text cho T4, T7, T10, và thêm phần tag cho T1, T2, T4, T7, T10, T5, T8, T11 như trong file.
Mã:
Private Sub Gan()
Dim cCtrl As Control
For Each cCtrl In Me.Controls
  If cCtrl.Tag <> "" Then cCtrl.Text = Sheet1.Range(cCtrl.Tag).Value
  If Left(cCtrl.Tag, 1) = "D" Then cCtrl.Text = Round(cCtrl.Text * 100, 0) & "%"
Next cCtrl
End Sub


Private Sub T10_Change()
   Sheet1.Range(T10.Tag).Value = T10.Value
   Call Gan
End Sub


Private Sub T4_Change()
   Sheet1.Range(T4.Tag).Value = T4.Value
   Call Gan
End Sub


Private Sub T7_Change()
   Sheet1.Range(T7.Tag).Value = T7.Value
   Call Gan
End Sub


Private Sub UserForm_Activate()
Call Gan
End Sub
Cám ơn bạn rất nhiều, bạn giúp mình lần nữa nhé yêu cầu trong file. Thank bạn nhiều
 

File đính kèm

Upvote 0
Cám ơn bạn rất nhiều, bạn giúp mình lần nữa nhé yêu cầu trong file. Thank bạn nhiều
Bạn nêu rõ hơn chứ mình chưa hiểu ý bạn. Không cho nhập ô cuối cùng (Ô C7) nhưng vẫn chấp nhận ô C5 và ô C6 nhập vào mặc dù lớn hơn điểm định mức phải không? Hay là thông báo vượt định mức và bắt nhập lại ô vừa nhập (Có thể là C5, C6 hoặc C7).
 
Upvote 0
Bạn nêu rõ hơn chứ mình chưa hiểu ý bạn. Không cho nhập ô cuối cùng (Ô C7) nhưng vẫn chấp nhận ô C5 và ô C6 nhập vào mặc dù lớn hơn điểm định mức phải không? Hay là thông báo vượt định mức và bắt nhập lại ô vừa nhập (Có thể là C5, C6 hoặc C7).
Mình ví dụ: điểm định mức C1= 10; nếu nhập điểm tại các các ô C5+C6+C7 mà >10 thì báo lỗi ko cho nhập
 
Upvote 0
Mình ví dụ: điểm định mức C1= 10; nếu nhập điểm tại các các ô C5+C6+C7 mà >10 thì báo lỗi ko cho nhập
Bạn thử thay code này cho Form của bạn xem sao.
Mã:
Private Sub Gan()
Dim cCtrl As Control
For Each cCtrl In Me.Controls
  If cCtrl.Tag <> "" Then cCtrl.Text = Sheet1.Range(cCtrl.Tag).Value
  If Left(cCtrl.Tag, 1) = "D" Then cCtrl.Text = Round(cCtrl.Text * 100, 0) & "%"
Next cCtrl
End Sub


Private Sub T10_Change()
 If KT Then
    MsgBox "Vuot dinh muc"
    T10.Value = Sheet1.Range(T10.Tag).Value
    Exit Sub
 End If
   Sheet1.Range(T10.Tag).Value = T10.Value
   Call Gan
End Sub


Private Sub T4_Change()
 If KT Then
    MsgBox "Vuot dinh muc"
    T4.Value = Sheet1.Range(T4.Tag).Value
    Exit Sub
 End If
   Sheet1.Range(T4.Tag).Value = T4.Value
   Call Gan
End Sub


Private Sub T7_Change()
 If KT Then
    MsgBox "Vuot dinh muc"
    T7.Value = Sheet1.Range(T7.Tag).Value
    Exit Sub
 End If
   Sheet1.Range(T7.Tag).Value = T7.Value
   Call Gan
End Sub


Private Sub UserForm_Activate()
Call Gan
End Sub


Public Function KT() As Boolean
    KT = Val(T4.Value) + Val(T10.Value) + Val(T7.Value) > Sheet1.Range("C1").Value
End Function
 
Upvote 0
Thank bạn nhưng chưa đúng yêu cầu của mình. Mình đã làm được bằng cách khóa ô trong sheet nhưng hơi phức tạp. Ý mình khi thay các số ở T4, T7, T10 thì T5, T8, T11 tự động thay đổi theo và hiện lên texbox (khi tắt đi công thức trong ô D5,6,7 vẫn giữ nguyên)
Đoạn code mình đưa ra chỉ là ví dụ về việc thực hiện thủ tục textbox_change. Viết tất cả code thì không còn giá trị học hỏi nữa.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom