Ir para conteúdo
Fórum Script Brasil

Benhur Palini

Membros
  • Total de itens

    27
  • Registro em

  • Última visita

Posts postados por Benhur Palini

  1. Oi,

    Exemplo de uma planilha com 4 retângulos:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For i = 1 To ActiveSheet.Shapes.Count
    Valor = Range("A" & i).Value
    If Valor = 1 Then
    ActiveSheet.Shapes("Retângulo " & i).Visible = msoTrue
    ElseIf Valor = 2 Then
    ActiveSheet.Shapes("Retângulo " & i).Visible = msoFalse
    End If
    Next i
    End Sub
  2. Oi,

    sugestão:

    if WorksheetFunction.IsText(Valor) then .....'retorna verdadeiro se o conteúdo da variável Valor for do tipo texto (string).

    WorksheetFunction pode usar todas as fórmulas de planilha dentro do VBA.

    Observe que if IsNumeric(Valor) Then 'Retorna verdadeiro se o conteúdo da variável Valor for qualquer tipo de número, não apenas para inteiros (Intenger). ex. 1 ou 1,1 ou 11,11

  3. Oi, Maxx77!

    Talvez isto ajude:

    ActiveSheet.Copy
    ChDir "C:\Destino"
    ActiveWorkbook.SaveAs Filename:="C:\Destino\Pasta1.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    Isto copia a planilha ativa para um novo arquivo de Excel.

    Depois salva na pasta préviamente criada que nomeada como 'Destino'

  4. Oi, Danyy!

    Nesses casos prefiro fazer assim:

    Sub Erro()

    On Error Resume Next 'De preferência no início

    Do While ...

    selection.Find...

    If Err.Number <> 0 Then 'Se ocorrer um erro a propriedade Number será diferente de zero

    msg = MsgBox("Erro " & Err.Number & " " & Err.Description) ' Se quizer mostrar o erro

    Windows("RELATORIO DESCONTO.XLSX").Activate
    ActiveCell.Offset(1, 0).Select

    Err.Clear 'Limpa o erro para a próxima execução

    End If

    loop...

    Acredito que o uso de 'On Error GoTo trataerro' seria mais indicado em casos que 'trataerro:' fosse usado fora do loop, que tivesse maior números e de preferência antes de 'End Sub' para encerrar o procedimento.

    espero ter ajudado!

  5. Oi, Daniel!

    Sugiro o seguinte:

    Unload Me 'fecha o formulário, no caso o formulário de login

    Private Sub UserForm_Terminate() 'este evento ocorre após o fechamento do formulário
    UserForm2.Show 'inicia o segundo formulário
    End Sub

  6. Oi, Admilton!

    a sintaxe é

    If condição Then

    ...

    Elseif condição Then

    ...

    End If

    Private Sub textbox1_change()

    IF (textbox2 * textbox3) > (textbox2 * textbox4) then

    textbox1 = textbox2 * textbox3

    Elseif (textbox2 * textbox3) < (textbox2 * textbox4) then

    textbox1 = textbox2 * textbox4

    End IF

    End Sub

  7. Oi!

    Segue uma sugestão:

    vTexto = "111 - aaa22"
    vPosição = InStr(1, vTexto, "-")
    vTexto = Mid(vTexto, 1, vPosição - 2)
    'a função InStr retorna a posição de "-" a partir da posição 1
    'Mid retorna parte de um texto. Observe que "-" está na posição 5
    Lembrando que no Excel podem ser usadas as funções LOCALIZAR() e EXT.TEXTO()
    Em muitos casos é melhor usar a ferramenta 'Texto para colunas' disponível na guia Dados.
  8. Anacleto,

    Este exemplo classifica em ordem crescente uma tabela com auto filtro que inicia na célula A1 da planilha Plan1:

    Sub Macro1()
    Set Tabela = ActiveWorkbook.Worksheets("Plan1").AutoFilter.Sort
    Tabela.SortFields.Clear
    Tabela.SortFields.Add Key:=Range("A1"), Order:=xlAscending
    Tabela.Apply
    End Sub
  9. Oi, Nelson!

    Se ainda precisar, segue uma sugestão:

    Application.OnTime TimeValue(Hora), Rotina

    Hora é a hora em que a rotina deve ser executada.

    Rotina é uma Sub salva no mesmo projeto.

    A execução do código continua, mas a Rotina fica agendada pra ser executada.

    este exemplo agenda 3 execuções da Rotina:

    Application.OnTime TimeValue(Hora1), Rotina

    Application.OnTime TimeValue(Hora2), Rotina

    Application.OnTime TimeValue(Hora3), Rotina

  10. Oi, Edu Borges!

    Set T1 = ActiveSheet.PivotTables("Tabela dinâmica1")
    T1.PivotFields("Treinamento").ClearAllFilters
    T1.PivotFields("Treinamento").CurrentPage = "Treinamento1"
    End Sub
    A instrução Set faz com que T1 represente a mesma coisa que ActiveSheet.PivotTables("Tabela dinâmica1"), assim podemos usar T1 para se referir a tabela dinâmica de nome Tabela dinâmica1.
    Supondo que temos um filtro de relatório chamado Treinamento podemos usar o método ClearAllFilters para limpá-lo.
    Supondo que temos um treinamento chamado Treinamento1 podemos a propriedade CurrentPage = "Treinamento1" para reativar o filtro.

    segue um exemplo com parâmetros que tu pode usar para todas as tabelas dinâmicas:

    Sub Atualizar(Tabela, Campo, Filtro)
    Set T1 = ActiveSheet.PivotTables(Tabela).PivotFields(Campo)
    T1.ClearAllFilters
    T1.CurrentPage = Filtro
    End Sub
    Sub Principal()
    Atualizar "Tabela dinâmica1", "Treinamento", "Treinamento1"
    End Sub
  11. Oi, Claudio!

    tente usar ActiveWorkbook.Sheets(1) para se referir a planilha 1 do arquivo ativo, neste caso o arquivo que acabou de ser aberto

    outra sugestão é usar Set MinhaPlanilha = ActiveWorkbook.Sheets(1), assim não é necessário usar With-End With

    use MinhaPlanilha.propriedade, assim é possível se referir esta planilha mesmo quando outra planilha estiver ativa.

  12. Oi, Danny!

    application.visible se refere a toda a aplicação, no caso todas os arquivos de Excel abertos.

    talvez este recuso seja interessante no teu caso: ActiveWorkbook.IsAddin = True

    mas cuidado, pois outro arquivo estiver ativo quando esta instrução for executada, ela também desaparecerá, por isso é melhor se referir ao workbook pelo nome.

    no final não esqueça de mudar .IsAddin para false.

    Se tiver problema durante o desenvolvimento, mude manualmente na janela de propriedades.

  13. Oi, Adimilson!

    Acho o problema é esta parte "Fretepeso2 ="

    tente:

    ElseIf Format(CDbl(Fretepeso) * CDbl(Peso) > CDbl(Fretepeso) * CDbl(cubagem), "#,##0.00") Then

    ou

    ElseIf (Fretepeso * Peso) > (Fretepeso * cubagem) Then

×
×
  • Criar Novo...