¿Cómo corregir bloqueo de celda y de desplazamiento en Excel?

Me pasa lo siguiente:

Cuando ejecuto una macro para ir de una hoja a otra, las celdas de la hoja destino se bloquean y no puedo escribir nada y tampoco puedo utilizar las teclas de desplazamiento.

Estos bloqueos no están programados, por que solicito su ayuda para corregir lo anterior.

Respuesta
1

[Hola

¿De casualidad usas SendKeys? En todo caos, si compartes la macro quizá podamos ver en dónde radica el problema.

Hola muy buenas noches, no uso SendKeys, gracias por la atención, esta es la macro, cuando doy click para seleccionar el valor y llenar las celdas referentes a dicha selección, se muestran los datos, sin embargo se bloquean y no puedo editar nada, para desbloquear las celdas tengo que cambiar de hoja y volver nuevamente para corregir el problema. 

Private Sub ComboBox1_Change()
'Por Dante Amor
Dim dato As Variant, fila As Variant
Dim i As Long, j As Long, k As Long, n As Long
Dim a As Variant, ky As Variant, b As Variant
Dim dic As Object
Application.ScreenUpdating = False
If cargando = True Then Exit Sub

Set sh1 = Sheets("DATA")
Set dic = CreateObject("Scripting.Dictionary")

cargando = True
dato = ComboBox1.Value
ComboBox1.Clear
Range("H9, A11, I11, Q11").Value = ""
'
a = sh1.Range("A5:Z" & sh1.Range("A" & Rows.Count).End(3).Row).Value
ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
For i = 1 To UBound(a, 1)
If a(i, 1) <> "" Then
If Not dic.exists(a(i, 1)) Then
'k = k + 1
dic(a(i, 1)) = i
Else
dic(a(i, 1)) = dic(a(i, 1)) & "|" & i
End If
End If
Next

For Each ky In dic.keys
If UCase(ky) Like "*" & UCase(dato) & "*" Then
ComboBox1.AddItem ky
End If
Next
ComboBox1.Value = dato


Range("BZ1000").Activate
ComboBox1.Activate
ComboBox1.DropDown
'
Range("A2").Value = ComboBox1.Value
If ComboBox1.ListIndex > -1 Then
n = 6
For Each fila In Split(dic(ComboBox1.Value), "|")
If n = 6 Then

Range("H9").Value = a(fila, 5)
Range("A11").Value = a(fila, 6)
Range("I11").Value = a(fila, 7)
Range("Q11").Value = a(fila, 8)

Else
Range("A" & n).Value = a(fila, 3)
End If
Range("E12").Value = Range("E12").Value + a(fila, 4)
n = n + 1
Next
Range("D2").Select
End If
cargando = False
Application.ScreenUpdating = True
End Sub

[Hola

Inicialmente no veo algo que ocasiones lo que mencionas, a menos que ese combobox esté en un userform ¿o está en la hoja? En todo caso, sugiero colocar el archivo en algún drive y compartir por aquí el enlace para poder analizarlo. Ojo, insisto, si el combobox está en un Userform, ahí sí entiendo el problema.

1 respuesta más de otro experto

Respuesta
1

[Hola Maricela Barr 

La macro la hice para ti o la tomaste de alguna otra respuesta.

Puedes poner el enlace de la pregunta original. Necesito ver cómo se carga por primera vez el combobox1.

Además la macro no la pusiste completa. Al inicio de todo el código debes poner esta línea:

Dim cargando As Boolean

Debería quedar así:

Nota: También es recomendable utilizar la instrucción "Option Explicit" en todos tus códigos.

Revisa y nos comentas.

Le hice algunos pequeños ajustes, pero también comenta si tienes otros códigos en tu hoja o en tu libro.

Option Explicit
'
Dim cargando As Boolean
'
Private Sub ComboBox1_Change()
'Por Dante Amor
  Dim dato As Variant, fila As Variant
  Dim i As Long, n As Long
  Dim a As Variant, ky As Variant, b As Variant
  Dim dic As Object
  Dim sh1 As Worksheet
  '
  Application.ScreenUpdating = False
  If cargando = True Then Exit Sub
  '
  Set sh1 = Sheets("DATA")
  Set dic = CreateObject("Scripting.Dictionary")
  '
  cargando = True
  dato = ComboBox1.Value
  ComboBox1.Clear
  Range("H9, A11, I11, Q11").Value = ""
  '
  a = sh1.Range("A5:Z" & sh1.Range("A" & Rows.Count).End(3).Row).Value
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  For i = 1 To UBound(a, 1)
    If a(i, 1) <> "" Then
      If Not dic.exists(a(i, 1)) Then
        dic(a(i, 1)) = i
      Else
        dic(a(i, 1)) = dic(a(i, 1)) & "|" & i
      End If
    End If
  Next
  '
  For Each ky In dic.keys
    If UCase(ky) Like "*" & UCase(dato) & "*" Then
      ComboBox1.AddItem ky
    End If
  Next
  ComboBox1.Value = dato
  '
  Range("BZ1000"). Activate
  ComboBox1. Activate
  ComboBox1. DropDown
  '
  Range("A2").Value = ComboBox1.Value
  If ComboBox1.ListIndex > -1 Then
    n = 6
    For Each fila In Split(dic(ComboBox1.Value), "|")
      If n = 6 Then
        Range("H9").Value = a(fila, 5)
        Range("A11").Value = a(fila, 6)
        Range("I11").Value = a(fila, 7)
        Range("Q11").Value = a(fila, 8)
      Else
        Range("A" & n).Value = a(fila, 3)
      End If
      Range("E12").Value = Range("E12").Value + a(fila, 4)
      n = n + 1
    Next
    Range("D2").Select
  End If
  cargando = False
  Application.ScreenUpdating = True
End Sub

Buenas noches Dante Amor, pido disculpas por responder hasta el día de hoy pasa que estuve un poco enferma, pero gracias a Dios ya estoy volviendo a retomar mis actividades; agradezco mucho la atención.

Mañana retorno a mis actividades probaré el nuevo código y veo como me va.

El código se refiere a una pregunta anterior la cual comparto abajo y también el codigo que me falto incluir. 

¿Cómo corregir bloqueo de celda y de desplazamiento en Excel?

Option Explicit

'Por Dante Amor

Sub CargaCombo()
Dim dic As Object
Dim sh1 As Worksheet, sh2 As Object
Dim I As Long
Dim a As Variant
Set sh1 = Sheets("BASE")
Set sh2 = Sheets("ANEXO5")
Set dic = CreateObject("Scripting.Dictionary")
a = sh1.Range("Y3", sh1.Range("Y" & Rows.Count).End(3)).Value
For I = 1 To UBound(a, 1)
If a(I, 1) <> "" Then dic(a(I, 1)) = Empty
Next
sh2.ComboBox1.List = Application.Transpose(dic.keys)
End Sub

Gracias nuevamente, saludos.

Me alegra saber que ya te encuentras mejor.

Ahora pusiste otro código.

Prueba el código que puse y comentas.

Gracias todo va mejor a Dios gracias y en cuanto a la macro el problema ha sido resuelto; pero ahora me pasa lo siguiente, cuando le doy clic en el combobox se hace pequeño y si le vuelvo a presionar se hace aun más pequeño al grado de que no puedo seleccionar ningun valor. ¿Qué puedo hacer para evitar esto?

¡Gracias por la ayuda! 

"Cuando le doy clic en el combobox se hace pequeño y si le vuelvo a presionar se hace aun más pequeño"

Lo reviso. Ya me había sucedido eso anteriormente. Creo que tiene que ver con esta instrucción:

Application.ScreenUpdating = False

Realizo pruebas y ya te digo cómo resolverlo.

No encuentro el archivo con el que me sucedía algo similar.

Comparte tu archivo o envíamelo a mi correo para revisarlo.

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas