2012-11-23 29 views
7

Tôi có tệp ở định dạng .csv và từ các cột A-S, nó có một số bản ghi như bảng. Chương trình hoàn chỉnh của tôi sẽ chèn/xóa/xóa/thêm một số hàng, cột và chỉnh sửa giá trị ô, v.v. Tôi quản lý để mã tất cả các hoạt động mà tôi cần, bây giờ tôi đang cố gắng tích hợp nó với một gui.Cách hiển thị một phần của Excel trên biểu mẫu VBA

Điều tôi muốn là hiển thị các ô từ Ax1 đến cột cuối cùng có bản ghi trên biểu mẫu người dùng VBA. Làm thế nào tôi có thể làm điều đó?

* ps: một lần nữa, định dạng tập tin của tôi là .csv và tôi đang sử dụng Excel 2007

Trả lời

17

Bạn có thể sử dụng một cột Listbox đa để hiển thị dữ liệu.

LOGIC

  1. nhập văn bản (CSV) trong bảng tạm
  2. Chứng minh rằng dữ liệu trong Listbox multicolumn
  3. Xóa bảng tạm thời trong trường hợp UserForm dỡ bỏ

Nhập tệp văn bản (Csv) vào trang tính tạm thời

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 
    Dim wsTemp As Worksheet 

    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 

    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 
End Sub 

Và bây giờ bạn có thể hiển thị dữ liệu đó trong hộp danh sách đa hướng.

Hiện dữ liệu đó trong Listbox multicolumn

Tôi lấy một ví dụ về 3 Cột và lên đến kéo 20. Thay đổi có thể áp dụng

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 
    Dim wsTemp As Worksheet 

    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 


    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 

    With ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "50;50;50" 
     .RowSource = wsTemp.Range("A1:C20").Address 
    End With 
End Sub 

SCREENSHOT

enter image description here

Xóa trang tính tạm thời trong sự kiện tải xuống Userform

Để xóa bảng tạm thời, hãy khai báo wsTemp ở đầu mã để bạn có thể truy cập vào sự kiện UserForm_QueryClose. Xem ví dụ hoàn chỉnh này

Option Explicit 

Dim wsTemp As Worksheet 

Private Sub CommandButton1_Click() 
    Dim wb As Workbook, wbTemp As Workbook 


    Set wb = ThisWorkbook 
    Set wbTemp = Workbooks.Open("C:\MyCsv.Csv") 

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count) 


    Set wsTemp = ActiveSheet 

    wbTemp.Close SaveChanges:=False 

    With ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "50;50;50" 
     .RowSource = wsTemp.Range("A1:C20").Address 
    End With 
End Sub 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Application.DisplayAlerts = False 
    wsTemp.Delete 
    Application.DisplayAlerts = True 
End Sub 

HTH

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