Macro que me permita pasar a una celda antes de la misma columna
Private Sub btn_siguiente_Click() 'Por.Dante Amor Titulo = "ACADEMIA DE CONDUCCIÓN" Application.ScreenUpdating = False Application.DisplayAlerts = False Set h1 = Sheets("EVALUACION") Fila = ActiveCell.Row If Fila < 3 Then Fila = 3 If Fila < 3 Or Fila > 42 Then MsgBox "Ha llegado al final del cuestionario", vbInformation, Titulo btn_atras.Enabled = True btn_respuesta.Enabled = False Exit Sub Else btn_atras.Enabled = True btn_respuesta.Enabled = True Set H2 = Sheets.Add archivo = ThisWorkbook.Path & "\" & "temp.jpeg" Rango = "J" & Fila 'Poner el rango a mostrar Me.reloj.Caption = "Pregunta Nº: " & Fila - 2 anc = h1.Range(Rango).Width alt = h1.Range(Rango).Height h1.Range(Rango).CopyPicture H2.Shapes.AddChart With H2.ChartObjects(1) .Width = anc + 2 .Height = alt + 2 .Chart.Paste .Chart.Export archivo .Delete End With H2.Delete Label1.Picture = LoadPicture(archivo) ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True Application.DisplayAlerts = True End If End Sub
Dam, la macro que me desarrollaste quedó de la anterior manera, como se debe avanzar a la siguiente fila teniendo en cuenta que debe ser de la fila 3 a 42 únicamente se indica con la linea:
ActiveCell.Offset(1, 0).Select 'para adelantar y ActiveCell.Offset(-1, 0).Select ' para retroceder a la anterior fila
Como me debe quedar para retroceder, lo hago pero tengo que hacer click dos veces para retroceder y al querer adelantar de nuevo, también debo hacer click dos veces, el código de retroceder que tengo es el siguiente:
Private Sub btn_atras_Click() Titulo = "ACADEMIA DE CONDUCCIÓN" Application.ScreenUpdating = False Application.DisplayAlerts = False Set h1 = Sheets("EVALUACION") ActiveCell.Offset(-1, 0).Select Fila = ActiveCell.Row If Fila < 3 Then Fila = 3 If Fila > 3 Or Fila < 42 Then btn_atras.Enabled = True btn_respuesta.Enabled = True Set H2 = Sheets.Add archivo = ThisWorkbook.Path & "\" & "temp.jpeg" Rango = "J" & Fila 'Poner el rango a mostrar Me.reloj.Caption = "Pregunta Nº : " & Fila - 2 anc = h1.Range(Rango).Width alt = h1.Range(Rango).Height h1.Range(Rango).CopyPicture H2.Shapes.AddChart With H2.ChartObjects(1) .Width = anc + 2 .Height = alt + 2 .Chart.Paste .Chart.Export archivo .Delete End With H2.Delete Label1.Picture = LoadPicture(archivo) Application.ScreenUpdating = True Application.DisplayAlerts = True Else MsgBox "Ha llegado a la Priemra pregunta del cuestionario", vbInformation, Titulo btn_atras.Enabled = False btn_respuesta.Enabled = False btn_siguiente.Enabled = True Exit Sub End If End Sub
Al retroceder y continuar el retroceso, y luego de llegar a la fila 1, lógicamente me genera el siguiente error que me marca el la linea "ActiveCell.Offset(-1, 0).Select":
Necesito saber como quedaría el código con los correspondientes limitantes y controles de errores.
1 Respuesta
Respuesta de Dante Amor
1