Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Edson Luiz Branco

Membros Plenos
  • Total de itens

    617
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

136

5 Seguidores

Informações gerais

  • Cidade e Estado
    Joinville/SC
  • Sexo
    Masculino
  1. Esse problema é tão antigo quanto o Excel e não chega a ser exatamente um Bug. Veja por exemplo o que ocorre se você digitar a simples fórmula = 8,1 - 7,4 Para saber porquê isso acontece e formas de contornar: Aritmética de ponto flutuante pode fornecer resultados imprecisos no Excel Como corrigir erros de arredondamento na aritmética de ponto flutuante
  2. Não entendi o que você que fazer. Explique com detalhes, por gentileza.
  3. @Rafael Delevidove , bem vindo ao Fórum Office do Clube do Hardware. Não analisei profundamente seu código mas percebe-se que, apesar de ser longo, tem muitas partes que se repetem ou formam um conjunto e que portanto poderiam ser melhor parametrizadas. Acho que você deveria mesmo antes de tudo é "perder" um pouco de tempo para planejar e organizar melhor, começando não no código, mas lá na sua(s) planilha(s): Renomeie os objetos (figuras), dando um nome preferivelmente mais curto e que tenham um significado condizente a o que se destina, ao invés dos nomes automáticos gerados pelo Excel. Por exemplo, supondo que numa parte de seu fluxograma você tenha a figura de uma bomba centrífuga 1 conectada ao reservatório B, você renomearia "Picture 53" para "BC1", "Picture 121" para "ResB" e "Conector Angulado 198" algo como "BC1_ResB". Além de ficar mais intuitivo é melhor para manutenção da planilha e do código VBA e de bônus encolhe o tamanho do código. Agrupe figuras que formam um conjunto único: na planilha, selecione uma ou mais formas com a tecla Control, clique como o botão direito sobre uma delas e escolha Agrupar e também já escolha um nome significativo ao conjunto. Por exemplo, se você agrupar BC1, ResB e BC1_ResB, renomeando para "CjBC1" você pode controlar a visibilidade dos 3 itens de uma só vez: ActiveSheet.Shapes("CjBC1").Visible = False. Também daria, no VBA, para criar um ShapeRange com mais de uma forma ou um Array de formas, mas penso que da forma descrita acima ficaria mais organizado. Use no início e fim dos trechos o With/End With ao invés de repetir sempre ActiveSheet em cada linha. Se mesmo depois de tudo isso continuar dando "Procedimento muito grande", você poderia manter os nomes das formas e atribuição de visibilidade numa planilha oculta e usar o VBA só para ler/invertê-las Mas o melhor mesmo seria se você anexasse seu modelo para análise, como o colega @Erik Wesley mencionou acima.
  4. Post cruzado(já respondido) em "problema sobre constante de matriz"
  5. Boa tarde, @4hosanaj De duas uma: ou eu não entendi o que você deseja, ou você não chegou a testar o código que passei (veja no anexo). Só se o que você quer se refere é a essa tal segunda macro... Se for isso, ela não estava presente no anexo de sua mensagem. Processamento MCI1.zip
  6. Bem vindo, @4hosanaj Ao invés de lin = lin + 1 refira-se também à última linha preenchida da Folha2 calculando lin no início do Loop. Exemplo: Sub Digitalização3() ultimaLinha = Folha1.Cells(Rows.Count, "a").End(xlUp).Row For i = 2 To ultimaLinha If Folha1.Cells(i, 5) = "Feito" Then lin = Folha2.Cells(Rows.Count, "a").End(xlUp).Row + 1 Folha2.Range(Folha2.Cells(lin, 1), Folha2.Cells(lin, 5)).Value = _ Folha1.Range(Folha1.Cells(i, 1), Folha1.Cells(i, 5)).Value Folha1.Range(Folha1.Cells(i, 1), Folha1.Cells(i, 5)).ClearContents End If Next End Sub
  7. Olá, @Arthur Luiz Alves Costa você tem pesos diferentes para as primeiras avaliações, né? Em M2, teste essa fórmula abaixo (e no anexo) e depois arraste. Obs.: é uma fórmula matricial, então finalize ela não só com ENTER, mas com CTRL+SHIFT+ENTER =SOMA(SE(ÉNÚM(B2:K2);B2:K2;0)*{2.2.1.1.1.1.1.1.1.1})/12 P.S.: se seu Excel for 2013 ou 2016, troque o ponto pela barra invertida na expressão {2.2.1.1.1.1.1.1.1.1}, ficando {2\2\1\1\1\1\1\1\1\1}. Planilha notas.xlsx
  8. Bem vindo ao fórum, @Jukafrr Não dá pra fazer por fórmula pelo simples fato de que uma das fórmulas teria que ser sacrificada para dar lugar ao valor inserido pelo usuário. Mas dá pra fazer por VBA. Por exemplo, clique com o botão direito da "orelha" da Plan1, escolha "Exibir Código" e cole as seguintes linhas no editor: Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Variant: x = Target.Value If Not IsNumeric(x) Then Exit Sub Application.EnableEvents = False Select Case Target.Address(False, False) Case "A1" [A2].Value = 1.2 * x Case "A2" [A1].Value = x / 1.2 End Select Application.EnableEvents = True End Sub Teste agora com valores nas células A1 e A2.
  9. Boa tarde, Don Diego! Ao invés de formatar a saída com a função Format, que retorna String tb, converta o valor da textbox para Single ou Double, por exemplo, usando CSng(Me.Textbox1.Value) ou idem para CDbl(). Ou então faça uma operação algébrica que não altere o valor, como multiplicar por 1, somar com 0 ou inverter 2 vezes o sinal. Exemplo: 1 * (Me.Textbox1.Value) Se precisar formatar a saída, use a propriedade NumberFormat do obj. Range.
  10. Boa tarde, @Guto006 . Seja bem vindo ao Clube do Hardware! Não entendi muito bem onde você quer pôr os logs para mudanças nas colunas A,B,C, mas em linhas gerais seria adicionar uma condição no seu If existente. ElseIf Not Intersect(faixa, Me.Range("A:C")) Is Nothing Then Application.EnableEvents = False 'local onde você quer colocar .Value = Now() 'local onde você quer colocar .Value = VBA.Environ("username") Application.EnableEvents = True End If Por outro lado eu pergunto: se a pasta de trabalho já tem compartilhamento, porque. não usar o próprio controle histórico oferecido pelo "Controlar Alterações" do Excel? Ali é possível gerar a qualquer momento uma planilha, cujo nome imutável é "Histórico" e que contém todas as informações que você precisa e mais algumas. Segue um print com uma amostra de um arquivo compartilhado que uso aqui:
  11. É bem provável que seja mesmo. Tente re-registrar a biblioteca mscomctl.ocx. Caso nunca tenha usado o regsvr32.exe siga o procedimento do colega Ivair: IMPORTANTE - Utilizando a Ferramenta Regsvr32
  12. Bom dia, @Neri Schuck O cliente (ou você) não passaram a usar a versão 64 bits do Excel? Ele não dispõe do controle ListView (nem de muitos outros tb.).
  13. Seja bem vinda ao Clube do Hardware, @Lívia Portela Tente a seguinte fórmula em P3, depois arraste: =SOMA($B3:ÍNDICE($B3:$N3;1;$P$1))
  14. Dê mais detalhes desse seu problema, de preferência anexe uma amostra de seus arquivos...

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×