Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để ẩn hoặc hiện các cột dựa trên lựa chọn danh sách thả xuống trong Excel?

Trong khi sử dụng Excel, bạn có thể ẩn hoặc hiện các cột cụ thể dựa trên việc lựa chọn danh sách thả xuống. Ví dụ: nếu bạn chọn Không trong danh sách thả xuống, cột C đến Tôi sẽ bị ẩn, nhưng nếu bạn chọn Có, các cột ẩn từ C đến Tôi sẽ bị ẩn. Xem ảnh chụp màn hình bên dưới được hiển thị.
Trong bài viết này, chúng tôi sẽ chỉ cho bạn một phương pháp VBA để ẩn hoặc hiện các cột dựa trên lựa chọn danh sách thả xuống trong Excel.

Ẩn hoặc hiện các cột dựa trên lựa chọn danh sách thả xuống trong Excel


Ẩn hoặc hiện các cột dựa trên lựa chọn danh sách thả xuống trong Excel

Như ví dụ trên đã đề cập, để ẩn hoặc hiện cột C thành I dựa trên lựa chọn danh sách thả xuống, vui lòng thực hiện như sau.

1. Đầu tiên, hãy tạo danh sách thả xuống của bạn với Có và Không mà bạn cần.

2. Sau đó nhấn Khác + F11 để mở Microsoft Visual Basic cho ứng dụng cửa sổ.

3. Nhấp đúp vào tên trang tính đang mở hiện tại trong dự án VBA để mở Trình chỉnh sửa mã.

4. Sau đó sao chép và dán mã VBA bên dưới vào Trình chỉnh sửa mã.

Mã VBA: ẩn hoặc hiện các cột dựa trên lựa chọn danh sách thả xuống

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180822
    If Target.Column = 2 And Target.Row = 3 Then
        If Target.Value = "No" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = True
        ElseIf Target.Value = "Yes" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = False
        End If
    End If
End Sub

Chú thích: Trong đoạn mã trên, Cột = 2 và Hàng = 3 là tham chiếu ô của danh sách thả xuống và phạm vi C: I là các cột bạn muốn ẩn hoặc hiện, vui lòng thay đổi chúng theo nhu cầu của bạn.

5. nhấn Khác + Q các phím đồng thời để thoát khỏi Microsoft Visual Basic cho ứng dụng cửa sổ.

Từ bây giờ, khi bạn chọn Không trong danh sách thả xuống, tất cả các cột được chỉ định sẽ bị ẩn.

Nhưng nếu bạn chọn Có trong danh sách thả xuống, tất cả các cột ẩn sẽ được hiển thị ngay lập tức.


Các bài liên quan:


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (80)
Xếp hạng 5 trong 5 · xếp hạng 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi có một sổ làm việc và đang cố gắng tìm hiểu mã VBA. Tôi có mã mà nếu tôi chọn từ một trang1 thả xuống, nó sẽ hiển thị một trang tính. Tôi đang tìm mã mà tôi chọn trang 1 và chọn phạm vi 3-5 từ danh sách thả xuống. Mã này sẽ hiển thị trang tính và hiển thị 5 cột trong trang tính được hiển thị. Điều đó có khả thi không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
nhận được mã lỗi khi bạn xóa số đầu vào, tôi có thể nhận trợ giúp về việc này không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đã sửa đổi mã như thế này



Private Sub Worksheet_Change (ByVal Target As Range)


Nếu Target.Column = 3 Và Target.Row = 2 Và Target.Value = "Không"

Sau đó


Application.Rows ("3:90"). Chọn


Application.Selection.EntireRow.Hidden = True


Khác


Application.Rows ("3:90"). Chọn


Ứng dụng.Selection.EntireRow.Hidden = Sai


Cuối Nếu


End Sub




Nhưng vấn đề đang gặp phải là tôi không thể trả lời có không: vì tất cả các hàng từ 3 đến 90 đang được chọn không cho phép tôi trả lời các câu hỏi tiếp theo
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kính gửi harikumar,

