Din orizontal in vertical

Tibi_Tiby
Mesaje: 34
Membru din: Lun Mar 09, 2020 4:12 pm

Din orizontal in vertical

Mesaj de Tibi_Tiby » Lun Mar 09, 2020 4:45 pm

Buna ziua,

V-as ruga sa ma ajutati cu un cod VBA care sa preia datele din 2 celule (aici datele sunt dispuse separate prin virgula) si sa le puna intr-un Listbox dintr-un userform pe 2 coloane.

In A1 avem a, b, c, d, e, f
in B1 avem 10, 25, 100, 45, 36, 18

in Listbox1 as dori sa arate asa :
a____10
b____25
c____100
d____45
e____36
f____18

evident fara liniutele dintre coloane.
Multumesc anticipat.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Din orizontal in vertical

Mesaj de TudyBTH » Lun Mar 09, 2020 7:58 pm

Cod: Selectaţi tot

Private Sub UserForm_Activate()
    Dim cell1 As Range, cell2 As Range
    Dim n1 As Integer, n2 As Integer, nMax As Integer, i As Integer
    Dim s1() As String, s2() As String
    
    '===================================================
    'adaptati adresele si denumirea listbox-ului (ListBox1)
    Set cell1 = ThisWorkbook.Sheets("Sheet2").Range("A1")
    Set cell2 = ThisWorkbook.Sheets("Sheet2").Range("B1")
    '===================================================
    
    s1 = Split(cell1.Value, ",")
    s2 = Split(cell2.Value, ",")
    
    n1 = UBound(s1)
    n2 = UBound(s2)
    nMax = n1: If n2 > nMax Then nMax = n2
    With ListBox1
        For i = 0 To nMax
            If i <= n1 Then
                .AddItem Trim(s1(i))
            Else
                .AddItem ""
            End If
            If i <= n2 Then .List(.ListCount - 1, 1) = Trim(s2(i))
        Next i
    End With
End Sub
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: Din orizontal in vertical

Mesaj de Indigo-ONE » Mar Mar 10, 2020 9:49 am

O alta varianta...

In Userform

Cod: Selectaţi tot

Private Sub UserForm_Initialize()
  ListBox1.ColumnCount = 2
  ListBox1.List = Evaluate("TRANSPOSE({""" & Replace([A1] & """;""" & [B1], ", ", """,""") & """})")
End Sub
Evident inlocuieste ListBox1 cu denumirea data ListBox-ului


Sau o varianta cu redimensionare..

Cod: Selectaţi tot

Private Sub UserForm_Initialize()
Dim Ka, Kb, K As Long
Ka = Split([A1], ", ")
Kb = Split([B1], ", ")
ReDim Kr(1 To UBound(Ka) + 1, 1 To 2)
For K = 0 To UBound(Ka)
    Kr(K + 1, 1) = Ka(K)
    Kr(K + 1, 2) = Kb(K)
Next K
With ListBox1
    .ColumnCount = 2
    .List = Kr
End With
End Sub


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

Tibi_Tiby
Mesaje: 34
Membru din: Lun Mar 09, 2020 4:12 pm

Re: Din orizontal in vertical

Mesaj de Tibi_Tiby » Mar Mar 10, 2020 6:45 pm

Buna seara,

Nu m-am asteptat sa-mi raspunda cineva, atat de repede. Va multumesc din suflet.
Am verificat toate solutiile oferite. Extraordinar in cate moduri se poate rezolva daca stii VBA.
Cata diferenta intre coduri, si fac acelasi lucru. Cum e posibil?

Prima varianta a dl. Indigo-ONE este ceva deosebit pentru mine (si pentru colegi :D).
Ca sa nu deranjam ceva aici pe forum l-as ruga pe dl. Indigo-ONE -daca doreste- sa imi explice printr-un mail privat, cum functioneaza codurile si care este diferenta dintre ele.
Va multumesc.

Scrie răspuns

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”