Tham chiếu từ nhiều sheets đến 1 sheet

Liên hệ QC

PAT_excel

Thành viên mới
Tham gia
22/10/16
Bài viết
13
Được thích
1
Nghề nghiệp
Kế toán

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.
Bài đã được tự động gộp:
 
Có thể dùng hàm HYPERLINK để liên kết, hoặc tự tạo Link mà không dùng VBA?
 
Upvote 0
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.
Bài đã được tự động gộ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ể).
 
Upvote 0
Có thể dùng hàm HYPERLINK để liên kết, hoặc tự tạo Link mà không dùng VBA?
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ề.
 
Upvote 0
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.
Code ở Workbook:
Mã:
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
 

File đính kèm

  • Back to Pre Sheet.xlsm
    19.4 KB · Đọc: 11
Upvote 0
Có một cách đơn giản là click chuột phải vào góc dưới trái màn hình.
215269
 
Upvote 0
Có một cách đơn giản là click chuột phải vào góc dưới trái màn hình.
View attachment 215269
Đơ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?)
... quay lại đúng sheet vừa gọi ...
 
Upvote 0
Đơ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.
 

File đính kèm

  • vidu1.xlsx
    18.3 KB · Đọc: 8
Upvote 0
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 xem bài số #5 hoặc #6 thử đi.
 
Upvote 0
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.
 

File đính kèm

  • HyperLink.xlsm
    30.9 KB · Đọc: 8
Lần chỉnh sửa cuối:
Upvote 0
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
 
Upvote 0
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
 
Upvote 0
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
 
Upvote 0
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...
 
Upvote 0
Web KT
Back
Top Bottom