Llenado de un array con inputbox

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
marcosdavid
Mensajes: 4
Registrado: Vie Oct 17, 2014 4:11 am

Llenado de un array con inputbox

Mensaje por marcosdavid »

La siguiente macro esta en el libro "Aprendiendo Aoo Basic" de mauricio, pero he decidido mejorar la macro, haciendo que la matriz array sea llenada con un inputbox, pero no se como hacerlo, tambien lo he intentado llenando con un FOR ... NEXT y no me funciona como se ve en el siguiente ejemplo.

Código: Seleccionar todo

Option Explicit
Sub Sumando2()
Dim mDatos() As variant
Dim iSuma As Integer
Dim co1 as integer
Dim txt as variant

	
	for co1 = 10 to 90 step 10
	txt = txt & co1 & ","
	next
	msgbox txt
	'Llenamos la matriz con la funcion Array 'mDatos() = Array(10,20,30,40,50,60,70,80,90)
	mDatos() = Array(txt)
	msgbox txt
	'Intentamos sumar la matriz
	iSuma = SumaMatriz( mDatos() )

	MsgBox Str( iSuma )

End Sub

Function SumaMatriz ( Datos() As variant ) As Integer
Dim co1 As Integer

	For co1 = LBound( Datos() ) To UBound( Datos() )
		SumaMatriz = SumaMatriz + Datos( co1 )
	Next

End Function
Última edición por marcosdavid el Mar Nov 15, 2016 6:51 am, editado 3 veces en total.
Libre Office 5.1.4.2
Linux MInt 18
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Llenado de un array con inputbox

Mensaje por FJCC-ES »

InputBox devuelve una cadena de texto. Es necesario partir la cadena con la function split().

Código: Seleccionar todo

Sub Sumando2()
Dim mDatos(8) As Integer
Dim iSuma As Integer
Dim col as integer
Dim txt as variant
Dim i as integer
' usando for-next
i = 0
for col = 10 to 90 step 10
   mDatos(i) = col
   i = i + 1
next

iSuma = SumaMatriz( mDatos() )

MsgBox Str( iSuma )

 'usando inputbox   
txt = inputbox("Datos: por ej. 10; 20; 30")
mDatos = split(txt, ";")
iSuma = SumaMatriz( mDatos() )

MsgBox Str( iSuma )

End Sub

Function SumaMatriz ( Datos() As variant ) As Integer
Dim co1 As Integer

For co1 = LBound( Datos() ) To UBound( Datos() )
    SumaMatriz = SumaMatriz + Datos( co1 )
Next

End Function
Responder