Código:
Algunas variables que no aparecen declaradas en el código es porque son publicas, están declaradas al principio para poder acceder desde otras funciones o ventanas.Dim archivos() As String Dim i As Long, flag As String flag = cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNHideReadOnly With CommonDialog1 .FileName = "" .MaxFileSize = 32000 .FLAGS = flag .ShowOpen End With archivos = Split(CommonDialog1.FileName, Chr(0)) b = 0 numero_archivos = UBound(archivos) For i = 0 To UBound(archivos) arraycant(b) = archivos(i) b = b + 1 Next i Erase archivos If numero_archivos < 1 Then Else ruta = arraycant(0) + "\" + arraycant(1) Image1.Picture = LoadPicture(ruta) contador_imagen = contador_imagen + 1 End If
La variable b quizas no tenga sentido a simple vista, pero me sirve para otra función.
arraycant(0) almacena la ruta de la carpeta y las siguientes posiciones del array, por ejemplo arraycant(1), arraycant(2)... el nombre de las imágenes.
Como digo, cuando abro 2 o más archivos, no hay problemas. Pero cuando abro solo uno, no carga la imagen. Depurando, me he dado cuenta de que cuando abro un solo archivo, la variable "numero_archivos" vale 0, mientras que si abro dos archivos, vale 2. No lo comprendo, cuando abro uno debería valer 1.
No digo más, haber si alguno/a logra averiguar el error.
Por cierto, siento si el código está bastante guarreado, llevo muchos años sin programar y uno pierde las buenas costumbres. Para lo que lo necesito, me conformo con que funcione

Otro por cierto, si sabéis como puedo hacer en este mismo código para que al abrir el commondialog muestre solo archivos gif, jpg y bmp, me vendría bien, pero tener en cuenta que deben mostrarse los 3 a la vez, es decir, si la carpeta contiene un archivo de cada clase, deberían mostrarse los 3 al mismo tiempo, no mostrarse primero el gif, después al cambiar el filtro mostrarse el bmp... eso no me sirve de nada, lo que necesito es que se vean los 3 tipos a la vez y el resto de ficheros no.
Saludos y gracias de antemano.