Visual Basic - Colorear celda si no encuentra valor

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de pablo

Colorear celda si no encuentra valor

Publicado por pablo (5 intervenciones) el 04/04/2017 19:00:18
Buenas.
No he podido dar con la solución, que parece simple, pero no tengo la suficiente expertis para la siguiente macro.
De una lista de códigos de la columna A, la macro encuentra la foto correspondiente al dar clic en una celda de la columna A, pero necesito que cuando no lo encuentre, pinte la celda del código que no halló. (solo si no la encuentra)
agradeceré cualquier ayuda. Infinitas gracias

1
2
3
4
5
6
7
8
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo salida
If Target.Column = 1 Then
foto = Target.Value
Shell ("WINDOWS\ \FOTOS CODIGO\" & foto & ".jpg")
Else: ActiveCell.Interior.Color = 65535
End If
Exit Sub
salida:

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Colorear celda si no encuentra valor

Publicado por Antoni Masana (558 intervenciones) el 05/04/2017 06:41:18
Si la Foto no existe pinta la celda de Amarillo, en caso contrario la deja sin reeleno


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Foto As String
 
    If Target.Column = 1 Then
       Foto = Target.Value
       If Dir("\WINDOWS\FOTOS CODIGO\" & Foto & ".jpg") = "" Then
          ActiveCell.Interior.Color = 65535   ' --- Amarillo
       Else
          With Selection.Interior
              .Pattern = xlNone
              .TintAndShade = 0
              .PatternTintAndShade = 0
          End With
       End If
    End If
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de pablo

Colorear celda si no encuentra valor

Publicado por pablo (5 intervenciones) el 05/04/2017 13:42:26
Saludos y mis respetos.
gracias por su ayuda

me arroja error en la linea

If Dir("rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen \\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg") = "" Then

Se trata de la ruta donde busca la foto. y la abre con visualizador de windows.

agradezco su tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Colorear celda si no encuentra valor

Publicado por Antoni Masana (558 intervenciones) el 06/04/2017 06:52:16
El formato correcto es:

1
If Dir("\\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg") = "" Then

Lo que hace es ver si existe el fichero en la ruta establecida.

Esto:

1
rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen

es para abrir el fichero y debe ir asi

1
Shell "rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen \\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg"

Y montando todo el puzzle queda una cosa asi:

1
2
3
4
5
If Dir("\\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg") = "" Then
   MsgBox "No existe el fichero:" & VbCrLf & VbCrLf & Foto & ".jpg"
Else
   Shell "rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen \\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg"
End If

o más cuco:

1
2
3
4
5
6
7
Fichero="\\agsimelnas03\Compras\Repuestos_Plantas\Ochagavia\FOTOS CODIGO\" & Foto & ".jpg"
 
If Dir(Fichero) = "" Then
   MsgBox "No existe el fichero:" & VbCrLf & VbCrLf & Foto & ".jpg"
Else
   Shell "rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen " & Fichero
End If

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar