Mostrando las entradas con la etiqueta Curso de Macros. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Curso de Macros. Mostrar todas las entradas

Mostrar imagen al pasar el mouse por una celda

Utiliza la siguiente macro para mostrar una imagen en la hoja con simplemente pasar el mouse por la celda que contiene la fórmula:

=SI.ERROR(HIPERVINCULO(MiEvento(FILA(),COLUMNA()),"Ver imagen"),"Ver imagen")

Inserta el siguiente código en un módulo:

-----------------------------------------

Public Function MiEvento(fila As Long, columna As Long)
  Dim imagen As Object
  Dim nombre As String, carpeta As String
  Dim celda As Range
  Dim pict As Object

  carpeta = "C:\trabajo\imagenes\"    'Carpeta con los archivos
  Set celda = Range("A" & fila)       'Columna con el nombre de los archivos
  
  nombre = celda.Text
  On Error Resume Next
    Set imagen = ActiveSheet.Pictures(celda.Text)
    For Each pict In ActiveSheet.Pictures
      If pict.Name <> nombre Then
        pict.Delete
      End If
    Next
  On Error GoTo 0

  If imagen Is Nothing Then
    Set imagen = ActiveSheet.Pictures.Insert(carpeta & nombre & ".JPG") 'Extensión del archivo
    With imagen
      .Name = nombre
      .Top = celda.Top
      .Left = Cells(fila, columna + 1).Left + 10
      .ShapeRange.LockAspectRatio = msoFalse
      .ShapeRange.Height = 105                      'Alto de la imagen
      .ShapeRange.Width = 75                        'Ancho de la imagen
    End With
  End If
End Function

-----------------------------------------


Consulta el procedimiento en el vídeo:





Saludos
Dante Amor

Poner negritas

La siguiente macro la puedes utilizar para poner en negritas parte del texto de una celda de Excel.

Utilizando una macro recorrer todas las filas y poner en negritas el texto de la derecha de cada celda.

Macro:

--------------------------------------

Option Explicit
Sub PonerNegritas()
  Dim i As Long, n As Long
  'recorre las filas de la columna "A"
  For i = 2 To Range("A" & Rows.Count).End(3).Row
    With Range("A" & i)
      'obtiene la posición del guión "-" (de derecha a izquierda)
      n = InStrRev(.Value, "-")
      If n > 0 Then
        'si encontró el guión, entonces pone en negritas el texto
        'después del guión
        .Characters(n + 2, Len(.Value)).Font.Bold = True
      End If
    End With
  Next
End Sub

 --------------------------------------

Código para poner en negritas el texto que está entre 2 caracteres:

--------------------------------------

Sub PonerNegritas_2()
  Dim i As Long, m As Long, n As Long
  'recorre las filas de la columna "A"
  For i = 2 To Range("A" & Rows.Count).End(3).Row
    With Range("A" & i)
      'obtiene la posición del guión "-" (de derecha a izquierda)
      m = InStr(.Value, "/")
      n = InStrRev(.Value, "/")
      If n > 0 Then
        'si encontró el caracter, entonces pone en negritas
        'el texto entre caracteres
        .Characters(m + 1, n - m - 1).Font.Bold = True
      End If
    End With
  Next
End Sub

---------------------------------------





Curso de Macros utilizando Matrices Ejercicio 1

Curso de Macros en Excel para aprender cómo utilizar matrices.

En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas.






Sub matriz_ejercicio1()
'Incio
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long
'Entradas
  a = Range("A1:C5").Value
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
'Proceso
  For i = 1 To UBound(a, 1)
    For j = 1 To UBound(a, 2)
      b(i, j) = a(i, j)
    Next
  Next
'Salida
  Range("E1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

Curso de Macros utilizando Matrices Ejercicio 2

Curso de Macros en Excel para aprender cómo utilizar matrices. En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas. 



Sub matriz_ejercicio2()
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, k As Long
  
  a = Range("A1:D5").Value
  ReDim b(1 To UBound(a, 1) * UBound(a, 2), 1 To 3)
  
  For i = 2 To UBound(a, 1)
    For j = 2 To UBound(a, 2)
      k = k + 1
      b(k, 1) = a(i, 1)
      b(k, 2) = a(1, j)
      b(k, 3) = a(i, j)
    Next
  Next
  
  Range("F2").Resize(k, 3).Value = b
End Sub






Imprime la pantalla completa y guárdala como jpeg

La siguiente macro captura la imagen completa de la pantalla y la guarda como archivo jpeg en la carpeta y el nombre que desees. 




Sub Guardar_Pantalla()
  'Por.Dante Amor
  Dim sh As Worksheet
  Dim archivo As String
  '
  archivo = "C:\ejemplo\pantalla.jpeg"
  Application.SendKeys "(%{1068})"
  DoEvents
  Set sh = Sheets.Add
  DoEvents
  sh.Shapes.AddChart
  With sh.ChartObjects(1)
      .Height = 500
      .Width = 1000
      .Chart.Paste
      .Chart.Export archivo
  End With
  Application.DisplayAlerts = False
  sh.Delete
  MsgBox "Se guardó la pantalla"
End Sub




Curso de Macros utilizando Matrices Ejercicio 3

Curso de Macros en Excel para aprender cómo utilizar matrices.

En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas.





Sub matriz_ejercicio3()
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, k As Long, m As Long, lr As Long
  
  lr = Sheets("Plantilla").Range("A" & Rows.Count).End(3).Row
  a = Sheets("Plantilla").Range("A1:L" & lr).Value
  ReDim b(1 To UBound(a, 1) * 7, 1 To UBound(a, 2))
  
  For i = 2 To UBound(a, 1)
    m = 5
    For j = 1 To 7
      k = k + 1
      b(k, 1) = a(i, 1)
      b(k, 2) = a(i, 2)
      b(k, 3) = a(i, 3)
      b(k, 4) = a(i, 4)
      b(k, m) = a(i, m)
      b(k, 12) = a(i, 12)
      m = m + 1
    Next
  Next
  
  Sheets("Carga").Range("A2").Resize(k, UBound(b, 2)).Value = b
End Sub