Mã bạn cung cấp hoạt động tốt cho tôi. Khi chọn Không từ danh sách thả xuống (nằm trong ô C2), hàng 3:90 sẽ bị ẩn ngay lập tức. Và chọn Có từ danh sách thả xuống sẽ hiện tất cả chúng cùng một lúc. Xin lỗi, tôi không hiểu bạn đã nói gì về việc không thể trả lời câu trả lời có không.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn vì bài viết hữu ích.


Tôi muốn thực hiện macro này một bước xa hơn: Tôi cần chính xác điều này, nhưng với lưu ý rằng các cột mà tôi cần ẩn không nhất thiết phải nằm trong một phạm vi liền kề và có thể được xác định bởi một hàng cụ thể trong mỗi cột.

Những gì tôi có trong đầu là một cái gì đó như thế này:
nếu refcell = "a", thì ẩn tất cả các cột có "a" ở hàng 7, ngược lại
nếu refcell = "b", thì ẩn tất cả các cột có "b" trong hàng 7, ngược lại
nếu refcell = "c", thì ẩn tất cả các cột có "c" trong hàng 7 khác
hiển thị tất cả các cột

Nếu điều này là có thể, mã VBA sẽ trông như thế nào?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
này! Bạn đã tìm thấy một giải pháp cho điều này? Tìm giống nhau: D
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
John thân mến,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Khi nhập "a" vào ô A1, tất cả các cột có "a" ở hàng 7 sẽ tự động bị ẩn. Nó cũng hoạt động khi nhập b và c vào ô A1.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg theo phạm vi
Dim xRgFind As Range
Dim xRgUni dưới dạng phạm vi
Dim xFirstAddress dưới dạng chuỗi
On Error Resume Next
Application.ScreenUpdating = Sai
Hàng (7) .EntireColumn.Hidden = Sai
If Target.Address = Range ("A1"). Địa chỉ Thì
Đặt xRg = Intersect (ActiveSheet.UsedRange, Rows (7))
Đặt xRgFind = xRg.Find (Target.Value,, xlValues, xlWhole,,, True)
Nếu không xRgFind là không có gì thì
xFirstAddress = xRgFind.Address
Do
Đặt xRgFind = xRg.FindNext (xRgFind)
Nếu xRgUni không là gì thì
Đặt xRgUni = xRgFind
Khác
Đặt xRgUni = Application.Union (xRgUni, xRgFind)
Cuối Nếu
Loop While (Không phải xRgFind là Không có gì) Và (xRgFind.Address <> xFirstAddress)
Cuối Nếu
xRgUni.EntireColumn.Hidden = True
Cuối Nếu
Application.ScreenUpdating = True
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ryan thân mến,
Vui lòng thử mã VBA sau. Khi nhập "a" vào ô A1, tất cả các cột có "a" ở hàng 7 sẽ tự động bị ẩn. Nó cũng hoạt động khi nhập b và c vào ô A1.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg theo phạm vi
Dim xRgFind As Range
Dim xRgUni dưới dạng phạm vi
Dim xFirstAddress dưới dạng chuỗi
On Error Resume Next
Application.ScreenUpdating = Sai
Hàng (7) .EntireColumn.Hidden = Sai
If Target.Address = Range ("A1"). Địa chỉ Thì
Đặt xRg = Intersect (ActiveSheet.UsedRange, Rows (7))
Đặt xRgFind = xRg.Find (Target.Value,, xlValues, xlWhole,,, True)
Nếu không xRgFind là không có gì thì
xFirstAddress = xRgFind.Address
Do
Đặt xRgFind = xRg.FindNext (xRgFind)
Nếu xRgUni không là gì thì
Đặt xRgUni = xRgFind
Khác
Đặt xRgUni = Application.Union (xRgUni, xRgFind)
Cuối Nếu
Loop While (Không phải xRgFind là Không có gì) Và (xRgFind.Address <> xFirstAddress)
Cuối Nếu
xRgUni.EntireColumn.Hidden = True
Cuối Nếu
Application.ScreenUpdating = True
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Crystal,
Tôi mới làm quen với điều này. Tôi không thể biết từ mã của bạn cách bạn xác định a, b và c là các giá trị trong ô A1. Về cơ bản, tôi phải làm những gì mã của bạn làm, nhưng tôi cần giá trị của A1 (hoặc bất kỳ ô nào khác mà tôi muốn sử dụng) là một chuỗi.
Ví dụ:
Tôi có một bảng (phạm vi ô) chứa 1 trong 3 giá trị ở Hàng 3. Các giá trị là ("Hoạt động", "Không hoạt động" và "Đã đóng". Tôi muốn tất cả các cột có "Không hoạt động" hoặc "Đã đóng "trong Hàng 3 sẽ bị ẩn. Giá trị trong Hàng 3 là từ một hàm INDEX / MATCH kéo từ một trang tính khác trong sổ làm việc của tôi. Trong trang tính khác, tôi chọn 1 trong 3 giá trị từ danh sách thả xuống.

Làm cách nào để sửa đổi mã này để tìm kiếm "Không hoạt động" hoặc "Đã đóng" trong Hàng 3 và chỉ ẩn các cột đó?


Rất cám ơn trước!

Eddie
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Eddie thân mến,
Xin lỗi, tôi không thể giúp gì cho việc này. Bạn có thể đăng câu hỏi của mình trong diễn đàn của chúng tôi: https://www.extendoffice.com/forum.html để nhận được nhiều hỗ trợ hơn từ chuyên gia Excel của chúng tôi.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi cần sử dụng điều này để ẩn 14 cột luân phiên dựa trên giá trị ô.
ví dụ - Nếu A1 = CAT, thì ẩn các cột từ J đến V

Nếu A1 = BAT, thì ẩn các cột I và K thành V

Nếu A1 = HAT, thì ẩn các cột I, J và L thành P

Về cơ bản, dữ liệu của tôi nằm trong các cột từ I đến V và tôi cần ẩn các cột khỏi phạm vi này ngoại trừ cột được chọn trong ô tham chiếu. và hiện tất cả nếu "Tất cả" được chọn trong ô tham chiếu.

Tôi đã thử sử dụng cùng một công thức ở trên trong một vòng lặp nhưng tôi gặp "lỗi biên dịch -" Có công thức nào khác mà tôi cần sử dụng không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ruchi thân mến,
Xin lỗi, tôi không thực sự hiểu ý của bạn là “Về cơ bản, dữ liệu của tôi nằm trong các cột từ I đến V và tôi cần ẩn các cột khỏi phạm vi này ngoại trừ cột được chọn trong ô tham chiếu. và hiện tất cả nếu "Tất cả" được chọn trong ô tham chiếu. ”
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có ai giúp được không :


Nếu tôi nhập giá trị vào ô A1 là "Không", tôi muốn ẩn các cột D: E. và nếu tôi nhập giá trị là "Có", tôi muốn các cột D: E để hiện và các cột F: G để ẩn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Anish thân mến,
Mã VBA này có thể giúp bạn. Xin vui lòng có một thử. Cảm ơn bình luận của bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg theo phạm vi
Đặt xRg = Range ("A1")
Nếu xRg.Address = Target.Address Và Target.Value = "Không" Thì
Columns ("D: E"). EntireColumn.Hidden = True
ElseIf xRg.Address = Target.Address Và Target.Value = "Có" Sau đó
Columns ("D: E"). EntireColumn.Hidden = False
Columns ("F: G"). EntireColumn.Hidden = True
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi cần hỗ trợ với macro hoặc công thức excel. Có ai giúp được không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi cần hỗ trợ với một macro tương tự nhưng đối với các phạm vi ô được chỉ định, không phải toàn bộ cột. Điều này có thể được thực hiện?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kara thân mến,
Ý của bạn là "ẩn nội dung của các phạm vi ô được chỉ định dựa trên giá trị ô"? Vui lòng gửi câu hỏi của bạn kèm theo chi tiết để giúp chúng tôi giải quyết vấn đề.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn! Tôi có một lựa chọn gồm 10 mục và đang cố gắng chỉ hiển thị các hàng từ 57 đến 72 khi tôi chọn một trong số chúng. Tôi đang sử dụng mã sau nhưng bằng cách nào đó nó không hoạt động và trang tổng quan của tôi không thay đổi gì cả. Tuy nhiên, khi tôi nhập một thứ gì đó vào một ô ngẫu nhiên, trang sẽ tải lại và hàng 57:72 bị ẩn. Nhưng sau đó, nó vẫn giữ nguyên trên tất cả các lựa chọn của tôi và tôi không thể hiện lại nó thông qua lựa chọn hộp thả. Tôi có thể biết nếu bất cứ ai có một đề xuất thay thế? Cảm ơn bạn trước!


Private Sub Worksheet_Change (ByVal Target As Range)

Nếu Target.Column = 2 Và Target.Row = 3 Và Target.Value = "1"

Sau đó, Application.Rows ("57:72"). Chọn Application.Selection.EntireRow.Hidden = False

Else Application.Rows ("57:72"). Chọn Application.Selection.EntireRow.Hidden = True

Cuối Nếu

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Cảm ơn mã, nếu tôi muốn thêm tùy chọn thứ ba thì cú pháp là gì?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã sửa đổi mã này để ẩn các hàng thay vì cột và nó hoạt động nhưng với một vấn đề nhỏ. Tôi có một số danh sách xác thực dữ liệu trên cùng một trang tính và khi tôi chọn một giá trị từ các danh sách khác này, tất cả các hàng được chỉ định trong mã của tôi dường như tự động hiển thị ngay cả khi giá trị cho ô đích được đặt thành 'Không'. Tại sao điều này xảy ra và làm thế nào tôi có thể sửa chữa nó?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Janice thân mến,
Xin lỗi vì sự nhầm lẫn, vui lòng thử mã mới bên dưới. Cám ơn bạn đã góp ý.

Private Sub Worksheet_Change (ByVal Target As Range)
Nếu Target.Column = 2 và Target.Row = 3 thì
If Target.Value = "No" Thì
Application.Columns ("C: I"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Columns ("C: I"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đây chính xác là những gì tôi cần làm, nhưng tôi không muốn cột được tô sáng khi tôi ẩn / hiện. Làm cách nào tôi có thể tích hợp vào mã để chuyển đến ô tiếp theo?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn vì bài viết hữu ích. Tôi muốn thực hiện macro này một bước xa hơn: Tôi cần chính xác điều này, nhưng các cột mà tôi cần ẩn / bỏ ẩn không nhất thiết phải nằm trong một phạm vi liên tục. Các cột của tôi nằm trong khoảng từ C đến NC. Điều tôi muốn là nếu tôi chọn Giá trị mục tiêu 1, nó sẽ ẩn AH thành NC và hiện C thành AG, và khi tôi chọn Giá trị mục tiêu 2, nó sẽ ẩn C thành AG và cả BJ thành NC, và hiện AH thành BI, v.v. tùy thuộc vào Giá trị mục tiêu.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Về cơ bản, tôi cần biết cách tham chiếu đến nhiều phạm vi cùng một lúc. Tôi đã thử nhưng nó báo lỗi. Đây là một cái nhìn
Private Sub Worksheet_Change (ByVal Target As Range)
Nếu Target.Column = 2 và Target.Row = 4 thì
If Target.Value = "January" Thì
Application.Columns ("AH: NC"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Tháng Giêng" Sau đó
Application.Columns ("C: AG"). Chọn
Application.Selection.EntireColumn.Hidden = Sai

ElseIf Target.Value = "Tháng Hai" Sau đó
Application.Columns ("C: AG, BJ: NC"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Tháng Hai" Sau đó
Application.Columns ("AH: BI"). Chọn
Application.Selection.EntireColumn.Hidden = Sai

Cuối Nếu
Cuối Nếu
End Sub

Lưu ý: Nó hoạt động cho Target.Value = "January", nhưng đối với Target.Value = "March", nó làm nổi bật lỗi trên dòng này => Application.Columns ("C: AG, BJ: NC"). Chọn

Hơn nữa, một khi nó ẩn khi chọn một giá trị đích, nó sẽ không ẩn khi chọn một số giá trị đích khác
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Maria,
Mã của bạn đã được tối ưu hóa. Xin vui lòng có một thử. Hy vọng tôi có thể giúp đỡ.

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Dim xHrow dưới dạng số nguyên
Đặt xRG = Range ("B4")
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "January" Thì
Application.Columns ("AH: NC"). Hidden = True
Application.Columns ("C: AG"). Hidden = False
ElseIf Target.Value = "Tháng Hai" Sau đó
Application.Columns ("C: AG"). Hidden = True
Application.Columns ("BJ: NC"). Hidden = True
Application.Columns ("AH: BI"). Hidden = False
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Menu thả xuống của tôi nằm trên ô B23. Nếu có, hãy hiển thị và nếu không, sau đó ẩn hàng 29. Đây là mã tôi đang sử dụng:

Private Sub Worksheet_Change (ByVal Target As Range)
'Cập nhật Extendoffice 20180822
Nếu Target.Column = 2 và Target.Row = 23 thì
Nếu Target.Value = "không" Thì
Application.Row (29). Chọn
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "yes" Sau đó
Application.Row (29). Chọn
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub

Nhưng tôi kết thúc với lỗi thời gian chạy 438 - Đối tượng không hỗ trợ thuộc tính hoặc phương thức này. Tại sao? Có gì đó sai trong đoạn mã trên không?

Xin được cảm ơn trước về sự giúp đỡ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Guinther,
Mã VBA dưới đây có thể giúp bạn giải quyết vấn đề. Xin vui lòng có một thử. Cảm ơn bình luận của bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Dim xHrow dưới dạng số nguyên
Đặt xRG = Range ("B23")
xHrow = 29
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "No" Thì
Application.Rows (xHRow) .Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Rows (xHRow) .Select
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Crystal,


Tôi hy vọng bạn có thể giúp tôi ẩn / hiển thị nhiều hàng. Tôi muốn hiển thị các hàng 63-73 khi CÓ được chọn trong ô D51. Tôi đang sử dụng cái sau -


Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Dim xHrow dưới dạng số nguyên
Đặt xRG = Range ("D51")
xHRow = ("63:73")
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "No" Thì
Application.Rows (xHRow) .Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Rows (xHRow) .Select
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub



Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Gab,
Vui lòng áp dụng mã VBA bên dưới. Cảm ơn bình luận của bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Dim xHrow dưới dạng chuỗi
Đặt xRG = Range ("D51")
xHRow = "63:73"
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "No" Thì
Application.Rows (xHRow) .Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Rows (xHRow) .Select
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào.

Tôi sẽ ẩn toàn bộ hàng từ 118 đến 120 nếu Danh sách thả xuống ghi KHÔNG, nếu không thì những hàng này sẽ được hiển thị. Bạn có thể giúp tôi không? Tham chiếu ô thả xuống của tôi tại F-117.

Sử dụng mã này nhưng không có hành động nào xảy ra.

Private Sub Worksheet_Change (ByVal Target As Range)
Nếu Target.Column = 6 và Target.Row = 117 thì
If Target.Value = "No" Thì
Application.Rows ("118:120"). Chọn
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Rows ("118:120"). Chọn
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Russ Arnejo,
Tôi không chắc liệu mình có hiểu đúng điều này không. "Tham chiếu ô thả xuống tại F-117", điều này có nghĩa là ô F117 chứa danh sách thả xuống? Nếu vậy, chỉ cần sử dụng tham chiếu ô F117 trong mã. Toàn bộ kịch bản VBA như sau. Xin vui lòng cung cấp cho nó một thử.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20230106
Dim xRG As Range
Dim xHRow As String
Set xRG = Range("F117")
xHRow = "118:120"
If Not Intersect(Target, xRG) Is Nothing Then
If Target.Value = "No" Then
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Yes" Then
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã được cung cấp để ẩn / hiện các cột dựa trên giá trị được chọn từ danh sách thả xuống của một cột khác hoạt động rất tốt. Thanks. Nhưng nó chỉ hoạt động cho một hàng.
Cách áp dụng điều này cho phần còn lại của số hàng đã chọn trong bảng tính. Tôi hiểu rằng chúng ta có thể phải xác định một biến cho số hàng và theo gia số vòng lặp đó. Nhưng tôi không biết cú pháp cho nó. Ai đó có thể giúp với điều đó xin vui lòng?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Vui lòng thử mã VBA bên dưới. Hy vọng nó có thể giúp ích.
Vui lòng thay đổi phạm vi khi bạn cần.

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Đặt xRG = Range ("B3: B30")
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "No" Thì
Application.Columns ("C: I"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Có" Sau đó
Application.Columns ("C: I"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn. Tôi đã sử dụng mã và nó hoạt động tốt, nhưng khi tôi nhập vào một ô bên dưới và nhấn enter, nó sẽ tự động di chuyển con trỏ trở lại hộp đích. Có cách nào để làm việc này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Grant,
Tôi đã thử như bạn đã đề cập, nhưng không tìm thấy vấn đề tương tự. Bạn có thể cho tôi biết phiên bản Excel của bạn không? Cảm ơn đã bình luận.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mỗi cột là một sinh viên khác nhau (2 trong ví dụ này là A và B). Tôi có hai trình đơn thả xuống (trên A1 và B1). Mỗi tùy chọn đều có "Đạt" "Không đạt" và "Chọn một". Bây giờ, tôi đã quản lý để làm cho nó hoạt động khi chỉ chọn một menu thả xuống (A1 hoặc B1). Tôi muốn có thể hiện các trường đã bị A1 ẩn bất cứ khi nào tôi chọn nội dung nào đó trên B1. Mục tiêu là chọn một tùy chọn trên A1 và điền vào các hàng còn lại. Sau đó chọn B1 và ​​điền vào bất kỳ hàng nào còn lại (Bất kể lựa chọn A1.

Cảm ơn bạn!

Private Sub Worksheet_Change (ByVal Target As Range)

Nếu Giao điểm (Mục tiêu, Phạm vi ("A1: B2")) Không có gì Hoặc Mục tiêu.Cells.Count> 1 Thì
Thoát Sub

ElseIf Range ("A1"). Giá trị = "Chọn một" Sau đó
Hàng ("2:15"). EntireRow.Hidden = Sai

ElseIf Range ("A1"). Giá trị = "Đạt" Sau đó
Hàng ("7"). EntireRow.Hidden = Sai
Hàng ("8:15"). EntireRow.Hidden = True

ElseIf Range ("A1"). Giá trị = "Không thành công" Sau đó
Hàng ("7"). EntireRow.Hidden = True
Hàng ("8:15"). EntireRow.Hidden = Sai

ElseIf Range ("B1"). Giá trị = "Chọn một" Sau đó
Hàng ("2:15"). EntireRow.Hidden = Sai

ElseIf Range ("B1"). Giá trị = "Đạt" Sau đó
Hàng ("7"). EntireRow.Hidden = Sai
Hàng ("8:15"). EntireRow.Hidden = True

ElseIf Range ("B1"). Giá trị = "Không thành công" Sau đó
Hàng ("7"). EntireRow.Hidden = True
Hàng ("8:15"). EntireRow.Hidden = Sai

Cuối Nếu

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngày tốt,
Xin lỗi không thể giúp bạn với điều đó. Cảm ơn bình luận của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi gặp lỗi tại xHRow = (14:24 ")

Tôi đang cố ẩn hoặc hiện nhiều hàng tùy thuộc vào lựa chọn C4 của mình. Bạn có thể hỗ trợ với những gì tôi có sai?

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xRG theo phạm vi
Dim xHrow As Range
Đặt xRG = Range ("C4")
xHRow = ("14:24")
Nếu không giao nhau (Target, xRG) thì không có gì
If Target.Value = "Pulled" Thì
Application.Rows (xHRow) .Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Đã thay thế" Sau đó
Application.Rows (xHRow) .Select
Ứng dụng.Selection.EntireRow.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Lỗi là: Lỗi thời gian chạy '91':
Biến đối tượng hoặc với biến khối chưa được đặt
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi cần giúp đỡ. Tại sao khi tôi đã sao chép công thức đó vào VBA của mình và tôi cố gắng chơi nó, toàn bộ bảng bị ẩn chứ không chỉ một phần cột mà tôi muốn ẩn?
Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Reza G.
Mã hoạt động tốt trong trường hợp của tôi. Bạn có phiền đính kèm ảnh chụp màn hình phạm vi bảng của bạn và mã VBA sau khi thay đổi không? Cảm ơn bình luận của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bonjour, j'ai le même problème ...

Voici mon code VBA modifié:

Private Sub Worksheet_Change (ByVal Target As Range)
Nếu Target.Column = 3 Và Target.Row = 3 Và Target.Value = "Gestion" Thì
Application.Columns ("D: E"). Chọn
Application.Selection.EntireColumn.Hidden = True

Khác

If Target.Value = "Affaire nouvelle" Thì
Application.Columns ("D: E"). Chọn
Application.Selection.EntireColumn.Hidden = Sai

Khác

Nếu Target.Value = "Avenant" Thì
Application.Columns ("D: E"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Cuối Nếu
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã sử dụng mã để làm việc tuyệt vời. Cảm ơn bạn. Nhưng khi tôi chọn từ menu thả xuống, nó hoạt động đến mã cuối cùng hoặc chuyển đến dữ liệu cột cuối cùng. Làm thế nào để chọn dropdown mọi lúc (Column = 13 And Target.Row = 3 then) không di chuyển và có thể ghi dữ liệu vào cột tiếp theo?
Cảm ơn bạn.
Ví dụ: Private Sub Worksheet_Change (ByVal Target As Range)
'Cập nhật Extendoffice 20180822
'If Target.Column = 13 And Target.Row = 3 Then
Nếu Target.Column = 13 Thì
If Target.Value = "1: Yes" Thì
Application.Columns ("N: O"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Application.Columns ("P: S"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("V: Z"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("X: Z"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("AB: AK"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("AL"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Application.Columns ("AM"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "2: Không" Sau đó
Application.Columns ("N"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("O: Z"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Application.Columns ("AB: AK"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("AL"). Chọn
Application.Selection.EntireColumn.Hidden = True
Application.Columns ("AM"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
ElseIf Target.Value = "" Sau đó
Application.Columns ("N: AN"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Cuối Nếu
Cuối Nếu
'If Target.Column = 16 And Target.Row = 3 Then
Nếu Target.Column = 16 Thì
Nếu Target.Value = "Cat" Thì
Application.Columns ("V: W"). Chọn
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Dog" Sau đó
Application.Columns ("V: W"). Chọn
Application.Selection.EntireColumn.Hidden = Sai
Cuối Nếu
Cuối Nếu
End Sub
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL