Olá, pessoal!
Primeiro, eu vou explicar como gostaria que funcionasse:
1ª) Se a col A estiver preenchida e a col B estiver limpa, copiar (sem recortar) os dados da col A e colar (sem formatação) na coluna B.
2ª) Se a coluna B estiver preenchida, limpar essa coluna e encerrar o código sem executar a 1ª) opção.
.
Fiz tudo até onde aprendi, pesquisando também aqui.
Tentei adaptar a função If a outros códigos com única ação de um Botão de pressão. Mas sempre dá em erros, conforme os procedimentos abaixo:
Sub SORTEAR
Dim document as object
Dim dispatcher as object
Dim oDoc As Object, oPlan As Object
Dim oIntervalo1 As Object, oIntervalo2 As Object
Dim args1(0) as new com.sun.star.beans.PropertyValue
Dim sSQL As String
' Desproteger a planilha sem senha
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Plan1" )
' oPlan.Unprotect( "" )
' Iniciar os objetos
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Plan1" )
oIntervalo1 = oPlan.getCellRangeByName( "A2:A18" )
oIntervalo2 = oPlan.getCellRangeByName( "B2:B18" )
' INCIANDO A CONDIÇÃO IF:
If oIntervalo1 <> 0 And oIntervalo2 = 0 Then
' Classificar em ordem crescente a coluna A
'1º- os campos de classificação
Dim mCampos(0) as New com.sun.star.util.SortField
mCampos(0).Field = 0
mCampos(0).SortAscending = True
'2º- Descrever a classificação
Dim mDescricao(1) As New com.sun.star.beans.PropertyValue
mDescricao(0).Name = "SortFields"
mDescricao(0).Value = mCampos()
mDescricao(1).Name = "HasHeader"
mDescricao(1).Value = False
'3º- classificar o intervalo
oIntervalo1.Sort( mDescricao )
' Colar os dados da coluna A em B
oIntervalo2.setDataArray( oIntervalo1.getDataArray )
' Exportar como PDF para Salvar
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
'dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
' CONCLUINDO A CONDIÇÃO IF:
Else
'Apagar Registros
sSQL = "DELETE FROM ""oIntervalo2"""
'Excutar a Instrução SQL
OInstSQL.Execute( sSQL )
End If
' Parar na cél A1
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
args1(0).Name = "ToPoint"
args1(0).Value = "A1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
' Proteger a planilha sem senha
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Plan1" )
'oPlan.Protect( "" )
End Sub
.
Grato pela atenção!
Orlando Souza
.