Error de ejecución '13': Incompatibilidad de tipo
Resuelto
SLM-BHY
Mensajes publicados
29
Estado
Membre
-
Heliotte Mensajes publicados 1561 Estado Membre -
Heliotte Mensajes publicados 1561 Estado Membre -
Hola,
He creado una macro de VBA que permite asignar un valor (texto) en la columna D si encuentra un valor predeterminado en la columna B.
Por ejemplo, si en la celda B6 tengo "Coche", entonces en la celda D6 tendré automáticamente "Alquilado".
Mi macro funciona muy bien para cada valor ingresado. Ahora, si tengo el mismo valor que aplicar en un rango de 10 filas, al extender el primer valor a las 9 restantes, obtengo un error de depuración con la incompatibilidad de tipo.
¿Puede ayudarme, por favor?
Aquí hay un fragmento de código:
Private Sub Worksheet_Change(ByVal Target As Range)
fila = Target.Row
col = Target.Column
If Target.Column = 2 Then
If Target = "coche" Then
Cells(fila, 4).Value = "alquilado"
End If
<config>Windows XP / Internet Explorer 7.0</config>
He creado una macro de VBA que permite asignar un valor (texto) en la columna D si encuentra un valor predeterminado en la columna B.
Por ejemplo, si en la celda B6 tengo "Coche", entonces en la celda D6 tendré automáticamente "Alquilado".
Mi macro funciona muy bien para cada valor ingresado. Ahora, si tengo el mismo valor que aplicar en un rango de 10 filas, al extender el primer valor a las 9 restantes, obtengo un error de depuración con la incompatibilidad de tipo.
¿Puede ayudarme, por favor?
Aquí hay un fragmento de código:
Private Sub Worksheet_Change(ByVal Target As Range)
fila = Target.Row
col = Target.Column
If Target.Column = 2 Then
If Target = "coche" Then
Cells(fila, 4).Value = "alquilado"
End If
<config>Windows XP / Internet Explorer 7.0</config>
3 réponses
Hola
Hay un problema con tu código
Cuando seleccionas un área de varias celdas, tu objeto Target contiene varias celdas y tu comparación If Target = "voiture" realmente presenta un problema de tipo.
Es necesario iterar sobre todas las celdas de Target para comparar solo una celda a la vez.
Hay un problema con tu código
Cuando seleccionas un área de varias celdas, tu objeto Target contiene varias celdas y tu comparación If Target = "voiture" realmente presenta un problema de tipo.
Es necesario iterar sobre todas las celdas de Target para comparar solo una celda a la vez.
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim ligne As Integer, col As Integer ' ' For ligne = Target.Row To Target.Row + Target.Rows.Count - 1 For col = Target.Column To Target.Column + Target.Columns.Count - 1 If col = 2 Then If Cells(ligne, col) = "voiture" Then Cells(ligne, 4).Value = "loué" End If End If Next col Next ligne End Sub
¡Mis mejores deseos!
No había entendido "en una playa de 10 líneas" porque leí diagonalmente (tenía mucha prisa esta mañana)
Gracias por las explicaciones .. ¡me servirá de lección!