Bấm Label/Commandbutton lần 2 để trở về giá trị cũ

Liên hệ QC

voduyminh0504

Thành viên chính thức
Tham gia
11/2/15
Bài viết
51
Được thích
12
Chào các bạn
Rất mong nhận được ý kiến của các bạn cho vấn đề sau.
Hiện nay tôi dùng code sau

Private Sub Label3_Click()
If TextBox1.Value <> "" Then
TextBox1.Value = Clearcontent
ElseIf TextBox1.Value = "" Then
TextBox1.Value = ChrW(272) & ChrW(7897) & "c l" & ChrW(7853) & "p - T" & ChrW(7921) & " do"
End If
End Sub

Để bấm vào Label hay Commandbutton lần 1 thì xóa giá trị, khi bấm thêm lần nữa thì nó sẽ phục hồi giá trị
Vấn đề là với mỗi Label hay Commandbutton thì tôi phải làm một chuỗi cho giá trị để chuyển thành tiếng Việt như "Độc lập - Tự do" ở trên.

Tôi không rõ có cách nào để gọn hơn hay không; cụ thể là bấm lần 2 sẽ Undo cái bấm lần đầu mà khỏi phải viết code chuyển thành giá trị trong Label hay Commandbutton

Rất cám ơn các bạn
 
Chào các bạn
Rất mong nhận được ý kiến của các bạn cho vấn đề sau.
Hiện nay tôi dùng code sau

Private Sub Label3_Click()
If TextBox1.Value <> "" Then
TextBox1.Value = Clearcontent
ElseIf TextBox1.Value = "" Then
TextBox1.Value = ChrW(272) & ChrW(7897) & "c l" & ChrW(7853) & "p - T" & ChrW(7921) & " do"
End If
End Sub

Để bấm vào Label hay Commandbutton lần 1 thì xóa giá trị, khi bấm thêm lần nữa thì nó sẽ phục hồi giá trị
Vấn đề là với mỗi Label hay Commandbutton thì tôi phải làm một chuỗi cho giá trị để chuyển thành tiếng Việt như "Độc lập - Tự do" ở trên.

Tôi không rõ có cách nào để gọn hơn hay không; cụ thể là bấm lần 2 sẽ Undo cái bấm lần đầu mà khỏi phải viết code chuyển thành giá trị trong Label hay Commandbutton

Rất cám ơn các bạn
Gán chuổi đang có trên TextBox1 cho một TextBoxN khác ở dạng ẩn (Visible = False) rồi lấy đó để đưa vào khi TextBox1 = ""

Nói thêm: câu lệnh ElseIf TextBox1.Value = "" Then chỉ cần viết là Else thôi, vì chỉ có 1 điều kiện <> "" thì còn lại đương nhiên là = ""
 
Upvote 0
Cám ơn bạn Maika8008 rất nhiều
Tôi thấy viết lại
Else
Textbox1.Value = (giá trị trong cell mà nó đã ghi)
có lẽ đơn giản hơn so với cách ẩn Textbox.
Một lần nữa, cám ơn bạn rất nhiều.
 
Upvote 0
Cám ơn bạn Maika8008 rất nhiều
Tôi thấy viết lại
Else
Textbox1.Value = (giá trị trong cell mà nó đã ghi)
có lẽ đơn giản hơn so với cách ẩn Textbox.
Một lần nữa, cám ơn bạn rất nhiều.
Nhưng khi đó giá trị của nó là rỗng thì lấy giá trị nào để ghi?
 
Upvote 0
Gán chuổi đang có trên TextBox1 cho một TextBoxN khác ở dạng ẩn (Visible = False) rồi lấy đó để đưa vào khi TextBox1 = ""

Nói thêm: câu lệnh ElseIf TextBox1.Value = "" Then chỉ cần viết là Else thôi, vì chỉ có 1 điều kiện <> "" thì còn lại đương nhiên là = ""
Dùng kỹ thuật "reversed mirror", hay "toggle/swap values".
Bạn có 2 nhóm controls, một chứa dữ liệu thời điểm X, một chứa dữ liệu thời điểm Y. Mỗi lần "toggle" thì hai nhóm đổi dữ liệu cho nhau.
 
Upvote 0
Dùng kỹ thuật "reversed mirror", hay "toggle/swap values".
Bạn có 2 nhóm controls, một chứa dữ liệu thời điểm X, một chứa dữ liệu thời điểm Y. Mỗi lần "toggle" thì hai nhóm đổi dữ liệu cho nhau.
Đó là bác biết về kỹ thuật và các thuật ngữ chuyên môn chứ với em tay ngang thì cứ nghĩ phải chứa chuỗi ấy vào đâu đó. Lưu ở biến toàn cục, khi đóng file biến về mặc định. Lưu ở cell thì cũng được nhưng hơi dở. Tốt nhất lưu ở ngay trên form luôn.
 
