Sei sulla pagina 1di 5

1 SUBRUTINAS (13 puntos)

1.1 Ordenamiento (8 Puntos) A usted le encargan una labor de procesar la informacin de una lista de alumnos de varios clubes de Reino Unido que participan en un torneo deportivo, cada uno de ellos pertenece a un nivel especfico. Cada hoja debe tener exactamente el mismo formato de la imagen anterior, asimismo, cada hoja contendr un mximo de 20 miembros, de manera que la macro deber detectar si existe ms de 20 miembros de un nivel especfico, y utilizar hojas ms de una hoja para ese nivel.

Sub primerejercicio() Definir variables para facilitar el trabajo de toda la macro

Dim source As Worksheet Set source = Workbooks("Source_Data.xls").Worksheets(1) Dim tp As Workbook Set tp = Workbooks("TP1.xls") Creacin de cada hoja por nivel, con concatenar para que aumente el nombre de la hoja con el numero del for tp.Worksheets(1).Activate Worksheets(1).Name = "Level 1" For f = 2 To 6 Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = "Level " & [f] If f = 3 Then Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = "Level 3 I" Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = "Level 3 II" End If Next Copiar datos de la Data a cada hoja d=0 b=0 c=0 For n = 1 To 8 Do While Not IsEmpty(source.[B2].Offset(d, 0))

If source.[B2].Offset(d, 0) = tp.Worksheets(n).Name Then tp.Worksheets(n).[B7].Offset(c, 0) = source.[E2].Offset(d, 0) & ", " & source.[D2].Offset(d, 0) tp.Worksheets(n).[C7].Offset(c, 0) = source.[A2].Offset(d, 0) tp.Worksheets(n).[D7].Offset(c, 0) = source.[F2].Offset(d, 0) c=c+1 b=b+1 End If d=d+1 Loop d=0 c=0 Next Crear una hoja adicional para un nivel, si los datos de este nivel sobrepasan los 20. For t = 1 To 8

If Not IsEmpty(tp.Worksheets(t).[B27]) Then Worksheets.Add after:=tp.Sheets(t) ActiveSheet.Name = tp.Worksheets(t).Name & ".1" tp.Worksheets(t).Range("B27:E39").Cut tp.Worksheets(tp.Worksheets(t).Name & ".1").Select Range("B7").Select ActiveSheet.Paste End If Next ' Formato de cada hoja creada For i = 1 To Worksheets.Count tp.Sheets(i).Select Rows("4:4").RowHeight = 15 Rows("5:5").RowHeight = 15 Rows("6:6").RowHeight = 49.5 Columns("B:B").ColumnWidth = 22.43 Columns("C:C").ColumnWidth = 5 Columns("D:D").ColumnWidth = 39

Columns("E:E").ColumnWidth = 21 [B4] = "NAME" [B4].Resize(3, 1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Selection.Merge [C4] = "TJFNO" [C4].Resize(3, 1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlVertical End With Selection.Merge [D4] = "CLUB" [D4].Resize(3, 1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Selection.Merge [E4] = "NOTES" [E4].Resize(3, 1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Selection.Merge [D1] = ActiveSheet.Name [D1].Resize(3, 1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Font.Name = "Felix Titling" .Font.Size = 14 .Font.Bold = True End With Selection.Merge Range("B4:E26").Select With Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium

.Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideHorizontal).LineStyle = xlContinuous End With [B4:E6].Borders(xlEdgeBottom).Weight = xlMedium [E4:E26].Borders(xlEdgeLeft).Weight = xlMedium [A1:M33].Interior.ThemeColor = xlThemeColorDark1 Ordenar alfabeticamente Range("B4:E26").Select tp.Sheets(i).Sort.SortFields.Clear tp.Sheets(i).Sort.SortFields.Add Key:=Range( _ "B7:B26"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With tp.Sheets(i).Sort .SetRange Range("B4:E26") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With

For s = 1 To 17 Step 4 [B7].Resize(2, 4).Offset(s - 1, 0).Interior.TintAndShade = -0.349986266670736 Next Range("B4:D26").Columns.AutoFit Next

End Sub

1.2 Agrega/eliminar (5 Puntos) A la lista anterior, a travs de ventanas de dilogo cree una opcin que le permita al usuario del programa, agregar o eliminar miembros y ejecutar nuevamente el mismo ordenamiento de la parte1.1. Boton en Source_Data.xls para asignar macro de aadir miembro , eliminar miembro y acceder al mismo ordamiento de la pregunta 1.1

Macro para aadir miembro Sub aadir() Definir variables Dim data As Worksheet Set data = Workbooks("Source_Data.xls").Worksheets(1) Para contar las filas llenas del rango de la hoja (Data) a = WorksheetFunction.Count(Range("A2:A150")) Ventanas de dialogo para que llene cada dato del Nuevo miembro data.[A2].Offset(a, 0) = InputBox("Insertar cdigo de miembro", "Cdigo:") data.[B2].Offset(a, 0) = InputBox("Insertar nivel", "Nivel:") data.[C2].Offset(a, 0) = InputBox("Insertar edad", "Edad:") data.[D2].Offset(a, 0) = InputBox("Insertar nombre", "Nombre:") data.[E2].Offset(a, 0) = InputBox("Insertar apellido", "Apellido:") data.[F2].Offset(a, 0) = InputBox("Insertar nombre del club", "Club:") & Club data.[G2].Offset(a,0) = InputBox(Insertar nombre corto del club,Short Club Name:) l = MsgBox("Completado exitoso", vbOKCancel) End Sub

Macro para eliminar miembro

Sub eliminar() ActiveCell.EntireRow.Delete

End Sub

Potrebbero piacerti anche