Saltar al contenido

Error  -2147352571 (80020005) al ejecutar formulario


aaquino

Recommended Posts

publicado

Buen día estimado grupo,

Estoy teniendo un problema que no logro encontrar solución.

La cuestión es que el archivo que estoy trabajando, me está dando un problema al cargar un formulario de búsqueda de información. Este form lo que hace es únicamente una búsqueda en una base de datos, en el cual hay un combobox, que se llena con "datos únicos" de la base de datos.

El código que uso para cargar el combobox es el siguiente:

Private Sub cbx_Cliente_Enter()
Dim Fila As Long, Final As Long
Dim Registro As Integer
Dim i As Long

For Fila = 1 To cbx_Cliente.ListCount
    cbx_Cliente.RemoveItem 0
Next Fila

Final = Hoja2.Range("A" & Rows.Count).End(xlUp).Row

With Hoja2
    For i = 2 To Final
        Registro = WorksheetFunction.CountIf(.Range(.Cells(1, 3), .Cells(i, 3)), .Cells(i, 3))
        If Registro = 1 Then
            Me.cbx_Cliente.AddItem .Cells(i, 3)
        End If
    Next i
End With

End Sub

Al ejecutar el llamado del formulario en la PC donde fue creado el archivo no da problema. El problema está al momento de ejecutarlo en otra PC, ya que marca el error  -2147352571 (80020005), y marca la siguiente línea en amarillo.

Me.cbx_Cliente.AddItem .Cells(i, 3)

Me podrían indicar dónde puede estar el error. Adjunto el archivo para que me puedan ayudar.InterAction - Ingreso de oportunidades.xlsmInterAction - Ingreso de oportunidades.xlsmInterAction - Ingreso de oportunidades.xlsm

InterAction - Ingreso de oportunidades.xlsm

publicado

Hola aaquino, no se que puede estar pasando en tu formulario pero si te puedo decir que lo he probado en dos equipos diferentes y funciona perfectamente, también lo he probado en una máquina virtual en un mac y  también funciona perfectamente no obstante seguiré investigando por si encuentro la solución. Un saludo

publicado

@JSDJSD te agradezco mucho tu ayuda. Quedo atento a tus comentarios, ya que el mismo archivo que he subido al foro, me está dando otro error, en otra PC que lo probé, y esta vez lo que está haciendo es que si carga el formulario, pero al presionar el boton "Aceptar", éste debería mostrar información en la hoja "Data", de acuerdo a la selección del usuario, y luego hacer salir del formulario, sin embargo, en la última PC que lo probé no muestra la información ni sale del formulario, es como si el botón no tuviera programación alguna.

Es bien raro, pero posiblemente sea algo mal programado, o no sé.... me tiene algo confundido esto.

Quedo atento a tus comentarios, y a los de cualquier otro usuario que me pueda ayudar.

publicado

Hola

El archivo puede ser el mismo, pero ¿la cantidad de datos también? El que has dejado aquí tiene un solo registro ¿el del dilema también? Otra cosa, en la PC que mencionas, di paso a paso qué es lo que haces para que dé el error. OJO, paso a paso. OJO, con lo del número de registros y ¿que Excel es?

Abraham Valencia

publicado

Gracias por tu ayuda @avalencia

Te comento, el archivo que he cargado aquí es el mismo que he usado de prueba en otras PC, con los mismos datos, a lo sumo se agregan 1 o 2 líneas solo para ver que el botón "Save" sí funcione.

La versión de Excel es Office 365, pero está instalado en la PC, o sea, NO usamos un navegador para usar Excel. 

El error en pantalla salta al dar clic en el botón de la hoja "Data" que dice "Find", al solo dar clic da el error. Este botón hace un llamado a un form, el cual no se inicializa, ya que detecta un error en ejecución

Como mencioné, hay otro error, y es que en algunas PC sí se inicializa el form, sin embargo el botón "Aceptar" no hace lo que debería. El proceso que corre este botón es, al seleccionar algo del listbox debería desplegar la información en la hoja "Data", si no se ha seleccionado algo en el listbox, debería enviar un mensaje donde indica que se debe seleccionar algo. 

Al fin, les comento, en conjunto con el de sistemas hemos detectado la causa del error, mas no así la solución.

El problema está en que en mi PC tengo configurado Office en "Español", y la mayoría de mis compañeros tienen configurado Office en "Inglés". Vi que en mis macros yo hago un llamado a las hojas, y las nombro tal como me aparecen a mí: "Hoja1" y "Hoja2"

Vi esto y pensé que la solución era fácil, y decidí cambiar el nombre en las propiedades de cada hoja al nombre "HojaData" y "HojaBD", respectivamente, y posterior a ello hacer los cambios respectivos en toda la programación, esto no funcionó.

Cambié, y ahora en lugar de hacer el llamado directo a las hojas, lo hago por medio de la función "Sheets("Data")" y "Sheets("BD"), respectivamente, y posterior a ello hacer los cambios respectivos en la programación, esto tampoco me funciona...

La verdad es que ya no sé qué hacer.... alguien me puede ayudar con esto. Gracias

publicado

Pues no, los nombres de los módulos de las hojas no tienen nada que ver. Esos nombres, por cierto, son creados (junto con los archivos) basados en el idioma del Excel desde el que se hicieron, pero dichos nombres de módulos se mantienen... como suena enredado, pues si yo creo un libro de una hoja, su módulo se llamará "Hoja1" y si no lo cambio ese nombre se mantendrá así se abra el archivo en Excel en ingles o alemán o lo que sea. Yo en mi PC tengo archivos creados en ingles cuyos módulos están en dicho idioma y hago referencia a ellos sin dilema. 

Prueba algo más simple, en donde tienes esto:

valor = Hoja1.Range("B" & i).AddressLocal

Cámbialo por esto:

valor = Hoja1.Range("B" & i).Address

Comentas

Abraham Valencia

publicado

Pues nada, todo bien. Ah, ojo, el archivo que enviaste tenía las macros con clave, pude desprotegerlo, pero para la próxima sugiero no protegerlo para que todos puedan intentar ayudar.

Volviendo al dilema, como te repito, no tengo problema alguno. Para estar seguros ¿el error lo da en TODAS las PC con Office en inglés o en alguna o algunas en particular? Si es todas ¿qué Office es y de cuántos bits? ¿Windows o Mac? Si es en una o algunas ¿qué características en especial tiene su Office? ¿todas tienen instalación completa del Office? ¿alguna del error es Office 365 de las versiones Hogas o esas? Etc. Ojo a esos detalles

Abraham Valencia

publicado

Que tal @avalencia

Te comento, todas las PC tienen Office 365 completo, son Windows. El error me da en todas las PC que están en inglés, ya que como les comenté anteriormente, hicimos pruebas con el de sistemas, él tenía el office en inglés y daba uno de los errores, por lo que le cambió el idioma a su office y todo le fue perfecto. De ahí fue que pensamos que el error estaba en que yo había programado en un office en español y que por eso no corre en una PC con office en inglés.

Creo que el error estará en la programación del evento "Enter" del combobox, ya que como les digo en algunas máquinas ahí es donde me dice que está el problema, pero no sé si es ahí o en otro lado.

Adjunto nuevamente el archivo sin contraseña, fue mi error no haberla quitado.

InterAction - Ingreso de oportunidades.xlsm

publicado

Hola nuevamente. Al menos en Excel 2019 (32 y 64 bits) y Excel 2013 no he podido reproducir el problema, pero no hay que tirar la toalla.

Veamos, yo insisto en que no es problema del idioma, y al no ser MAC ninguna máquina del error, descartamos el "clásico" dilema del VBA que tienen. ¿Entonces qué ocurre? Por lo que entiendo el tipo de Office 365 es el mismo para todas esas maquinas y al estar seguro que la instalación de todas es completa, pues "algo" se instalo en todas por igual (¿o se dejó de instalas?).

Anda a una de las PC del errror, abre el archivo, y para descartar que sea "algo" que no se instaló, verifica si en las referencias del VBA alguna está precedida de la palabra "Missing". Yo creo que no (al ser objeto "básicos" los que usas), pero mejor asegurar por si acaso.

Ahora mira los Complementos instalados y activados, así como los Complementos COM. Por favor, menciona aquí todos (por grupo). Creo que por ahí sí debe estar el dilema.

Comentas

Abraham Valencia

publicado

Saludos @aaquino, revisa el anexo en las PC que dices que tienes problemas

Yo creo que el problema son los objetos incrustados (los botones y la lista de abajo), yo desde hace años que trato de no usarlos ya que me han dado muchos problemas cuando hay cambios de versiones de Excel, los usos cuando es estrictamente necesario, del resto no

prueba a ver, yo los cambie por unas simples imagenes y le asigne una macro

InterAction - Ingreso de oportunidades.xlsm

publicado

Muchas gracias compañeros,

Haré las revisiones que me comentan, y también probaré con el archivo que me compartieron, y cualquier cosa les comento.

Solo les pido de favor que no cierren el tema, ya que actualmente no me encuentro en la oficina y regreso hasta el lunes, por lo que no podré hacer las pruebas sino hasta ese día.

publicado

Buen día compañeros, perdón, es que se me complicó un poco el tema... no andaba de vacas, jajaja, es que por mi trabajo me toca viajar un poco, y por lo mismo hasta hoy pude regresar a la oficina.

Hice pruebas en otras PC, con ambos archivos, haciendo los cambios que me sugirieron y revisando las librerías, pero el tema está en que en algunas el archivo funciona perfectamente, y en otras no.

Saber qué será, seguiré investigando y veré si logro solucionarlo, o sino, tendré que buscar otro método para la búsqueda.

Cualquier cosa les estaré informando.

Por el momento pueden cerrar el tema, ya que no es problema del archivo sino de las máquinas de la empresa.

Agradezco mucho su ayuda.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.