Tạo nhiều tab mới từ cấu trúc sổ làm việc Excel cơ bản dựa trên dữ liệu đầu vào của người dùng (VBScript?)
Trước tiên, tôi không nhất thiết phải tìm cách thực hiện điều này, mà là liệu nó có khả thi không. Tuy nhiên, tôi khá chắc chắn rằng đây là chức năng vượt xa chức năng excel thông thường và chuyển sang viết kịch bản. Tôi nghĩ cách tốt nhất để giải quyết vấn đề này là chỉ cần liệt kê những gì tôi cần nó thực hiện.
- Ít nhất tôi cần có một số loại hộp bật lên hoặc tiện ích nhập liệu khác khi tệp được mở lần đầu. Điều này sẽ đặt ra câu hỏi về số lượng tab bạn cần định dạng như "x" và số lượng tab được định dạng như "y". (sẽ có hai định dạng tab khác nhau). Nó cũng cần không thay đổi cấu trúc sau khi được tạo.
- Một đề xuất phức tạp hơn là xây dựng một ứng dụng web riêng biệt có thể đẩy thông tin đó vào bảng tính excel và về cơ bản là điền các tab tương ứng vào bảng tính excel. Một ví dụ là, ứng dụng web hiện lên, hỏi "có bao nhiêu x?" Tôi nhập "3", rồi "có bao nhiêu Y" tôi nhập "2", rồi một tệp excel được tạo ra để tôi mở, và có 3 tab được định dạng như X và 2 tab được định dạng như y trong bảng tính. Với kiến thức hạn hẹp của mình, tôi cho rằng điều này là không thể, nhưng nghĩ rằng tôi sẽ hỏi bằng cách nào đó.
- Các tab này, x và y, trông giống hệt nhau về mặt cấu trúc, nhưng có tên tuần tự duy nhất. Nói cách khác, nếu tôi gọi 3 tab X và 2 tab Y, các tab x của tôi sẽ không được định dạng như các tab y, nhưng tất cả các tab x của tôi sẽ trông giống nhau, ngoại trừ việc đặt tên theo thứ tự khác nhau như "X1", "X2" và "X3".
- Ngoài ra, các tab này sẽ không để trống, nhưng mỗi tab sẽ trông giống như một bảng cân đối kế toán. Tôi biết rất ít về lập trình, nhưng tôi cho rằng giải pháp tốt nhất (và có thể là duy nhất) là sao chép các tab "cơ sở". Nghĩa là, ban đầu chúng ta bao gồm trong sổ làm việc, một tab X và một tab Y, và mã hóa chỉ cần sao chép các tab này và đổi tên chúng dựa trên đầu vào của người dùng. Có phải như vậy không? Có thể thực hiện được không?
- Cuối cùng, giả sử kịch bản đầu tiên với hộp bật lên trong sổ làm việc và điều này có thể quá phức tạp, nhưng nếu một người điền một số dữ liệu vào các tab hiện có của họ, chẳng hạn như nếu họ điền vào 3 tab "X" và 2 tab "Y" bằng dữ liệu do người dùng nhập, nhưng sau đó cần thêm một tab "X" khác trong tương lai, có thể là sau khi họ đã đóng và lưu, thì sổ làm việc sẽ cần có khả năng thêm các tab mà không làm gián đoạn các tab đã tồn tại và có dữ liệu đầu vào trong đó.
Như tôi đã nói, tôi không thực sự tìm cách để thực hiện điều này ngay bây giờ, tôi chỉ khám phá xem liệu có khả thi không và bất kỳ ý kiến đóng góp nào từ một người giỏi viết kịch bản đều sẽ được đánh giá cao.
Trả lời:
Điều này giả định rằng sổ làm việc ban đầu của bạn có hai trang tính, được đặt tên là "X" và "Y"
Các trang tính ban đầu phải được định dạng và điền thông tin đúng cách
Macro sẽ hỏi bạn cần bao nhiêu trang tính X và Y mới và tạo các bản sao:
Phụ MultiCopy()
n = Application.InputBox(prompt:="Nhập số trang tính X mới: ", Type:=1)
Đối với i = 1 To n
Sheets("X").Sao chép sau:=Sheets(1)
ActiveSheet.Name = "X" & i
Kế tiếp
n = Application.InputBox(prompt:="Nhập số trang tính Y mới: ", Type:=1)
Đối với i = 1 To n
Sheets("Y").Sao chép sau:=Sheets(1)
ActiveSheet.Name = "Y" & tôi
Kế tiếp
Kết thúc Sub
Macro rất dễ cài đặt và sử dụng:
1. ALT-F11 mở cửa sổ VBE
2. ALT-I
ALT-M mở một module mới
3. dán nội dung vào và đóng cửa sổ VBE
Nếu bạn lưu bảng tính, macro cũng sẽ được lưu cùng với bảng tính đó.
Để xóa macro:
1. mở cửa sổ VBE như trên
2. xóa mã ra
3. đóng cửa sổ VBE
Để sử dụng macro từ Excel:
1. ALT-F8
2. Chọn macro
3. Chạm vào CHẠY
Để tìm hiểu thêm về macro nói chung, hãy xem:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
Comments
Post a Comment