Ẩn và hiện Textbox

Liên hệ QC

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,061
Được thích
175
Các anh chị giúp em như sau
Trong file có nhiều text box
Ở sheet AA em muốn ẩn Text box 1 (trong sheet AA có sẵn Text box 1)
Sang sheet AA (2) (Sheet này được tạo ra từ sheet AA, và trong sheet AA (2) này đang có Text box 1 đang bị ẩn) ở đây sẽ cho hiện ra Text box 01
Tóm lại: Code ẩn Textbox 1 ở sheet AA và ở sheet AA (2) sẽ cho hiện ra, thì phải viết code như thế nào ạ,
em cảm ơn!
 
Bạn có thể dùng Bắt sự kiện trong Workbook SheetActivate.

Copy code dưới vào code của ThisWorkbook và lưu file .xlsm /.xlsb:
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Select Case ActiveSheet.Name
    Case "AA"
      ActiveSheet.TextBox1.Visible = False
    Case "AA (2)"
      ActiveSheet.TextBox1.Visible = True
  End Select
End Sub
 
Upvote 0
Bạn có thể dùng Bắt sự kiện trong Workbook SheetActivate.

Copy code dưới vào code của ThisWorkbook và lưu file .xlsm /.xlsb:
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Select Case ActiveSheet.Name
    Case "AA"
      ActiveSheet.TextBox1.Visible = False
    Case "AA (2)"
      ActiveSheet.TextBox1.Visible = True
  End Select
End Sub
Code bị báo lỗi ở 2 dòng
ActiveSheet.TextBox1.Visible = False
ActiveSheet.TextBox1.Visible = True
Lỗi báo như sau:
Compile error
Sytax error
Nhờ bạn xem giúp trong file đính kèm, cảm ơn nhiều!
 

File đính kèm

Upvote 0
Code bị báo lỗi ở 2 dòng
ActiveSheet.TextBox1.Visible = False
ActiveSheet.TextBox1.Visible = True
Lỗi báo như sau:
Compile error
Sytax error
Nhờ bạn xem giúp trong file đính kèm, cảm ơn nhiều!
Thử sửa lại thế này.
Mã:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Select Case Sh.Name
    Case "AA"
      Sh.Shapes.Range("Text Box 1").Visible = False
    Case "AA (2)"
      Sh.Shapes.Range("Text Box 1").Visible = True
  End Select
End Sub
 
Upvote 0
Trong file có nhiều text box
"Trong file có nhiều text box" -> Sai
"Trong file có nhiều Shapes (Hình dạng) tên là text box 1 ,text box 2, ..."

Bạn cần đặt câu hỏi chính xác hơn
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Select Case ActiveSheet.Name
    On Error Goto EndS 'Nếu Shapes không có
    Case "AA"
      Sheets("AA").Shapes("Text Box 1").Visible = False
      'ActiveSheet.Shapes.Range(Array("Text Box 3", "Text Box 2")).Visible = False
    Case "AA (2)"
      ActiveSheet.Shapes("Text Box 1").Visible = True
      'ActiveSheet.Shapes.Range(Array("Text Box 3", "Text Box 2")).Visible = False
    EndS:
  End Select
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn nhiều
Bạn cho tôi hỏi thêm trường hợp sau
Trong 1 Sheet có 3 text box: Text Box 01, Text Box 02,Text Box 03
Trong mỗi Text box này đều có gắn macro
Ví dụ: Text Box 01: gắn Sub Xoasolieu ()
Text Box 02: gắn Sub Pastesolieu ()
Text Box 03: gắn Sub Xulysolieu ()
***********
Bây giờ mình muốn trình tự như sau:
Đầu tiên trong sheet chỉ hiện Text box 01
Sau khi nhấn Text box 01 (nghĩa là chạy code Sub Xoasolieu ())xong thì Text box 01 ẩn đi đồng thời Text box 02 hiện ra
"Trong file có nhiều text box" -> Sai
"Trong file có nhiều Shapes (Hình dạng) tên là text box 1 ,text box 2, ..."
Cảm ơn bạn, vì tui chưa mô tả chính xác
Bạn có thể cho tôi hỏi thêm
Trong Sheet AA có
1/ Shapes mang tên Text box 1, và nó được gắn Macro 1
2/ Shapes mang tên Text box 2, và nó được gắn Macro 2

