2016-08-22 5 views
-1

Я новичок в этом (и врач). Я хочу заполнить список vba из базы данных только определенными строками. Это то, что я получил. спасибо (заранее)Listbox заполняется специальными строками

Private Sub UserForm_Initialize() 

Hoja2.Activate 
ListBox1.ColumnCount = 5 
ListBox1.ColumnWidths = "70;90;90;90;70" 


ListBox1.AddItem "FIRST NAME" 
ListBox1.List(0, 1) = "LAST NAME" 
ListBox1.List(0, 2) = "LAST NAME 2" 
ListBox1.List(0, 3) = "BORN DATE" 
ListBox1.List(0, 4) = "AGE" 


Dim seguimiento As Integer 
Dim i As Integer 

seguimiento = Application.WorksheetFunction.CountA(Range("b:b")) 

For i = 1 To seguimiento 
    If Cells(i, 20) = "" Then 
    ListBox1.AddItem Cells(i, 3) 
    Else 
    End If 
Next i 

End Sub` 
+0

Так что это вопрос? –

+0

, с которым databse вы хотите подключиться? Пожалуйста, уточните вопрос – HA560

+0

youre right. я попробую. Я родной испанский оратор. База данных - это лист (hoja2), содержит данные как: имя, фамилия, возраст и т. Д .; по каждому столбцу; и я хочу, чтобы в списке отображались определенные строки, те, у которых есть пробел в столбце T, поэтому я могу выбрать один из них и изменить некоторые ячейки этой строки (пациент). –

ответ

0

это на самом деле трудно понять ListBox наполнения критерии из вашего вопроса

если вы хотите, чтобы заполнить ListBox с ячейками:

  • на строках столбца, «T» ячейка не пуста
  • сканирование строк от строки 2 до последней непустой строки в столбце «B»
  • получение значений из столбцов "C" корыта "G"

попробуйте следующий код:

Option Explicit 

Private Sub UserForm_Initialize() 
    Dim seguimiento As Long, i As Long 
    Dim Data() As Variant '<--| use an array to store data to eventually fill ListBox list 
    Dim cell As Range 

    With Me.ListBox1 
     .ColumnCount = 5 
     .ColumnWidths = "70;90;90;90;70" 
    End With 

    i = 1 
    With Hoja2 '<--| refer to your worksheet 
     With .Range("T1:T" & .Cells(.Rows.Count, "B").End(xlUp).Row).SpecialCells(xlCellTypeConstants) '<--| refer to non blank cells in its column "T" (i.e. with column index 20) from row 1 to last non blank one in column "B" 
      seguimiento = .Count '<--| count those non empty cells 
      ReDim Data(1 To seguimiento + 1, 1 To Me.ListBox1.ColumnCount) '<--| redim data array rows accordingly (while setting columns to 5) 

      'fill data array first row with "headers" 
      Data(1, 1) = "FIRST NAME" 
      Data(1, 2) = "LAST NAME" 
      Data(1, 3) = "LAST NAME 2" 
      Data(1, 4) = "BORN DATE" 
      Data(1, 5) = "AGE" 

      ' loop through referred non blank cells and fill subsequent data array rows from corresponding cells in columns "C" through "G" 
      For Each cell In .Cells 
       i = i + 1 
       With cell 
        Data(i, 1) = .Offset(, -17) '<--| this refers to a cell in the same row as the current cell and in column "C", being offseted 17 columns back from current cell 
        Data(i, 2) = .Offset(, -16) '<--| this refers to a cell in the same row as the current cell and in column "D", being offseted 16 columns back from current cell 
        Data(i, 3) = .Offset(, -15) ' etc... 
        Data(i, 4) = .Offset(, -14) ' etc... 
        Data(i, 5) = .Offset(, -13) ' etc... 
       End With 
      Next cell 
     End With 
    End With 

    ListBox1.List = Data '<---| finally, fill listbox list with data array 
End Sub 
+0

ничего себе. Спасибо. я действительно не получаю весь этот код, но это помогло мне. –

+0

Не совсем понятно, что вы имеете в виду, но это новая проблема, и вам лучше разместить новый вопрос с правильными деталями и кодом. – user3598756

+0

В приведенном выше примере, как я могу выбрать строку (имя) в списке и отредактировать ее ссылка на лист? Я объясню. Я подумал о выборе строки списка, затем выбрать элемент списка со списком и подтвердить щелчком по буклету, чтобы элемент со списком заполнил определенную ячейку на листе. @ user3598756 –