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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 jbenayas
14/10/2017 - 16:33 | Informe spam
El viernes, 13 de octubre de 2017, 21:55:06 (UTC+2), David_erh escribió:
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



Pero esto me cambiaría la propiedad en toda la celda, y no solo de la parte del texto que me interesa.
O sea, si en la celda está el texto:
"15 Jesús REP"
Lo que quiero es que 15 esté en negrilla, Jesús en verde, y REP en negrilla y rojo.

Gracias por tu interés.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida