Listbox omzetten naar array

Status
Niet open voor verdere reacties.

ColdDeath

Gebruiker
Lid geworden
7 nov 2013
Berichten
63
Goedendag,

Ik heb een listbox gevuld met bestanden van een map:

Code:
Public aantal As String
Dim c00 As String
c00 = "X:\PROJECTEN\A1-014\04 - SOLIDWORKS\*.SLDPRT"
ListBox2.List = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & c00 & """ /b/o").stdout.readall, vbCrLf), "")
aantal=ListBox2.ListCount

Ik wil de lijst vertalen/omzetten/plaatsen in een array:

Code:
Dim MyArray() As Variant
ReDim MyArray(aantal)
MyArray=ListBox1

Ik krijg dan een foutmelding.

Wat doe ik verkeerd?


Met vriendelijke groeten,
Willie Roelofs
 
Dag ColdDeath !

In de eerste code is er sprake van ListBox2, in de tweede code is er sprake van ListBox1. Aan je vraagstelling te zien, vermoed ik dat het over dezelfde listbox gaat.

In dat geval begrijp ik de vraag niet goed. Eerst vul je de listbox aan de hand van een array, dan wil je een array creëren aan de hand van die listbox. Dus ik zou vermoeden:
Code:
Dim c00 As String
Dim MyArray
c00 = "X:\PROJECTEN\A1-014\04 - SOLIDWORKS\*.SLDPRT"
MyArray = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & c00 & """ /b/o").stdout.readall, vbCrLf), "")
ListBox1.List = MyArray

Opmerking: Ook de Filter()-functie lijkt mij overbodig.

Grtz,
MDN111.
 
Laatst bewerkt:
Andersom gaat het dan zo:
Code:
For i = 0 To ListBox1.ListCount - 1
    ReDim Preserve myArray(i)
    myArray(i) = ListBox1.List(i)
Next i
 
@edmoor

Gelukkig kan dat simpeler.

@cold

Het verstandig je eerst eens in de basisbeginselen van VBA te bekwamen; daarna verloopt communicatie daarover een stuk soepeler. Uit je code blijkt dat je maar wat doet en geen idee hebt waarmee je bezig bent. VBA is gewoon een taal met een woordenschat, een grammatica, een syntaxis etc. Begin daar eerst mee voordat je je meteen op het producren van 'gedichten' in die taal stort.
 
Ik denk dat het gelukt is:

Code:
Dim swApp As Object
Public aantal As String

Sub main()
Set swApp = Application.SldWorks

Dim c00 As String
Dim MyArray() As String
Dim i As Long, j As Long

c00 = "X:\PROJECTEN\A1-014\04 - SOLIDWORKS\*.sldprt"
i=0
j=0

MyArray = Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & c00 & """ /b/o").stdout.readall, vbCrLf)

Debug.Print
For i = LBound(MyArray) To UBound(MyArray)
      Debug.Print Left(MyArray(i), Len(MyArray(i)) - 7)
Next i

End Sub

Alles doet het, ik krijg een debug.print van mijn array. Maar bij:

Code:
Debug.Print Left(MyArray(i), Len(MyArray(i)) - 7)

Run-time error '5':

Invalid procedure or argument.
 
@snb

Ik had geen idee dat een macro schrijven zo complex was. Ik ga het de komende tijd ook niet meer doen. Maar ik heb deze macro nodig.
 
Nogmaals dag ColdDeath !

Vermoedelijk bevat een (of meerdere) array-elementen een string van minder dan 7 tekens.

Grtz,
MDN111.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan