2009-05-21 27 views
8

Bảng tính/sổ làm việc ẩn có một số hạn chế đối với những gì có thể được thực hiện trong mã VBA, như hầu hết các câu lệnh SelectSelection và bất kỳ thứ gì đến từ ActiveSheet, nhưng dường như tôi không tìm thấy danh sách nào.Có thể thực hiện tác vụ Excel VBA nào trên các trang tính hoặc sổ làm việc ẩn?

Google, tài liệu được cài sẵn trong hệ thống trợ giúp và trang web của MSDN đều không thành công với tôi. ai đó có thể chỉ cho tôi phương hướng đúng không?

Edit: Các bảng tính được mở ra với

Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False) 

và sau đó ẩn với

WB_Master.Windows(1).Visible = False 
+0

Bạn có thể giải thích cách bạn mở sổ làm việc và làm cho bảng tính ẩn đi không? –

Trả lời

13

Từ Visual Basic for Applications giúp đỡ:

Khi một đối tượng là ẩn, nó bị xóa khỏi màn hình và thuộc tính Hiển thị của nó được đặt thành Sai. Các điều khiển của đối tượng ẩn không thể truy cập được đối với người dùng, nhưng chúng có sẵn theo chương trình cho ứng dụng đang chạy, với các quy trình khác có thể giao tiếp với ứng dụng thông qua Tự động hóa và trong Windows, với các sự kiện điều khiển Timer.

Không có nhiều trợ giúp ở đó tôi sợ và tôi không thể tìm thấy nhiều thứ khác thông qua Google.

Như bạn đã nói, phương pháp Chọn và thuộc tính lựa chọn không hoạt động trên Trang tính ẩn, chúng sẽ hoạt động trên một Sổ làm việc ẩn. Tuy nhiên, nói chung, không phải lúc nào cũng hiệu quả trong việc chọn các phạm vi trong bảng tính, bạn nên làm việc với thuộc tính Range (hoạt động trên một trang tính ẩn).

EDIT:

Đoạn mã dưới đây sẽ thay đổi màu sắc của A1: A8 để Cyan ngay cả khi Worksheet không nhìn thấy được:

Dim book2 As Workbook 
Set book2 = Workbooks.Open("C:\Book2.xls") 

book2.Worksheets("Sheet1").Visible = False 
book2.Windows(1).Visible = False 

With book2.Worksheets("Sheet1").Range("A1:E8").Interior 
    .ColorIndex = 8 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
End With 

book2.Windows(1).Visible = True 
book2.Worksheets("Sheet1").Visible = True 
+2

Tôi thường tránh xa Chọn trừ khi hoàn toàn cần thiết, nhưng vấn đề cụ thể của tôi ở đây đang cố gắng áp dụng màu nền cho các ô trên sổ làm việc bị ẩn và không hoạt động trong sổ làm việc. Mặc dù tham chiếu đến sổ làm việc trực tiếp, nó chỉ hoạt động nếu sổ làm việc có thể nhìn thấy và kích hoạt. –

+1

Sổ làm việc không hiển thị có thể được truy cập bằng chức năng WorkSheet. Chỉ cần chỉ định tên trang tính. Patrick đã cung cấp một ví dụ lên hàng đầu. – jgallant

9

Bạn có thể khắc phục bất kỳ giới hạn trên tờ ẩn bởi khi hiện chúng mà không có người dùng nhận ra nó, làm bất cứ điều gì bạn cần, và sau đó ẩn chúng một lần nữa.

Ví dụ này giả định Sheet2 bị ẩn.

Sub DoStuffToAHiddenSheetWithoutTheUserKnowingIt() 
    'turns off screen repainting so the user can't see what you're doing 
    'incidentally, this dramatically speeds up processing of your code 
    Application.ScreenUpdating = False 
    'note that if you're stepping through your code, screenupdating will be true anyway 

    'unhide the sheet you want to work with 
    Sheets("sheet2").Visible = True 
     'do whatever you want here, including selecting cells if you want 
     'Scagnelli is right though, only select cells if you have to 

    'when you're finished, hide the sheet again 
    Sheets("sheet2").Visible = False 

    'make sure you turn screenupdating back on, or Excel will be useless 
    Application.ScreenUpdating = True 
End Sub 

Một lừa hữu ích nếu bạn muốn tờ của bạn ẩn là để đặt chúng vào xlVeryHidden, mà sẽ ngăn chặn chúng khỏi bị liệt kê cho người dùng nếu họ cố gắng thôi ẩn chúng thông qua trình đơn hoặc ribbon.

Các vấn đề liên quan