Problema con macro al seleccionar datos con casilleros

Tengo un grupo de datos organizados en una lista con casilleros para seleccionar los que se crean convenientes (adjunto imagen para ayudar a explicarme). Necesito que al dar click a una macro que he creado, los datos que se han seleccionado vayan a un destino determinado. Y sale bien, pero el problema viene cuando no hay datos seleccionados, porque cuando pasa esto quiero que en el destino no se refleje dato alguno, pero no lo consigo. Dejo el código de la macro también para ver si me falta algo:

Sub EnviarCereales()
'
' EnviarCereales Macro
'

'
Range("D10:G30").Select
Selection.AutoFilter
ActiveSheet.Range("$D$10:$G$30").AutoFilter Field:=4, Criteria1:=
"VERDADERO"
Range("D14:F30").Select
ActiveWindow.SmallScroll Down:=-6
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("BBDD").Select
Range("E11").Select 'Selecciona la primera celda de la columna
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Cereales").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Selection.AutoFilter
Range("I10:L30").Select
Selection.AutoFilter
ActiveSheet.Range("$I$10:$L$30").AutoFilter Field:=4, Criteria1:= _
"VERDADERO"
Range("I11:K30").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("BBDD").Select
Range("E11").Select 'Selecciona la primera celda de la columna
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Cereales").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Selection.AutoFilter
Range("N10:Q30").Select
Selection.AutoFilter
ActiveSheet.Range("$N$10:$Q$30").AutoFilter Field:=4, Criteria1:= _
"VERDADERO"
Range("N14:P30").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("BBDD").Select
Range("E11").Select 'Selecciona la primera celda de la columna
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Cereales").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Selection.AutoFilter
ActiveWorkbook.RefreshAll
Range("A17").Select
End Sub

1 respuesta

Respuesta

Según tu código en col G (para el primer grupo) tenés el resultado VERDADERO o FALSO según lo que hayas seleccionado.

Entonces podés utilizar este condicional:

If Application.WorksheetFunction.CountIf(Range("G10:G30"), True) > 0 Then
ActiveSheet.Range("$D$10:$G$30").AutoFilter Field:=4, Criteria1:="VERDADERO"
'el resto de tu código
Else
MsgBox "No hay datos filtrados... ya sabrás que colocar aquí"
End If
End Sub

Lo que hace esa instrucción es utilizar la fórmula CONTAR. SI y si devuelve 0 es que no hay casillas tildadas.

Sdos y no olvides valorar la respuesta si el tema queda resuelto, sino comenta o solicita aclaraciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas