Ẩn hiện Name bằng VBA

Liên hệ QC

volga

Thành viên tiêu biểu
Tham gia
3/12/08
Bài viết
669
Được thích
669
Nghề nghiệp
Nhân Viên
Em có vấn đề này nhờ các anh chị GPE giúp em ,em đi tìm đọc lại nhửng bài viết củ của mọi người thì thấy có một vẩn đề ẩn hiện name bằng VBA ,nhưng khi em load về xem thì lúc đầu nó đúng ,nhưng sau đó nó ko có tác dụng nữa .Báo lổi .
Mong các anh sửa lại giúp em .chỉ cho em cách tạo nút nhấn Hide Names nữa .dán đoạn code đó vào đâu ,làm sau nó link với nút nhấn đó . và muốn ẩn đi nút đó thì làm sau ?
Thanks tất cả .
 

File đính kèm

  • giau ten-OB.xls
    23 KB · Đọc: 131
Code đó đâu có sai chỉ tại bạn viết thiếu thôi. Trong Module bạn nhập thêm 1 đoạn code mở name ẩn ra là xong!
Mã:
Sub UHideNames()
    Dim N As Name
    For Each N In ThisWorkbook.Names
        N.Visible = True
    Next
End Sub

Để tạo nút Hide Names đó. Bạn nhấn phải chuột vào thanh công cụ chọn Control Toolbox -> Khi thanh công cụ Control Toolbox hiện ra bạn nhấp vào nút Command Button -> vẽ 1 Button trên Excel -> nhấp phải chuột lên Button chọn CommandButton Object -> Edit để chỉnh sữa nội dung của Button.

Nếu muốn đổi tên Button thành Bebebe giống như trong bài thì bạn click chuột lên button 1 cái -> Nhìn vào hộp Name rỗi gõ 1 cái tên lên trong đó.

Chèn code thực thi cho button thì bạn chỉ cần nhấp đúp chuột vào Button thì sẽ hiện ra cửa sổ chèn code cho button này. Và việc tiếp theo là viết code thôi.

Để Button có thể chạy được bạn cần phải tắt nút Design đi. Bằng cách nhầp vào biểu tượng hình cây thước êke trên thanh công cụ Control Toolbox -> Xong.
Thân
 
Upvote 0
Em có vấn đề này nhờ các anh chị GPE giúp em ,em đi tìm đọc lại nhửng bài viết củ của mọi người thì thấy có một vẩn đề ẩn hiện name bằng VBA ,nhưng khi em load về xem thì lúc đầu nó đúng ,nhưng sau đó nó ko có tác dụng nữa .Báo lổi .
Mong các anh sửa lại giúp em .chỉ cho em cách tạo nút nhấn Hide Names nữa .dán đoạn code đó vào đâu ,làm sau nó link với nút nhấn đó . và muốn ẩn đi nút đó thì làm sau ?
Thanks tất cả .
File của bạn bị lổi là vì thiếu mất 1 SUB
Quy trình thực hiện khi ta nhấn vào Button có thể diển giãi ngắn gọn nhau sau:
1> Nếu Button có tên la Hide Names thì khi nhấn vào nó sẽ:
- Gọi Sub HideNames để ẩn tất cả các name
- Đổi tên nút nhấn thành UnHide Names
2> Nếu Button có tên là UnHide Names thi khi nhấn vào nó sẽ:
- Gọi Sub UHideNames để hiện tất cả các name
- Đổi tên nút nhấn thành Hide Names
Vì lẽ đó mà cần có 2 sub riêng biệt là 2 công việc trái ngược nhau ---> File của bạn bị thiếu mất 1 sub nên báo lổi
------------
Thật ra file trên có thể rút gọn lại còn 1 đoạn code duy nhất
PHP:
Option Explicit
Private Sub CommandButton1_Click()
  Dim LB As Boolean, N As Name
  LB = (CommandButton1.Caption = "UnHide Names")
  On Error Resume Next
  For Each N In ThisWorkbook.Names
    N.Visible = LB
  Next
  CommandButton1.Caption = Choose(-LB * 1 + 1, "UnHide Names", "Hide Names")
End Sub
Hy vọng code này bạn áp dụng vào các file khác sẽ không sai nữa
 

File đính kèm

  • An_Hien_Names_01.xls
    23.5 KB · Đọc: 225
Upvote 0
To:Anh Po_Pikachu
Anh ndu96081631
Đối với các anh sau nhẹ nhàng .mấy anh phân tích ra ,em mới nhớ đoạn code kia sai là do em ,khi load về em test thử (xóa một đoạn ).em nghỉ là xóa đi thử rồi tắt đi ko save ,ai ngờ đâu+-+-+-+.
Còn một phần của câu hỏi ,anh giúp em luôn đi,Làm ẩn nút đó đi.chỉ mình em biết nó nằm ở vị trí nào thôi hi hi
Cám ơn hai anh .
 
Upvote 0
Còn một phần của câu hỏi ,anh giúp em luôn đi,Làm ẩn nút đó đi.chỉ mình em biết nó nằm ở vị trí nào thôi hi hi
Cám ơn hai anh .
Vậy thì bạn xài code này đi:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim N As Name
  If Target.Address = "$IV$1" Then
    For Each N In ThisWorkbook.Names
      N.Visible = ([IV1] = "Volga")
    Next
  End If
End Sub
Code này hoạt động dựa vào sự kiện Change của Sheet, Khi bạn gõ vào cell IV1 chử Volga thì lập tức các Name sẽ hiện ra, bằng ngược lại, bạn xóa dử liệu trong cell IV1 hoặc gõ 1 chử gì đó khác với chử Volga thì các name sẽ ẩn tất
----> Volga cũng có thể xem như là Password ---> Bạn có thể đổi thành cái gì khác tùy bạn
Bạn thấy thế nào? Hài lòng chứ
 

File đính kèm

  • An_Hien_Names_02.xls
    20 KB · Đọc: 137
Lần chỉnh sửa cuối:
Upvote 0
Bạn thêm mấy dòng code để ẩn nút đi

Dim nut As Object
Set nut = CommandButton1
nut.Visible = False

Nếu muốn hiện lại thì cho thành True
Have fun
 
Upvote 0
Để đơn giản hơn ta hãy dùng 1 phím tắt quy ước nào đó để thực hiện việc ẩn hay hiện Name. Ở đây mình dùng Ctrl + Alt + N để thực hiện quá trình ẩn Name. Và người ta cũng không thể thấy được Sub nào đang chạy đoạn code đó. Nhưng nhớ 1 điều hãy khóa VBA lại nha! Nếu không thì coi như công giã tràng đó. (Để khóa VBA lại, bạn vào VBA -> Tools -> VBAProject Properties -> chọn thẻ Protection -> chọn vào mục Lock.. -> và nhập hai lần Password ở 2 ô dưới -> OK.)
Mã:
Trong ThisWorkbook: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.OnKey "^%{n}", "chay" End Sub
Mã:
Trong Module1: Private Sub chay()     Dim N As Name     For Each N In ThisWorkbook.Names         N.Visible = Evaluate("AnName")     Next     ActiveWorkbook.Names.Add Name:="AnName", RefersToR1C1:=IIf(Evaluate("AnName") = True, False, True)     ThisWorkbook.Names("AnName").Visible = False End Sub
File: http://www.mediafire.com/?qvy3ngg1muohttp://www.mediafire.com/?im0d4ycnzzn Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Pikachu và các bạn làm ơn cho mình hỏi tại sao với các macro đã gán fím tắt thì nó không lưu Onkey trong VBA?
Định nghĩa fím tắt này được lưu ở đâu trong ẽxcel
Tks in advance
 
Upvote 0
Anh Ndu .
giải quyết vấn đề chỉ cần một đoạn code nhỏ ,mặt dù còn phải đánh chử volga ,nhưng đó củng là pass rồi ,em cám ơn anh ,(có phải 1 đoạn code ko anh ?).
Anh Po_Pikachu.
dùng phím tắt ,với trình độ của em ko thể làm được. bài mẩu của anh có đến 3 , 4 đoạn code em ko biết mình đang sử dụng đoạn nào .
Thành thật cám ơn các anh .
em ko biết tí nào về VBA ,Chỉ copy rồi dùng thôi chứ không biết 1 chút gì +-+-+-+
 
Upvote 0
Anh Ndu .
giải quyết vấn đề chỉ cần một đoạn code nhỏ ,mặt dù còn phải đánh chử volga ,nhưng đó củng là pass rồi ,em cám ơn anh ,(có phải 1 đoạn code ko anh ?).
Đúng vậy! Chỉ 1 đoạn duy nhất
Mai này khi bạn muốn chuyển code sang file khác thì làm như sau:
- Trên file gốc, click phải vào Sheet Tab, chọn View code
- Copy code mà bạn nhìn thấy (nếu chưa thấy thì Double Click vào tên sheet nằm bên trái)
- Mở file mới ra, cũng click phải trên Sheet Tab, chọn View code
- Cũng Double click vào tên sheet nằm bên trái rồi Paste code đã copy vào khung phải
Lưu ý:
- Khi bạn copy code ở file gốc xong, nên đóng file lại (tốt nhất đóng hết tất cả các file Excel hiện đang mở)
- Chỉ mở duy nhất 1 file mới (file mà bạn muốn chèn code) rồi mới thực hiện các bước sau đó
===> Mục đích là để bạn khỏi rối mắt, trong cửa sổ Edit code, nhìn thấy tùm lum các file, không biết phải paste vào chổ nào (chính tôi làm nhiều lần rồi mà có khi còn nhầm lẩn)
 
Upvote 0
Chỉ có hai đoạn code thôi mà! Bạn mở file ra bỏ hết đi code của nút Hide Names thì chỉ có bấy nhiêu thôi. Nếu ở File khác thì cũng chỉ cần bấy nhiêu code là được. Vài vị trí đặt code thì đâu có gì thay đổi đâu. Một thằng đặt trong ThisWorkbook. Mở VBA ra là thấy ThisWorkbook liền. Một đoạn đặt trong Module. Nếu không có thì bấm phải chuột vào tên Sheet trong VBA -> chọn Insert -> Module rồi Paste code dưới vào trong đó. Vậy là xong rồi! Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng vậy! Chỉ 1 đoạn duy nhất
Mai này khi bạn muốn chuyển code sang file khác thì làm như sau:
- Trên file gốc, click phải vào Sheet Tab, chọn View code
- Copy code mà bạn nhìn thấy (nếu chưa thấy thì Double Click vào tên sheet nằm bên trái)
- Mở file mới ra, cũng click phải trên Sheet Tab, chọn View code
- Cũng Double click vào tên sheet nằm bên trái rồi Paste code đã copy vào khung phải
Lưu ý:
- Khi bạn copy code ở file gốc xong, nên đóng file lại (tốt nhất đóng hết tất cả các file Excel hiện đang mở)
- Chỉ mở duy nhất 1 file mới (file mà bạn muốn chèn code) rồi mới thực hiện các bước sau đó
===> Mục đích là để bạn khỏi rối mắt, trong cửa sổ Edit code, nhìn thấy tùm lum các file, không biết phải paste vào chổ nào (chính tôi làm nhiều lần rồi mà có khi còn nhầm lẩn)

Hi hi
Sau hôm nay em làm đúng các thao tác của anh mà nó không có tác dụng vậy anh ?
anh xem lại dùm em **~**.
Em copy toàn bộ paste vào File mới mà nó cứ đơ ra không có tác dụng !
Thanks!!!!!
Nếu cho ẩn name toàn bộ File thì làm sau các anh ?
Thanks !!!!!!!
 

File đính kèm

  • Copy of Loc Phieu.xls
    26.5 KB · Đọc: 33
Upvote 0
Hi hi
Sau hôm nay em làm đúng các thao tác của anh mà nó không có tác dụng vậy anh ?
anh xem lại dùm em **~**.
Em copy toàn bộ paste vào File mới mà nó cứ đơ ra không có tác dụng !
Thanks!!!!!
Nếu cho ẩn name toàn bộ File thì làm sau các anh ?
Thanks !!!!!!!
Tôi thấy nó vẫn bình thường mà ---> Bạn đến cell IV1, gõ chử gì đó vào, xong xóa đi rồi Ctrl + F3 xem thử name có biến mất không?
 
Upvote 0
Tôi thấy nó vẫn bình thường mà ---> Bạn đến cell IV1, gõ chử gì đó vào, xong xóa đi rồi Ctrl + F3 xem thử name có biến mất không?

Hi hi hay thiệt
Nhập chử Volga vào đó và xóa đi ,đóng File lại rồi mở lên nó mới có tác dụng anh à!
Anh giúp làm cho em code hide nguyên File luôn nhe !
Cám ơn anh nhiều .....
Hay copy đoạn code đó paste vào từng sheet ?
Thanks!!!!!!!!
 
Upvote 0
Hi hi hay thiệt
Nhập chử Volga vào đó và xóa đi ,đóng File lại rồi mở lên nó mới có tác dụng anh à!
Anh giúp làm cho em code hide nguyên File luôn nhe !
Cám ơn anh nhiều .....
Hay copy đoạn code đó paste vào từng sheet ?
Thanks!!!!!!!!
Chỉ nhiêu đó code là đủ... nếu chèn thêm sheet và có đặt thêm name, bạn chỉ cần gõ nhăng nhít gì đó vào IV1 là toàn bộ name trên file sẽ ẩn sạch ---> Gõ chử Volga và IV1, toàn bộ name sẽ hiện ra
Đương nhiên, khi ta muốn ẩn hay hiện name, phải quay về cell IV1 của sheet có chứa code mà gõ ---> Gõ ở các sheet khác hoàn toàn không có tác dụng
Còn nữa: Đây là sự kiện Worksheet_Change ---> Gõ chử vào IV1 nó có tác dụng ngay chứ! Đâu cần đóng file, mở file làm gì
 
Lần chỉnh sửa cuối:
Upvote 0
Không ai chịu bẫy lỗi nhỉ.
Nếu không có name đó thì làm sao mà ẩn với hiện nhỉ. Chạy Code sẽ bị lỗi.

Thân!
 
Upvote 0
em đang tập viết để tạo name và ẩn name. nhưng không rành lắm nên mong các các sửa giúp làm sao để chỉ ẩn nhưng name được tạo bằng sub này còn những name khác thì không ẩn với ạ. nếu em muốn tạo thêm name ở sheet khác nữa thì có sửa lại được code này không nhờ mọi người sửa giúp ạ.
Mã:
Sub TaoName()
    Dim rng As Range, N As Name
    Set rng = Range(Sheet1.[B6], Sheet1.[B65536].End(xlUp))
    If rng.Address = "$B$5:$B$6" Then
        Sheet1.[B6].Name = "NgayGS"
        Sheet1.[C6].Name = "NgayCT"
        Sheet1.[D6].Name = "SoCT"
        Sheet1.[E6].Name = "DienGiai"

    Else
        rng.Name = "NgayGS"
        rng.Offset(, 1).Name = "NgayCT"
        rng.Offset(, 2).Name = "SoCT"
        rng.Offset(, 3).Name = "DienGiai"
    End If
        For Each N In ThisWorkbook.Names
        N.Visible = False
        Next
End Sub
 
Upvote 0
Tôi thấy nó vẫn bình thường mà ---> Bạn đến cell IV1, gõ chử gì đó vào, xong xóa đi rồi Ctrl + F3 xem thử name có biến mất không?
Đúng là cái mình đang cần nếu gõ đúng Volga thì nó hiện name ra. Nhưng khi copy code ốp vào file của mình thì nó lại không được. Liệu có phải do file của mình cột cuối là XFD
 
Upvote 0
Đúng là cái mình đang cần nếu gõ đúng Volga thì nó hiện name ra. Nhưng khi copy code ốp vào file của mình thì nó lại không được. Liệu có phải do file của mình cột cuối là XFD
Copy code thôi chưa có tác dụng đâu. Bạn phải gõ gì đó vào cell IV1 thì mới có tác dụng
 
Upvote 0
Cảm ơn anh nhiều. Em đã làm được. Giải quyết được nhiều vướng mắc của em lắm luôn
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom