tạo giao diện cho 1 sheet bằng VBA

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi thanlong882, 5 Tháng một 2011.

  1. thanlong882

    thanlong882 New Member

    - Chào các Pro cho mình hỏi 1 chút được không?
    - Trong VBA có cách nào thiết kế các lệnh để nó tạo ra 1 giao diện theo ý mình muốn trên bảng tính Excel ko?
    Như : tạo tiêu đề, tạo 1 bảng theo ý mình với số cột, tiêu đề cột, định dạng trong bảng ( cũng giống như mình tạo bằng tay vậy)

    Mong mọi người cho ý kiến ??
     
  2. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    Bạn record lại macro thao tác tạo bằng tay là được code theo ý muốn.
     
  3. ndu96081631

    ndu96081631 Well-Known Member

    Record macro là 1 cách... Còn tôi sẽ giới thiệu bạn cách khác, đó là thiết kế sẳn giao diện và cho vào SpreadSheet Object, khi cần thì copy và paste vào bảng tính
    Xem file (code cực đơn giản)
     

    Các file đính kèm:

  4. viehoai

    viehoai GPE mỗi ngày

    Hay quá, xin Sư Phụ hướng dẫn cách chèn Bảng thiết kế sẵn ấy vào Form như file. Em cảm ơn
     
  5. ndu96081631

    ndu96081631 Well-Known Member

    Quá đơn giản:
    - Tạo 1 UserForm và chèn vào 1 SpreadSheet
    - Trên SpreadSheet này, bạn cứ vô tư gõ chữ, tô màu kẻ khung tùy thích (y chang như trên bảng tính)
    - Nếu bạn đang có sẳn giao diện ở 1 file nào đó, cứ việc copy và paste vào SpreadSheet
    - Khi cần thì cứ dùng code như tôi đã dùng trong file đấy thôi


    untitled.JPG
     
    Lần chỉnh sửa cuối: 5 Tháng một 2011
  6. viehoai

    viehoai GPE mỗi ngày

    Vấn đề em cần ở đây (cách chèn như thế nào)
     
  7. ndu96081631

    ndu96081631 Well-Known Member

    Cho dù là chèn từ SpreadSheet vào bảng tính hay ngược lại thì cũng cứ... copy paste bình thường thôi mà bạn!
    Cứ thí nghiệm đi, dễ vô cùng
    (hay bạn định hỏi cách chèn SpreadSheet Object vào UserForm nhỉ?)
     
    Lần chỉnh sửa cuối: 5 Tháng một 2011
  8. viehoai

    viehoai GPE mỗi ngày

    Dạ, ý em là "chèn SpreadSheet Object vào UserForm" em thử copy paste rồi mà không được, tìm trên Menu của VBE chẳng thấy có từ nào liên quan SpreadSheet Object. Xin Sư Phụ chỉ giúp, em cảm ơn.
     
  9. ndu96081631

    ndu96081631 Well-Known Member

    - Click phải vào Toolbox, chọn Additional Controls rồi tìm...
    - Nếu máy tính bị trục trặc thằng Additional Controls thì vào đây để giải quyết:
    http://www.giaiphapexcel.com/forum/...t-tình-trạng-Additional-Controls-mất-tác-dụng
     
  10. viehoai

    viehoai GPE mỗi ngày

  11. nmhung49

    nmhung49 Well-Known Member

    Sao em mở file lên bị lỗi vậy ta mặc dù em đã tạo additional control lâu lắm rồi. Anh Ndu xem giúp em với vào đoạn code cũng bị lỗi ngay chỗ speadsheet1 luôn. Thanks
     

    Các file đính kèm:

    • loi.jpg
      loi.jpg
      Kích thước:
      255.8 KB
      Đọc:
      287
  12. ndu96081631

    ndu96081631 Well-Known Member

    Không biết là bạn mở file của tôi hay tự mình làm lấy? Vì với file trên, tôi mở trên Excel 2007 đâu có vấn gì chứ
     
  13. nmhung49

    nmhung49 Well-Known Member

    Dạ em mở file của anh đó chứ em không có làm mà không được
     
  14. ndu96081631

    ndu96081631 Well-Known Member

    Thế thì tôi cũng hổng biết nguyên nhân tại sao (vì tôi không bị lỗi giống bạn)
    Ai đang dùng Excel 2007 vui lòng test giùm file của tôi với!
    Trường hợp của bạn chỉ có thể hướng dẩn cách kiểm tra thế này:
    - Alt + F11 vào xem code
    - Vào menu Tools\References và xem trong đó có mục nào báo MISSING gì gì đó không
     
  15. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Để chạy được ActiveX Spreadsheet thì bạn phải cài thêm thành phần "Microsoft Office Web Component xx" trong mục Office Share của bộ cài.
     
  16. ptlong04x1

    ptlong04x1 Well-Known Member

    Theo em, để tránh rắc rối với các Object bị missing, sao mình không tạo cái bảng đó bằng tay ở 1 sheet khác, rồi sau đó cũng dùng code copy vào, nếu có chỉnh sửa gì hay dùng công thức thì thao tác ngay trên sheet cũng đơn giản hơn là thao tác trên Form với SpreadSheet. -+*/-+*/-+*/
     
  17. ndu96081631

    ndu96081631 Well-Known Member

    Thì tùy ý mà... chẳng qua tôi chỉ giới thiệu 1 cách mà tôi cho là ít người biết nhằm tham khảo thôi
    Thật ra thao tác trên SpreadSheet Object giống đến 90% so với với thao tác trên sheet đấy
     
  18. thanlong882

    thanlong882 New Member

    Xin cám ơn mọi người rất nhiều !
    Mọi người cho mình hỏi 1 vấn đề nữa đó là khi mình tạo lệnh VBA để copy toàn bộ sheet 1 trong excel chẳng hạn vậy thì làm thế nào để đặt tên sheet mới theo ý mình
    Ví dụ : sheet 1 khi chon lệnh copy bằng VBA sẽ tạo ra 1 sheet là : sheet 11, khi chọn lệnh lần 2 ...n thì tên sheet lần lượt là sheet 12...n và đc sắp xếp theo thứ tự đó
    (Vì mình thấy trong excel nếu chọn lệnh copy nhu vây sẽ tạo ra 1 sheet là sheet 12 chứ không phải sheet 11)
    Mong mọi người giúp đỡ !
     
  19. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    Có cách nào lấy luôn định dạng trong SpreadSheet (Độ rộng các cột và dòng) không Thầy.
     
  20. ndu96081631

    ndu96081631 Well-Known Member

    Chắc phải For... Next quá Dom ơi! (vì với SpreadSheet, ta PasteSpecial xlPasteColumnWidths nó báo lỗi ---> Chắc không hổ trợ)
    Đại khái vầy:
    PHP:
    For 1 To Sheet1.UsedRange.Columns.Count
      Sheet1
    .UsedRange.Columns(i).ColumnWidth = .Spreadsheet1.Columns(i).ColumnWidth
    Next
     

Chia sẻ trang này