1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. A secção Microsoft/Windows encontra-se actualmente em processo de reestruturação.
    Remover anúncio

[Duvidas] Microsoft Excel

Discussão em 'Windows 7 e anteriores' iniciada por SwimmerBoy, 17 de Novembro de 2008. (Respostas: 26; Visualizações: 2262)

  1. SwimmerBoy

    SwimmerBoy Folding Member

    Boas pessoal

    Tenho um plano diário com várias horas de entrada e várias horas de saída. Tenho um campo que contabiliza as horas com uma simples conta de subtracção entre a hora de saída e a hora de entrada. Até aqui, tudo bem.

    No meio das horas de entrada, tenho campos que são preenchidos com texto.

    Os meus problemas são:
    - neste momento estou a "ir buscar automaticamente" as horas de entrada e saída a uma folha de cálculo diferente, dentro do mesmo livro, com algo do género

    - É possível preencher as tabelas com apenas "A2","I5" e criar uma macro que troque o que está em cada célula por "=horas!A2","=horas!I5" ?

    - preciso de contar o numero de entradas entre as 7 e as 10 (por exemplo), como faço um "entre horas"?

    Se é possível, como fazer?
     
  2. Zylmhuin VII

    Zylmhuin VII Power Member

    Porque queres fazer isso?


    Assim sem pensar muito, crias uma nova coluna com =IF(A1>=7:00 AND A1<=10:00;1;0),
    depois usa o contif =COUNTIF("B1:B10";1)

    O IF é que tens de ver como comparas com horas. No countif, em vez de B1:B10, metes o range onde tens o IF.
     
  3. SwimmerBoy

    SwimmerBoy Folding Member

    Tenho uma folha onde vou buscar as horas, dai o "horas!A4"
    Por não ser de todo prático preencher uma folha com "=horas!A4" "=horas!B49", especialmente quando preenche-se "a olho" duma fonte de "A4", "B49".

    Ou seja, precisava de preencher várias células com A1,A2,A3...Z69,Z70 e no final automatizar uma maneira de passar essa celula de (por ex) F46 para uma formula de "=horas!F46"

    Fiz-me entender?
     
  4. Zylmhuin VII

    Zylmhuin VII Power Member

    Fizeste...

    Não dá para inserires o valor numa célula, e depois "arrastar" para copiar para as restantes?

    Se quiseres uma macro, só tens de ler o valor da célula (ex: A4) e depois concatenar com "horas!".
    Ficas com "horas!A4", e associas isto à mesma célula, como fórmula.
     
  5. SwimmerBoy

    SwimmerBoy Folding Member

    Não dá para arrastar, porque as horas introduzidas não estão todas seguidas, saltam bastante.

    Acerca da macro, eu consegui fazer uma macro que realmente muda o valor da célula, mas quando tento correr a macro para todas as outras células, ele altera-me o valor inicial da célula.

    Ou seja, faço a macro para A4, ela corre bem naquela célula, mas se for correr a macro numa célula que tenha F10, já não vai "escrever" o "horas!F10", escreve "horas!XXX" sendo que XXX deixa de ser o valor que lá estava e passa a ter um que nada tem a ver...
     
  6. dreamerboy

    dreamerboy Power Member

    Tenta com esta macro.

    Se usares numa célula vazia ou com dados que não sejam do tipo ColunaLinha já sabes que vai dar erro, mas até para isso é possível arranjar código.
     
  7. SwimmerBoy

    SwimmerBoy Folding Member

    Porreiro, já faz qualquer coisa...

    Em vez de ser a ActiveCell, é possivel ser um conjunto de células que tenha seleccionado?

    Ou seja, selecciono uma série de células (2 colunas e algumas linhas) e ao carregar na macro, ele mudava tudo?

    Melhor do que isso, era correr a macro e automaticamente fazer a alteração de B2 até C20...
     
    Última edição: 18 de Novembro de 2008
  8. dreamerboy

    dreamerboy Power Member

    ou então:
    Isto podia tar melhor, em vez de copiar a formula copiar o valor, ficava mais correcto. Mas a esta hora tou cheio de sono :P
     
  9. Zylmhuin VII

    Zylmhuin VII Power Member

    Isso funciona?

    É que o Bcell.Value é mesmo o valor que lá está.

    Deve ser necessário tirar o Bcell.Formula e retirar o '='.

    Deste género:
     
  10. SwimmerBoy

    SwimmerBoy Folding Member

    Se te lembrares de optimizações, avisa...

    Como posso fazer uma "macro certificada"?
     
  11. dreamerboy

    dreamerboy Power Member

    Solução melhorada:

    SwimmerBoy, para teres certificação terias que pagar a uma empresa que passe certificações, a verisign por exemplo, e mesmo assim quem quisesse usar as tuas macros teria que aceitar a certificação da verisign.
    Mais sobre o assunto -> http://www.excelsig.org/Tips/0409_digital_certificates.htm

    Zylmhuin VII:

    para o que ele quer funcionava.
    A célula de origem contem dados do tipo "A1" , "C4", "B11", por isso ao copiar o seu valor para a minha função não era preciso "limpar" o sinal de igual ( "=" ) porque não existia.
     
  12. SwimmerBoy

    SwimmerBoy Folding Member

    Estou a ter um problema com as macros, não me permite corre-las

    [​IMG][​IMG]

     
  13. SwimmerBoy

    SwimmerBoy Folding Member

    Acho que já ultrapassei o problema das macros mas a ultima macro só-me copia o valor e eu precisava mesmo que me copiasse a formula, como faz esta

    No entanto, tenho um problema. Deu-me erro e para fazer debug e apontou para a linha
    Só modificou a primeira célula
     
  14. Zylmhuin VII

    Zylmhuin VII Power Member

    Fui eu que percebi mal ;)


    A mim funciona bem...
     
  15. SwimmerBoy

    SwimmerBoy Folding Member

    O que fazes imediatamente antes de activares a macro? Seleccionas algo em particular?

    PS: acho que descobri... Penso que seja por ter algumas células vazias...

    tenho

    A4
    N8
    vazia
    N10

    Dá erro (manda fazer debug) e o ultimo N10, já não o faz :(
     
    Última edição: 18 de Novembro de 2008
  16. Zylmhuin VII

    Zylmhuin VII Power Member


    Experimenta:

    Retira o espaço ente o : e o D no Range!
     
  17. SwimmerBoy

    SwimmerBoy Folding Member

    Deu-me
    "compile error
    syntax error"
     
  18. Zylmhuin VII

    Zylmhuin VII Power Member

    My mistake, desculpa...

    Faltava o then!


    Sub Macro1()
    '
    '
    ' Keyboard Shortcut: Ctrl+q
    '
    For Each Bcell In Range("C9: D47")

    If len(Bcell.Value) >0 then
    Bcell.Formula = "=Horas!" & Bcell.Value
    End If

    Next Bcell

    End Sub
     
  19. SwimmerBoy

    SwimmerBoy Folding Member

    Run-time erroe '1004':
    Application-defined or object-defined error

    PS-Não tens de pedir desculpa, já ajudaste, continuas a ajudar, só posso agradecer...
     
  20. Zylmhuin VII

    Zylmhuin VII Power Member

    A mim dá-me isso quando tenho um célula que não tem um valor "correcto" para indicar a outra célula... tipo, ter lá "B" ou "1" em vez de "B1"...

    Confirma se todas as células têm um valor correcto ou estão vazias...
     

Partilhar esta Página