Giờ tôi muốn
Khi nhấn text box 1 thì nó chạy Macro 1 xong thì Text box 1 sẽ ẩn đi và sẽ hiện Text box 2
Nếu nhấn Text box 2 thì nó chạy Macro 2 xong thì Text box 2 sẽ ẩn đi và sẽ hiện Text box 1
Mục đích của tôi muốn người khác không nhấn lộn Text box và trước khi chạy macro khác thì tôi muốn kiểm tra lại số liệu xong
 
Upvote 0
Cảm ơn bạn nhiều
Bạn cho tôi hỏi thêm trường hợp sau
Trong 1 Sheet có 3 text box: Text Box 01, Text Box 02,Text Box 03
Trong mỗi Text box này đều có gắn macro
Ví dụ: Text Box 01: gắn Sub Xoasolieu ()
Text Box 02: gắn Sub Pastesolieu ()
Text Box 03: gắn Sub Xulysolieu ()
***********
Bây giờ mình muốn trình tự như sau:
Đầu tiên trong sheet chỉ hiện Text box 01
Sau khi nhấn Text box 01 (nghĩa là chạy code Sub Xoasolieu ())xong thì Text box 01 ẩn đi đồng thời Text box 02 hiện ra

Cảm ơn bạn, vì tui chưa mô tả chính xác
Bạn có thể cho tôi hỏi thêm
Trong Sheet AA có
1/ Shapes mang tên Text box 1, và nó được gắn Macro 1
2/ Shapes mang tên Text box 2, và nó được gắn Macro 2

Giờ tôi muốn
Khi nhấn text box 1 thì nó chạy Macro 1 xong thì Text box 1 sẽ ẩn đi và sẽ hiện Text box 2
Nếu nhấn Text box 2 thì nó chạy Macro 2 xong thì Text box 2 sẽ ẩn đi và sẽ hiện Text box 1
Mục đích của tôi muốn người khác không nhấn lộn Text box và trước khi chạy macro khác thì tôi muốn kiểm tra lại số liệu xong
Nếu là tôi thì thiết kế một nút thôi, mắc gì phải thiết kế đến 3 cái nút cho tốn dung lượng vậy. Vậy sẽ tùy thuộc vào Text của nút đó mà ta sẽ chạy đoạn code cho phù hợp. Còn bạn muốn giúp cụ thể thì đưa cái file thực tế và đoạn code sử dụng cho từng nút lệnh và mô tả yêu cầu chi tiết lên đây tôi sẽ giúp.
 
Upvote 0
AnhThu-1976
Phương pháp Gọi một Sub trung gian sẽ làm được.
PHP:
Sub Xoasolieu()
'......'
Application.Ontime Now + Timeserial(0,0,1), "TrungGian1"
End Sub

Sub PasteSolieu()
'......'
Application.Ontime Now + Timeserial(0,0,1), "TrungGian2"
End Sub

Sub TrungGian1()
    On Error Goto EndS
    Sheets("AA").Shapes("Text Box 1").Visible =  False
    Sheets("AA").Shapes("Text Box 2").Visible =  True
EndS:
End Sub

Sub TrungGian2()
    On Error Goto EndS
    Sheets("AA").Shapes("Text Box 1").Visible =  True
    Sheets("AA").Shapes("Text Box 2").Visible =  False
EndS:
End Sub
 
Upvote 0
Cảm ơn các bạn, từ bài 8 mình đã áp dụng vào code thành công
Cách áp dụng từ bài
Trong Sheet AA có
1/ Shapes mang tên Text box 1, và nó được gắn Macro 1
2/ Shapes mang tên Text box 2, và nó được gắn Macro 2

Giờ tôi muốn
Khi nhấn text box 1 thì nó chạy Macro 1 xong thì Text box 1 sẽ ẩn đi và sẽ hiện Text box 2
Nếu nhấn Text box 2 thì nó chạy Macro 2 xong thì Text box 2 sẽ ẩn đi và sẽ hiện Text box 1
Sub Macro1 ()
.......
Sheets("AA").Shapes("Text Box 1").Visible = False
Sheets("AA").Shapes("Text Box 2").Visible = True
End sub
-----------
Sub Macro2 ()
.......
Sheets("AA").Shapes("Text Box 2").Visible = False
Sheets("AA").Shapes("Text Box 1").Visible = True
End sub
 
Upvote 0
Web KT

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

Back
Top Bottom