Cambiar formato de parte de una celda mediante macro

13/10/2017 - 11:59 por jbenayas | Informe spam
Hola

Estoy haciendo unas plantillas de fotos con datos de alumnos.

Recopilo datos de otra hoja, de forma que en las casillas de la hoja excel "PLANILLA" van la foto de cada alumno y algunos datos:

Ejemplo:
________________ ________________
|Foto | |Foto |
|Foto | |Foto |
|Foto | |Foto |
|Foto | |Foto |
|Foto | |Foto |
|Foto | |Foto |
|Foto | |Foto |
________________ ________________
| | | |
|12 Nombre REP | |13 Nombre REP |
| Apellido 1 | | Apellido 1 |
| Apellido 2 | | Apellido 2 |
| Nota 1 | | Nota 1 |
| ETC... | | ETC... |
________________ ________________

Querría que algunos datos fuesen remarcados, el número en negrilla, REP en negrilla y en rojo, el nombre en cursiva y en verde, etc...


¿Alguna idea sobre como hacerlo mediante código?


Un saludo y gracias.



P.D.

Este es el código que uso para rellenar la plantilla:



Sub PonerFotos()

'
' Borrar fotos preexistentes
'

On Error Resume Next
Dim img As Shape
For Each img In ActiveSheet.Shapes
img.Delete
Next

'
' Poner Fotos
'

On Error Resume Next
Set Origen = Sheets("2ºESO")
Set Destino = Sheets("Planilla")

' (2º ESO C ; 2 to 24) (2º ESO D ; 25 to 48)

For i = 2 To 24
Set Celda = Origen.Cells(i, "H")
Set Numero = Origen.Cells(i, "D")
Set NombreAlu = Origen.Cells(i, "F")
Set Apellidos = Origen.Cells(i, "E")
Set Secciones = Origen.Cells(i, "L")
Set NIE = Origen.Cells(i, "A")
Set Edad = Origen.Cells(i, "K")
Set MediaAnterior = Origen.Cells(i, "AM")
Set Repetidor = Origen.Cells(i, "C")

FotoDir = "D:\SkyDrive\Documentos\FotosAlumnos\Alumnos\Apañaos" & "\" & NIE.Value & ".jpg"
Alumno = Numero.Value & " " & NombreAlu.Value & " (" & Edad.Value & ") " & MediaAnterior.Value & " " & Secciones.Value & " " & Repetidor.Value & Chr$(10) & Apellidos.Value

Destino.Range(Celda).Value = Alumno
Destino.Shapes.AddPicture FotoDir, True, True, Range(Celda).Left + 1, Range(Celda).Top + 1, 63, 84
Next
MsgBox "Proceso terminado", vbInformation
'
End Sub
 

Leer las respuestas

#1 David_erh
13/10/2017 - 21:55 | Informe spam
Hola, por lo que puedo ver de tu requerimiento, creo yo, que lo único que tendrías que hacer sería adicionar, antes del NEXT, llamadas a la propiedad FONT de cada RANGE y asignarle sus valores; por ejemplo

Destino.Range(Numero).Font.Bold = True 'para poner en negrita
Destino.Range(Numero).Font.Color = -16776961 'para el color rojo
Destino.Range(NombreAlu).Font.Italic = True 'para poner en cursiva
Destino.Range(NombreAlu).Font.Color = -11489280 'para el color verde

Y así para todas las celdas que desees dar formato.

Espero te sirva, saludos

David

Preguntas similares