Lưu checkbox sau khi thoát Form (1 người xem)

  • Thread starter Thread starter Miccpro
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Miccpro

Thành viên thường trực
Tham gia
9/12/10
Bài viết
236
Được thích
10
Giả sử em có 1 checkbox và đặt giá trị là True rồi thoát Form. Anh chị có thể giúp em lần sau khi gọi Form lên thì checkbox sẽ là true được không ạ. (Em chỉ biết 1 cách là gán giá trị checkbox xuống cells rồi thoát form). Mong các anh chị giúp đỡ, em xin cảm ơn!
 
Giả sử em có 1 checkbox và đặt giá trị là True rồi thoát Form. Anh chị có thể giúp em lần sau khi gọi Form lên thì checkbox sẽ là true được không ạ. (Em chỉ biết 1 cách là gán giá trị checkbox xuống cells rồi thoát form). Mong các anh chị giúp đỡ, em xin cảm ơn!
Lưu thông tin vào window registry
 
Upvote 0
Tùy chuyện mà dùng registry.
- Nếu code của ta là 1 addin, dùng GetSetting, SaveSetting là chính xác
- Nếu code chỉ chạy trong file mà dùng registry là không hợp lý. Bởi khi mang file sang máy tính khác thì thiết lập trên máy mới đâu còn giống với máy cũ. Cụ thể với bài này, nếu lưu ở registry thì khi mang sang máy khác, checkbox ấy sẽ luôn = false
 
Upvote 0
Có 1 cách như thế này bạn xem sao:

- Bạn lưu giá trị của Checkbox vào comment code.. Mỗi lần gọi form sẽ đọc giá trị này trước để setup.
 
Upvote 0
Có 1 cách như thế này bạn xem sao:

- Bạn lưu giá trị của Checkbox vào comment code.. Mỗi lần gọi form sẽ đọc giá trị này trước để setup.
Cảm ơn anh, em định dùng ControlTipText, còn comment code em chưa biết, anh có thể cho em ví dụ được không ạ!
 
Upvote 0
Có rất nhiều cách: ghi giá trị vào cell, ghi ra tập tin txt, ghi vào name, ghi vào comment của cell, ghi đâu đó. Đâu đó có thể là bất kỳ cái gì. Vd. ghi vào đám mây rồi đọc ra từ đám mây. Ghi vào thuộc tính của cửa sổ Excel (dùng hàm API). Có hàng nghìn cách khó và dễ. Cũng có thể ghi vào CheckBox.Value. Nhưng ghi sao cho khi đóng Form và kiểm tra trong VBE thì Value của CheckBox đúng là có thay đổi. Cái này đòi hỏi phải thêm References "Microsoft Visual Basic For Applications Extensibility" và chọn "Trust access to the VBA project object model" (trong Macro Security).

Nếu bạn không muốn các cách trên thì code trong UserForm như sau. Nhớ thay "Sheet1" bằng tên sheet của mình và CheckBox1 bằng tên hiện hành của CheckBox.
Mã:
Private Sub UserForm_Initialize()
    With ThisWorkbook.Worksheets("Sheet1")
        If IsNumeric(.Range("A1").ID) Then CheckBox1.Value = CBool(.Range("A1").ID)
    End With
End Sub

Private Sub UserForm_Terminate()
    ThisWorkbook.Worksheets("Sheet1").Range("A1").ID = CInt(CheckBox1.Value)
End Sub

Tức ghi nhớ vào ID của ô A1 trên sheet Sheet1. Thế thôi.
 
Upvote 0
Có rất nhiều cách: ghi giá trị vào cell, ghi ra tập tin txt, ghi vào name, ghi vào comment của cell, ghi đâu đó. Đâu đó có thể là bất kỳ cái gì. Vd. ghi vào đám mây rồi đọc ra từ đám mây. Ghi vào thuộc tính của cửa sổ Excel (dùng hàm API). Có hàng nghìn cách khó và dễ. Cũng có thể ghi vào CheckBox.Value. Nhưng ghi sao cho khi đóng Form và kiểm tra trong VBE thì Value của CheckBox đúng là có thay đổi. Cái này đòi hỏi phải thêm References "Microsoft Visual Basic For Applications Extensibility" và chọn "Trust access to the VBA project object model" (trong Macro Security).

Nếu bạn không muốn các cách trên thì code trong UserForm như sau. Nhớ thay "Sheet1" bằng tên sheet của mình và CheckBox1 bằng tên hiện hành của CheckBox.
Mã:
Private Sub UserForm_Initialize()
    With ThisWorkbook.Worksheets("Sheet1")
        If IsNumeric(.Range("A1").ID) Then CheckBox1.Value = CBool(.Range("A1").ID)
    End With
End Sub

Private Sub UserForm_Terminate()
    ThisWorkbook.Worksheets("Sheet1").Range("A1").ID = CInt(CheckBox1.Value)
End Sub

Tức ghi nhớ vào ID của ô A1 trên sheet Sheet1. Thế thôi.
Cảm ơn anh rất nhiều !!!
 
Upvote 0
Cũng cần nói thêm là ID không được lưu, vậy khi đóng và mở lại tập tin thì trạng thái CheckBox lại như khi thiết kế.
Nếu cần lưu cả khi đóng tập tin thì vd. ghi vào Name.
 
Upvote 0
Cũng cần nói thêm là ID không được lưu, vậy khi đóng và mở lại tập tin thì trạng thái CheckBox lại như khi thiết kế.
Nếu cần lưu cả khi đóng tập tin thì vd. ghi vào Name.
Quả thật khi bác nói em mới thử đóng và mở lại tập tin thì Checkbox lại như thiết kế, nhờ bác giúp em cách khác được không ạ, em muốn nó lưu khi lưu tập tin hoặc lưu kể cả khi không lưu tập tin càng tốt ạ, em xin cảm ơn
 
Upvote 0
Mã:
Private Sub UserForm_Initialize()
    On Error Resume Next
    CheckBox1.Value = CBool(Replace(ThisWorkbook.Names("CheckBox1Value").RefersTo, "=", ""))
    If Err.Number Then
        ThisWorkbook.Names.Add Name:="CheckBox1Value", RefersTo:=0
    End If
End Sub

Private Sub UserForm_Terminate()
    ThisWorkbook.Names("CheckBox1Value").RefersTo = "=" & CInt(CheckBox1.Value)
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom