Foros del Web » Soporte técnico » Ofimática »

El subíndice está fuera del intervalo (Error 9) VBA para Excel

Estas en el tema de El subíndice está fuera del intervalo (Error 9) VBA para Excel en el foro de Ofimática en Foros del Web. Espero me puedan ayudar. Junto a un amigo hemos creado un rutina en un archivo excel que a partir de otros archivos excel se generan ...
  #1 (permalink)  
Antiguo 02/12/2008, 21:39
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
El subíndice está fuera del intervalo (Error 9) VBA para Excel

Espero me puedan ayudar. Junto a un amigo hemos creado un rutina en un archivo excel que a partir de otros archivos excel se generan datos estadisticos. El problema es que al correr la macro da el error " Se ha producido el error '9' en tiempo de ejecución: Subíndice fuera de Intervalo" y no encontramos la forma de solucionarlo. En la ayuda de VBA de indica que el error podrìa estar en la matríz y en otros puntos. Les dejo parte del código en donde se produce el error. espero sinceramente me puedan ayudare. Muchas Gracias,


Public Sub contarTablaTotal(tablaTotal As TablaSimple, tablas() As TablaSimple)
Dim i As Integer: Dim j As Integer: Dim k As Long

tablaTotal.analista = "TOTAL"
tablaTotal.rango = tablas(1).rango

Dim arreglo(1 To 500) As String
For i = LBound(tablas) + 1 To UBound(tablas)
For j = 1 To 500
arreglo(j) = tablas(i).datos(j).sucursal
Next j
k = obtenerIndice(arreglo, "")
tablaTotal.datos(i).sucursal = tablas(i).analista
tablaTotal.datos(i).num = tablas(i).datos(k - 1).num 'AQUI SE PRODUCE EL ERROR Y SE DETIENE LA MACRO
Next i

tablaTotal.datos(UBound(tablas) + 1).sucursal = "Total"
For i = LBound(tablas) + 1 To UBound(tablas)
tablaTotal.datos(UBound(tablas) + 1).num = tablaTotal.datos(UBound(tablas) + 1).num + tablaTotal.datos(i).num
Next i

For i = LBound(tablas) + 1 To UBound(tablas)
If tablaTotal.datos(UBound(tablas) + 1).num = 0 Then
tablaTotal.datos(i).porc = 0
Else
tablaTotal.datos(i).porc = tablaTotal.datos(i).num / tablaTotal.datos(UBound(tablas) + 1).num
End If
Next i

For i = LBound(tablas) + 1 To UBound(tablas)
tablaTotal.datos(UBound(tablas) + 1).porc = tablaTotal.datos(UBound(tablas) + 1).porc + tablaTotal.datos(i).porc
Next i

End Sub
  #2 (permalink)  
Antiguo 03/12/2008, 10:45
 
Fecha de Ingreso: septiembre-2007
Ubicación: Badajoz City
Mensajes: 126
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: El subíndice está fuera del intervalo (Error 9) VBA para Excel

creo que el error te lo da porque en la matriz datos el índice (k-1) no existe. eso es porque si la matriz empieza en 0 y le restas 1 el indice -1 de la matriz no existe o si empieza en 1 el índice 0 no existe. Tienes que revisar tu algoritmo para no restar de tal forma que te salgas de la matriz
  #3 (permalink)  
Antiguo 04/12/2008, 18:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: El subíndice está fuera del intervalo (Error 9) VBA para Excel

Yenay, creo que tienes razón, si el indice de la matriz declarada es "Dim k As Long" no puedo utilizar (k-1). Voy hacer la corrección y les cuento como me fue. Muchas gracias por la respuesta y vuestra atención. Saludos,

  #4 (permalink)  
Antiguo 31/01/2011, 07:13
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: El subíndice está fuera del intervalo (Error 9) VBA para Excel

Hola Buenas Noches,
Soy bastante novata con las macros desde Visual Basic en Excel y recibI este mensaje de error (Se ha producido el erro '9' en tiempo de ejecucion.Subindice fuera del intervalo) justamente en la secciOn ActiveSheet. Move
Espero q me puedan ayudar. De antemano muchIsimas gracias por su tiempo y atenciOn!

Adjunto el cOdigo:

Sub ImportarArchivoD()
'
' ImportarArchivoD Macro
'
' Acceso directo: CTRL+d
miArchivo = Application.GetOpenFilename("Archivos texto,*.txt")
Workbooks.OpenText _
Filename:=miArchivo, _
Origin:=xlWindows, _
StartRow:=4, _
DataType:=xlDelimited, _
FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
Array(6, 1), Array(7, 1)), _
TrailingMinusNumbers:=True
ActiveSheet.Move _
Before:=Workbooks("Capitulo2").Sheets(1)
Range("A2").Select
Selection.EntireRow.Delete
Range("A1").Select
End Sub
  #5 (permalink)  
Antiguo 31/01/2011, 14:36
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo El subíndice está fuera del intervalo (Error 9) VBA para Excel

Lo más probable (ya que no brindas mucha más información) es que no sea

Workbooks("Capitulo2")

sino alguna de las siguientes:

Workbooks("Capitulo2.xls")
Workbooks("Capítulo2.xls")
Workbooks("Capitulo2.xlsm")
Workbooks("Capítulo2.xlsm")

De todos modos y si la macro que estás corriendo reside -presisamente- en ese libro, entonces será mejor que sustituyas:

Before:=Workbooks("Capitulo2").Sheets(1)

por

Before:=ThisWorkbook.Sheets(1)

Saludos, Cacho.
  #6 (permalink)  
Antiguo 01/02/2011, 06:36
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: El subíndice está fuera del intervalo (Error 9) VBA para Excel

Segun he entendido al leer las normas, no se puede REVIVIR MUERTOS y este tiene mas de 2 años de muerto
¿Que me dice el moderador?

Si puedes y debes, abrir un nuevo tema para tus dudas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:05.