Lỗi HyperLink khi ẩn Sheet

Liên hệ QC

boyxin

Members actively
Tham gia
10/3/08
Bài viết
1,664
Được thích
2,335
Khi dùng siêu liên kết giữa các sheet bời
  • AllSh=SUBSTITUTE(ShN,"["&Wb&"]","")
  • Link=INDIRECT("'"&INDIRECT("B"&CELL("Row"))&"'!A5")
  • NoSs=GET.WORKBOOK(ROW(INDIRECT("A4")))
  • ShN=GET.WORKBOOK(ROW(INDIRECT("A1")))
  • Wb=GET.WORKBOOK(ROW(INDIRECT("A16")))
mà dùng thủ tục auto Hide sheet
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
For i = 2 To Sheets.Count Step 1
        Sheets(i).Visible = False
Next
    ViTri = InStr(1, Target.Value, "!", vbTextCompare)
    TenSheet = Left(Target.Value, ViTri - 1)
    If Right(TenSheet, 1) = "'" Then
        TenSheet = Left(TenSheet, Len(TenSheet) - 1)
    End If
    Sheets(TenSheet).Visible = True
    Sheets(TenSheet).Select
End Sub
Thì không thể link tới các sheet ẩn.
Trong khi nếu vào Format \ Sheet \ Hide thì vẫn link được

Các bác xem và xử lý giúp em code này với để em vẫn có thể link bằng các siêu liên kết trong file đính kèm
 

File đính kèm

  • HyperLink AutoHide.rar
    12.6 KB · Đọc: 25
Lần chỉnh sửa cuối:
Cái lổi này là do bạn dùng sự kiện SelectionChange, bạn vừa nhấp vào 1 cell nào đó thì nó đã Hide tuốt mấy sheet kia rồi, sao link dc đây...
Vậy tùy bạn quyết định, Có thể thêm điều kiện nếu nhấp vào 1 cell nào đó thì mới Hide sheet..
Bạn nghĩ sao?
Còn cái này nữa:
Trong khi nếu vào Format \ Sheet \ Hide thì vẫn link được
Tôi thử có dc đâu!.. Sheet bị ẩn thì ko link dc
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Cái lổi này là do bạn dùng sự kiện SelectionChange, bạn vừa nhấp vào 1 cell nào đó thì nó đã Hide tuốt mấy sheet kia rồi, sao link dc đây...
Vậy tùy bạn quyết định, Có thể thêm điều kiện nếu nhấp vào 1 cell nào đó thì mới Hide sheet..
ANH TUẤN


Vấn đề là ở chỗ này
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
For i = 1 To Sheets.Count Step 1
If Sheets(i).Name <> "MUCLUC" Then
Sheets(i).Visible = False
End If
Next
ViTri = InStr(1, Target.Value, "!", vbTextCompare)
TenSheet = Left(Target.Value, ViTri - 1)
If Right(TenSheet, 1) = "'" Then
TenSheet = Left(TenSheet, Len(TenSheet) - 1)
End If
Sheets(TenSheet).Visible = True
Sheets(TenSheet).Select
End Sub

OKIE ĐÃ XỬ LÝ XONG RỒI
 

File đính kèm

  • HyperLink AutoHide 01.rar
    12.5 KB · Đọc: 50
Lần chỉnh sửa cuối:
Upvote 0
Ah... bạn sai ở 2 chổ!
1> Trên file đó người ta Hyperlink bằng code VBA
2> Thiếu ký tự "!A1" trong cell B7
Nếu bạn cũng muốn link giống vậy thì Remove Hyperlink trong file của bạn đi rồi thêm "!A1" vào sau công thức, cụ thể là:
=IF(B3+1>NoSs,"",INDEX(AllSh,1,B3+1))&"!A1"
Việc Hyperlink này sẽ do code quyết định!
ANH TUẤN
ANH TUẤN
 
Upvote 0
Ah... quên.. có thể sửa lại code trên file của bạn như vầy sẽ hay hơn!
Vì bạn dùng ComboBox, sau ko liên kết nó với 1 macro?
như vầy đây:
PHP:
Sub DropDown6_Change()
    ViTri = InStr(1, Range("B7").Value, "!", vbTextCompare)
    TenSheet = Left(Range("B7").Value, ViTri - 1)
    If Right(TenSheet, 1) = "'" Then
        TenSheet = Left(TenSheet, Len(TenSheet) - 1)
    End If
    Sheets(TenSheet).Visible = True
    Sheets(TenSheet).Select
End Sub
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 1 To Sheets.Count Step 1
    If Sheets(i).Name <> "INDEX" Then
        Sheets(i).Visible = False
    End If
Next
End Sub
Tất nhiên cell B7 đã sửa lại công thức giống ở trên!
Chọn ComboBox 1 nhát nó link liền
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Ah... bạn sai ở 2 chổ!
1> Trên file đó người ta Hyperlink bằng code VBA
2> Thiếu ký tự "!A1" trong cell B7
Nếu bạn cũng muốn link giống vậy thì Remove Hyperlink trong file của bạn đi rồi thêm "!A1" vào sau công thức, cụ thể là:
=IF(B3+1>NoSs,"",INDEX(AllSh,1,B3+1))&"!A1"
Việc Hyperlink này sẽ do code quyết định!
ANH TUẤN
ANH TUẤN

Remove link của mình thì còn nói chuyện gì, sửa code để mà link thoai
 
Upvote 0
Remove link của mình thì còn nói chuyện gì, sửa code để mà link thoai
Ý tôi nói rằng:
Cái Hyperlink bằng công thức trong file của bạn là dư thừa, vì bản thân code nó đã làm công việc link rồi...
Tức là đã dùng code thì công thức chi cho nó rối...
Bạn hiểu ko?
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Cell B7 =IF(B3+1>NoSs,"",INDEX(AllSh,1,B3+1))&"!A1"

Ah... quên.. có thể sửa lại code trên file của bạn như vầy sẽ hay hơn!
Vì bạn dùng ComboBox, sau ko liên kết nó với 1 macro?
như vầy đây:
PHP:
Sub DropDown6_Change()
    ViTri = InStr(1, Range("B7").Value, "!", vbTextCompare)
    TenSheet = Left(Range("B7").Value, ViTri - 1)
    If Right(TenSheet, 1) = "'" Then
        TenSheet = Left(TenSheet, Len(TenSheet) - 1)
    End If
    Sheets(TenSheet).Visible = True
    Sheets(TenSheet).Select
End Sub
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 1 To Sheets.Count Step 1
    If Sheets(i).Name <> "INDEX" Then
        Sheets(i).Visible = False
    End If
Next
End Sub
Tất nhiên cell B7 đã sửa lại công thức giống ở trên!
Chọn ComboBox 1 nhát nó link liền
ANH TUẤN

anh tuan 1066 đã test chưa ? HÌnh như còn thiếu cái gì đó nên chưa link được
 
Upvote 0
Tất nhiên cell B7 đã sửa lại công thức giống ở trên!
Chọn ComboBox 1 nhát nó link liền
...................................
Test rồi mới đưa lên chứ! Đâu có gì ko ổn đâu!
Có khi nào bạn chưa sửa lại công thức ở B7 như tôi nói ko?
ANH TUẤN

Chọn ComboBox 1 nhát nó không link mà sau đó cứ chọn ô bất kỳ thì nó link. khi link quay về thì 2 phát quay về nó mới cho về INDEX
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 1 To Sheets.Count Step 1
    If Sheets(i).Name <> "INDEX" Then
        Sheets(i).Visible = False
    End If
Next
    ViTri = InStr(1, Range("B7").Value, "!", vbTextCompare)
    TenSheet = Left(Range("B7").Value, ViTri - 1)
    If Right(TenSheet, 1) = "'" Then
        TenSheet = Left(TenSheet, Len(TenSheet) - 1)
    End If
    Sheets(TenSheet).Visible = True
    Sheets(TenSheet).Select
End Sub
HIIIIIIIIIIIIIIIII
 
Lần chỉnh sửa cuối:
Upvote 0
Ko biết bạn bị sai chổ nào, chứ tôi làm bình thường... Chọn ComboBox là nó link tức thì
 
Upvote 0
Web KT
Back
Top Bottom