Muy buenas a todos y todas y gracias por dedicarme unos minutos. Estoy tratando de preparar una macro para que cumpla un objetivo y no lo consigo. Es algo sencillo, pero no soy capaz... Me explico: estoy preparando una plantilla de evaluación en excel (soy docente) y quiero que en la lista de estudiantes, que aparecerán solo con su número de lista (1, 2, 3...), la celda de cada número muestre un comentario con el nombre del estudiante.
Ahora mismo, el archivo que subo he conseguido que la macro rescate el nombre de los estudiantes y los pegue como comentario en la lista de estudiantes, pero lo hace mal, como ahora veréis.
Muchas gracias de nuevo.
Adjunto | Tamaño |
---|---|
prueba.xlsm | 16.31 KB |
Según pones en tu hoja, quieres que tu macro copie la celda C4 y pegue su texto como comentario en las celdas A4, A5 Y A6; Luego, pasa a la celda C5 y utiliza su contenido como comentario en las celdas A13,A14 y A15; luego la celda C6, iría a las celdas A22, A23, A24; y así sucesivamente.
así que hay una relación directa entre la fila en la columan C (origen) y las filas en la columna A (destino)
1ª -> 4 -> 4
2ª -> 5 -> 13
3ª -> 6 -> 22
empezamos en la 4 y hay un salto de 9 entre uno y otro, así que puedes calcular cuál es tu fila de destino por ejemplo así (para la primera fila de destino de las 3 que tienes
filadestino=4 + 9*(filaorigen-4)
Haz un bucle que recorra las filas del origen y con esto puedes calcular las filas de destino
si necesitas tres filas de destino, seria un bucle para repetirlo 3 veces, por ejemplo:
For i=0 to 2
filadestino=4 + 9*(filaorigen-4) + i
Next
------
Ya sé Excel, pero necesito más.
Muchas gracias, parece una solución bastante elegante. Sin embargo, dado el mínimo conocimiento de macros que tengo no soy capaz de integrar tus líneas de código dentro de mi macro. Entiendo que das solución al problema y que tus líneas hay que integrarlas en mi macro, pero sinceramente no consigo que reproduzca lo que pretendo que, por cierto, es exactamente como lo has explicado (no sabía si me explicaría bien). Mi macro (seguramente que no esté muy depurada, pero bueno) es esta:
For i = 4 To 24 Step 6
For k = 4 To 6 Step 1
Sheets("Hoja1").Cells(i, 1).ClearComments
Sheets("Hoja1").Cells(i, 1).AddComment
Sheets("Hoja1").Cells(i, 1).Comment.Visible = False
Sheets("Hoja1").Cells(i, 1).Comment.Text Text:=Sheets("Hoja1").Cells(k, 3).Text
Sheets("Hoja1").Cells(i, 1).Comment.Shape.Width = 150
Sheets("Hoja1").Cells(i, 1).Comment.Shape.Height = 15
i = i + 1
Next
k = k + 1
Next
End Sub
Y tus líneas son:
For i = 0 To 2
filadestino = 4 + 9 * (filaorigen - 4) + i
Next
Si alguien sabe cómo integrarlas, se lo agradecería mucho (yo voy a serguir intentandolo, pero como ya llevo 24 horas y no me sale, pido ayuda de nuevo). Por supuesto te agradecería de nuevo tu ayuda pacomegia, pero no quiero abuscar.
Muchas gracias a la comunidad y especialmente a pacomegia.
Vamos a ver
Sub Prueba()
Dim i, filaorigen, filadestino
For filaorigen = 4 To 6 Step 1 'bucle por tus filas de origen
For i = 0 To 2 'para cada origen tenemos 3 celdas de destino
filadestino = 4 + 9 * (filaorigen - 4) + i 'tu fila de destino
With Sheets("Hoja1").Cells(filadestino, 1)
.ClearComments
.AddComment
With .Comment
.Visible = False
.Text Text:=Sheets("Hoja1").Cells(filaorigen, 3).Text
.Shape.Width = 150
.Shape.Height = 15
End With
End With
Next
Next
End Sub
------
Ya sé Excel, pero necesito más.
Muchísimas gracias. FUnciona perfectmente y la he podido adaptar a mi excel de verdad, cambiando un par de parámetros. Muchas gracias de nuevo.