2012-11-23 26 views
7

Mam plik w formacie .csv i z kolumn A-S, ma kilka rekordów, takich jak tabela. Mój kompletny program wstawi/usunie/usunie/doda kilka wierszy, kolumn i edytuje wartości komórek itp. Udało mi się zakodować wszystkie operacje, które potrzebuję, teraz próbuję zintegrować go z gui.Jak wyświetlić część programu Excel na formularzu VBA

Chcę wyświetlić komórki od Ax1 do ostatniej kolumny, która ma zapis na formularzu użytkownika VBA. Jak mogę to zrobić?

* PS: jeszcze raz, format mojego pliku jest .csv i używam Excel 2007

Odpowiedz

17

Można użyć wielu kolumn pola listy, aby zobaczyć dane.

LOGIC

  1. Importuj plik tekstu (CSV) w arkuszu temp
  2. Pokaż, że dane w wielokolumnowym Listbox
  3. Usuń arkusz temp w przypadku UserForm wyładowania

Zaimportuj plik tekstowy (CSV) w arkuszu tymczasowym

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 

Teraz można wyświetlać te dane w wielokolumnowym polu listy.

Pokaż, że dane w wielokolumnowym Listbox

Biorę przykład 3 kolumny i aż do holowania 20. zmianę w obowiązującym

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

Usuń arkusz temp w przypadku UserForm wyładowania

aby usunąć arkusz temp, deklarują wsTemp w górnej części kodu, dzięki czemu można uzyskać dostęp, że w przypadku UserForm_QueryClose. Zobacz ten kompletny przykład

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

Powiązane problemy