Upvote 0
Đó là bác biết về kỹ thuật và các thuật ngữ chuyên môn chứ với em tay ngang thì cứ nghĩ phải chứa chuỗi ấy vào đâu đó. Lưu ở biến toàn cục, khi đóng file biến về mặc định. Lưu ở cell thì cũng được nhưng hơi dở. Tốt nhất lưu ở ngay trên form luôn.
Tôi triển khai ý của bạn ở bài #2 đấy chứ.
Có 2 controls (textboxes) C1 và C2
C1 chứa "xyz abc", C2 (ẩn) chứa "" (trống).
Bấm nút B1, C1 chứa "", C2 chứa "xyz abc". Bấm lần nữa, trở lại trạng thái ban đầu.
 
Upvote 0
Chào các bạn
Rất mong nhận được ý kiến của các bạn cho vấn đề sau.
Hiện nay tôi dùng code sau

Private Sub Label3_Click()
If TextBox1.Value <> "" Then
TextBox1.Value = Clearcontent
ElseIf TextBox1.Value = "" Then
TextBox1.Value = ChrW(272) & ChrW(7897) & "c l" & ChrW(7853) & "p - T" & ChrW(7921) & " do"
End If
End Sub

Để bấm vào Label hay Commandbutton lần 1 thì xóa giá trị, khi bấm thêm lần nữa thì nó sẽ phục hồi giá trị
Vấn đề là với mỗi Label hay Commandbutton thì tôi phải làm một chuỗi cho giá trị để chuyển thành tiếng Việt như "Độc lập - Tự do" ở trên.

Tôi không rõ có cách nào để gọn hơn hay không; cụ thể là bấm lần 2 sẽ Undo cái bấm lần đầu mà khỏi phải viết code chuyển thành giá trị trong Label hay Commandbutton

Rất cám ơn các bạn
Hy vọng đúng ý.
 

File đính kèm

  • Label - Button.xlsm
    18.2 KB · Đọc: 12
Upvote 0
Chào các bạn
Rất mong nhận được ý kiến của các bạn cho vấn đề sau.
Hiện nay tôi dùng code sau

Private Sub Label3_Click()
If TextBox1.Value <> "" Then
TextBox1.Value = Clearcontent
ElseIf TextBox1.Value = "" Then
TextBox1.Value = ChrW(272) & ChrW(7897) & "c l" & ChrW(7853) & "p - T" & ChrW(7921) & " do"
End If
End Sub

Để bấm vào Label hay Commandbutton lần 1 thì xóa giá trị, khi bấm thêm lần nữa thì nó sẽ phục hồi giá trị
Vấn đề là với mỗi Label hay Commandbutton thì tôi phải làm một chuỗi cho giá trị để chuyển thành tiếng Việt như "Độc lập - Tự do" ở trên.

Tôi không rõ có cách nào để gọn hơn hay không; cụ thể là bấm lần 2 sẽ Undo cái bấm lần đầu mà khỏi phải viết code chuyển thành giá trị trong Label hay Commandbutton

Rất cám ơn các bạn
Thử dùng Label3.ControlTipText lưu TextBox1.Value
Mã:
Private Sub Label3_Click()
  If TextBox1.Value <> "" Then
    Label3.ControlTipText = TextBox1.Value
    TextBox1.Value = Clearcontent
  Else
    TextBox1.Value = Label3.ControlTipText
  End If
End Sub
 
Upvote 0
Nhưng khi đó giá trị của nó là rỗng thì lấy giá trị nào để ghi?
Xin lỗi bạn Maika8008 do reply trễ (do tôi busy suốt ngày hôm qua)
Đúng là "giá trị rỗng" là vấn đề.
Tôi đã thử qua thì phát hiện vụ đó ngay nên đành phải chơi lại cái kiểu cũ của tôi.
Tôi có thấy một số bạn cũng có idea, tôi sẽ tham khảo để xem cái nào tiện nhất vì dù sao cách tôi đang làm cũng khá ổn.
Một lần nữa rất cám ơn bạn đã quan tâm và xin lỗi đã reply trễ.
Những hỗ trợ của các bạn đã giúp tôi rất nhiều.
 
Upvote 0
Chào các bạn HieuCD, giaiphap, VetMini
Rất cám ơn các bạn đã quan tâm
Tôi sẽ cố gắng tham khảo các ý kiến của các bạn để tìm hiểu thêm vấn đề.
Trước mắt tôi đã dùng cách của bạn HieuCD và thấy nó rất hiệu quả, đỡ mắc công cho việc chuyển ngữ tiếng Việt sang VBA.
Cám ơn các bạn và xin lỗi đã reply khá trễ cho các bạn.
 
Upvote 0
Tôi thấy cách của bạn "giaiphap" rất hay khi chỉ cần có một code mà xử lý được rất nhiều Label và Commandbutton.
Có hai việc tôi chưa rõ, xin bạn giúp thêm
Một là cái code
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim i%
For i = 1 To 8
Set Ctrl(i) = Nothing
Next i
End Sub
Có cần thiết không vì tôi xóa nó thì công việc vẫn bình thường
Hai là có thể dùng với Textbox_Change được không
Xin cám ơn bạn rất nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom