Tôi có 1 file có 3 sheets trong đó sheet 3 là sheet biểu mẫu. Tôi muốn từ sheet1 hoặc sheet2 khi nhấn 1 nút sẽ tham chiếu đến sheet3 (sheet3 Active) và từ sheet 3 khi ấn nút "quay về" thì sẽ quay lại đúng sheet vừa gọi nhưng không biết viết VBA thế nào? Xin các cao thủ giúp.
Tôi có 1 file có 3 sheets trong đó sheet 3 là sheet biểu mẫu. Tôi muốn từ sheet1 hoặc sheet2 khi nhấn 1 nút sẽ tham chiếu đến sheet3 (sheet3 Active) và từ sheet 3 khi ấn nút "quay về" thì sẽ quay lại đúng sheet vừa gọi nhưng không biết viết VBA thế nào? Xin các cao thủ giúp.
Góp ý cho bạn:
1/ Tạo 1 sheet tạm gọi là TRANG_CHU, dùng code lấy tên sheet vào từng Cell và tạo Hyperlink.
2/ Tại sheet TRANG_CHU khi click vào Cell với tên sheet nào thì nó di chuyển đến sheet đó, tại các sheet có 1 Cell có Hyperlink khi click vào Cell sẽ chuyển đến sheet TRANG_CHU.
Diễn giải như thế không biết có đúng cái bạn cần hay không? (vì bạn Diễn giải nội dung bài 1 chưa được cụ thể).
Hyperlink làm cách nào biết sheet trước đó để quay về?
Theo tôi hiểu thì thớt muốn (có 3 sheets, sh1, sh2, sh3):
Đang ở sh1, nhấn nút "đi" thì sẽ nhảy sang sh3. Nhấn nút "về" thì sẽ nhảy về sh1
Đang ở sh2, nhấn nút "đi" thì sẽ nhảy sang sh3. Nhấn nút "về" thì sẽ nhảy về sh2
Túm lại, nút "về" ở sh3 phải biết chỗ để quay về.
Tôi có 1 file có 3 sheets trong đó sheet 3 là sheet biểu mẫu. Tôi muốn từ sheet1 hoặc sheet2 khi nhấn 1 nút sẽ tham chiếu đến sheet3 (sheet3 Active) và từ sheet 3 khi ấn nút "quay về" thì sẽ quay lại đúng sheet vừa gọi nhưng không biết viết VBA thế nào? Xin các cao thủ giúp.
Private Sub Workbook_Open()
With ActiveSheet
PreActSh = .Name
.Buttons("Button 1").Characters.Text = PreActSh
End With
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
PreActSh = Sh.Name
End Sub
Code ở module:
Mã:
Public PreActSh As String
Sub CallPreActSh()
With Sheets(PreActSh)
.Activate
.Buttons("Button 1").Characters.Text = PreActSh
End With
End Sub
Tạo 1 Button ở các sheet, Assign Marco đến Sub CallPreSh
Đơn giản nhỉ. Vậy mà giờ nào không biết.
Bạn cho hỏi nhỏ thêm tí. Thế nhìn cái hình này làm sao bấm được đúng vào "sheet vừa gọi" (có biết cái sheet ấy là sheet nào đâu?)
Đơn giản nhỉ. Vậy mà giờ nào không biết.
Bạn cho hỏi nhỏ thêm tí. Thế nhìn cái hình này làm sao bấm được đúng vào "sheet vừa gọi" (có biết cái sheet ấy là sheet nào đâu?)
Bạn ơi, mình cần từ sheet1, nhấn nút thì sheet3 sẽ active. từ sheet3, nhấn nút "quay về" sẽ quay lại sheet1. Tương tự như vậy, từ sheet2, nhấn nút thì sheet3 sẽ được active, và từ sheet3, nhấn nút "quay về" thì quay lại được sheet2. (sheet1, sheet2 là sheet vừa gọi đấy bạn). Mình gửi file vidu, giúp mình nhé. Thanks.
Bạn ơi, mình cần từ sheet1, nhấn nút thì sheet3 sẽ active. từ sheet3, nhấn nút "quay về" sẽ quay lại sheet1. Tương tự như vậy, từ sheet2, nhấn nút thì sheet3 sẽ được active, và từ sheet3, nhấn nút "quay về" thì quay lại được sheet2. (sheet1, sheet2 là sheet vừa gọi đấy bạn). Mình gửi file vidu, giúp mình nhé. Cảm ơn.
Bạn ơi, mình cần từ sheet1, nhấn nút thì sheet3 sẽ active. từ sheet3, nhấn nút "quay về" sẽ quay lại sheet1. Tương tự như vậy, từ sheet2, nhấn nút thì sheet3 sẽ được active, và từ sheet3, nhấn nút "quay về" thì quay lại được sheet2. (sheet1, sheet2 là sheet vừa gọi đấy bạn). Mình gửi file vidu, giúp mình nhé. Cảm ơn.
Bạn thử sử dụng File với HyperLink trong Cell (không chơi Shapes) không lẽ 100 sheet lại chơi đến 100 cái Shapes, nếu sử dụng Shapes nhiều quá sẽ làm tăng dung lượng File và sẽ làmcho File ì ạch. Lưu ý:
- Không nên đặt tên sheet có dấu tiếng Việt.
- Khi thêm hoặc bớt sheet thì vào sheet TRANG_CHU nhấn nút để cập nhật lại Link, để về sheet TRANG_CHU click vào chữ TC tại Cell A1 của các sheet.
Bạn ơi, mình cần từ sheet1, nhấn nút thì sheet3 sẽ active. từ sheet3, nhấn nút "quay về" sẽ quay lại sheet1. Tương tự như vậy, từ sheet2, nhấn nút thì sheet3 sẽ được active, và từ sheet3, nhấn nút "quay về" thì quay lại được sheet2. (sheet1, sheet2 là sheet vừa gọi đấy bạn). Mình gửi file vidu, giúp mình nhé. Cảm ơn.
Dùng code này gán cho tất cả các nút. Bạn test thử xem sao
Mã:
Option Explicit
Public Names(1) As String
Public Num As Boolean
Sub ActiveSheet_()
If Num = 0 Then
If ActiveSheet.Name = "bieu_mau" Then
MsgBox "Hay bat dau tu 1 sheet khac"
Exit Sub
Else
Names(0) = ActiveSheet.Name
Num = 1
Sheets("bieu_mau").Activate
Names(1) = "bieu_mau"
End If
Else
Sheets(Names(0)).Activate
Num = 0
End If
End Sub
Dùng code này gán cho tất cả các nút. Bạn test thử xem sao
Mã:
Option Explicit
Public Names(1) As String
Public Num As Boolean
Sub ActiveSheet_()
If Num = 0 Then
If ActiveSheet.Name = "bieu_mau" Then
MsgBox "Hay bat dau tu 1 sheet khac"
Exit Sub
Else
Names(0) = ActiveSheet.Name
Num = 1
Sheets("bieu_mau").Activate
Names(1) = "bieu_mau"
End If
Else
Sheets(Names(0)).Activate
Num = 0
End If
End Sub
Thanks bạn CHAOQUAY. Nhờ bạn sửa giúp mình thêm chút nữa nhé.
1. Khi đổi tên sheet "Bieu_mau" thành tên khác thì code vẫn chạy được.
2. Active sheet "Bieu_mau" thì sheet gọi nó sẽ bị ẩn đi.
3. Khi quay về sheet gọi thì sheet "Bieu_mau) sẽ bị ẩn đi
Tóm lại là lúc nào cũng chỉ có 1 sheet được hiện ra thôi
Cảm ơn bạn CHAOQUAY. Nhờ bạn sửa giúp mình thêm chút nữa nhé.
1. Khi đổi tên sheet "Bieu_mau" thành tên khác thì code vẫn chạy được.
2. Active sheet "Bieu_mau" thì sheet gọi nó sẽ bị ẩn đi.
3. Khi quay về sheet gọi thì sheet "Bieu_mau) sẽ bị ẩn đi
Tóm lại là lúc nào cũng chỉ có 1 sheet được hiện ra thôi
Vậy giả sử bạn đang ở sheet1, nhấn nút, về sheet3, sheet1 & 2 ẩn.
Vậy giờ nhấn nút chỉ về được sheet1, không bao giờ nhìn thấy sheet2 nữa đâu bạn. Ý bạn thế nào
Bạn có thể thử code dưới đây
Mã:
Option Explicit
Public Name_ As String
Public Num As Boolean
Sub ActiveSheet_()
Dim Sh As Worksheet
If Num = 0 Then
If ActiveSheet.CodeName = "Sheet3" Then
MsgBox "Hay bat dau tu 1 sheet khac"
Exit Sub
Else
Name_ = ActiveSheet.Name
Num = 1
Sheet3.Visible = xlSheetVisible
Sheet3.Activate
For Each Sh In Worksheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlSheetHidden
Next Sh
End If
Else
Sheets(Name_).Visible = xlSheetVisible
Sheets(Name_).Activate
Num = 0
For Each Sh In Worksheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlSheetHidden
Next Sh
End If
End Sub
Vậy giả sử bạn đang ở sheet1, nhấn nút, về sheet3, sheet1 & 2 ẩn.
Vậy giờ nhấn nút chỉ về được sheet1, không bao giờ nhìn thấy sheet2 nữa đâu bạn. Ý bạn thế nào
Bạn có thể thử code dưới đây
Mã:
Option Explicit
Public Name_ As String
Public Num As Boolean
Sub ActiveSheet_()
Dim Sh As Worksheet
If Num = 0 Then
If ActiveSheet.CodeName = "Sheet3" Then
MsgBox "Hay bat dau tu 1 sheet khac"
Exit Sub
Else
Name_ = ActiveSheet.Name
Num = 1
Sheet3.Visible = xlSheetVisible
Sheet3.Activate
For Each Sh In Worksheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlSheetHidden
Next Sh
End If
Else
Sheets(Name_).Visible = xlSheetVisible
Sheets(Name_).Activate
Num = 0
For Each Sh In Worksheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlSheetHidden
Next Sh
End If
End Sub
Cảm ơn bạn nhiều... vì lúc đấy tại sheet3 (sheet biểu mẫu) mình sẽ cho phép quay về sheet menu hoặc sheet vừa gọi. Từ sheet Menu mới được phép chọn sheet gọi khác...