none
Planilha do excel de apontamento de horas

    Question

  • Bom dia Galera.

    Estou precisando de uma ajuda de vcs.

    Criei uma planilha que lanço as minhas horas trabalhadas, com algumas macros.

    A 1° macro chamei de “nova_planilha_mes”, ao clicar nesta macro é exibido:

    • Meu nome
    • Ano
    • Etc.

     

    Pergunta:

    Na célula “Ano” eu uso a formula ” =ANO()” e formato a célula como número para exibir o ano EX:2012, salvo a planilha quando eu reabro ela tenho que configurar novamente pois a célula fica como “#NOME?”

    Segue abaixo a programação:

    Sub Macro1()
    '
    ' Macro1 Macro

        Range("I2").Select
        ActiveCell.FormulaR1C1 = "APONTAMENTO DE HORAS"
        With ActiveCell.Characters(Start:=1, Length:=20).Font
            .Name = "Calibri"
            .FontStyle = "Regular"
            .Size = 20
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        Range("I2").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Range("A3").Select
        ActiveCell.FormulaR1C1 = "Nome"
        Range("B3").Select
        ActiveCell.FormulaR1C1 = "Felipe Duran de Aquino"
        Range("A4").Select
        ActiveCell.FormulaR1C1 = "Ano/Mês"
        Range("B4").Select
        ActiveCell.FormulaR1C1 = "=NOW()"
        Range("B4").Select
        ActiveCell.FormulaR1C1 = "=ANO(M7)"
        Range("B4").Select
        Selection.NumberFormat = "m/d/yyyy"
        Range("A5").Select
        ActiveCell.FormulaR1C1 = "Data"
        Range("B5").Select
        ActiveCell.FormulaR1C1 = "Entrada"
        Range("C5").Select
        ActiveCell.FormulaR1C1 = "Almoço"
        Range("D5").Select
        ActiveCell.FormulaR1C1 = "Volta"
        Range("E5").Select
        ActiveCell.FormulaR1C1 = "Extra"
        Range("F5").Select
        ActiveCell.FormulaR1C1 = "Saída"
        Range("G5").Select
        ActiveCell.FormulaR1C1 = "Timesheet"
        Range("G5").Select
        Selection.ClearContents
        ActiveCell.FormulaR1C1 = "Jornada"
        Range("H5").Select
        ActiveCell.FormulaR1C1 = "TimeSheet"
        Range("I5").Select
        ActiveCell.FormulaR1C1 = "Observação"
        Range("J5").Select
        
    End Sub

     

     

     

     

     

     



    Monday, February 13, 2012 12:53 PM

Answers

  • Felipe,

    O problema é simples de resolver:

     A formula ano no VBA é: year (em inglês mesmo)

    Quando fazermos referencia às celulas dentro do VBA, com algumas exceçoes, como por exemplo o Range, nós usamos a referência R[]C[]

    Então, no seu exemplo, deve ficar assim:

    Sub Macro1()
    '
    ' Macro1 Macro


        Range("I2").Select
        ActiveCell.FormulaR1C1 = "APONTAMENTO DE HORAS"
        With ActiveCell.Characters(Start:=1, Length:=20).Font
            .Name = "Calibri"
            .FontStyle = "Regular"
            .Size = 20
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        Range("I2").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Range("A3").Select
        ActiveCell.FormulaR1C1 = "Nome"
        Range("B3").Select
        ActiveCell.FormulaR1C1 = "Felipe Duran de Aquino"
        Range("A4").Select
        ActiveCell.FormulaR1C1 = "Ano/Mês"
        Range("B4").Select
        ActiveCell.FormulaR1C1 = "=NOW()"
        Range("B4").Select
        ActiveCell.FormulaR1C1 = "=YEAR(R[3]C[11])"
        Range("B4").Select
        Selection.NumberFormat = "m/d/yyyy"
        Range("A5").Select
        ActiveCell.FormulaR1C1 = "Data"
        Range("B5").Select
        ActiveCell.FormulaR1C1 = "Entrada"
        Range("C5").Select
        ActiveCell.FormulaR1C1 = "Almoço"
        Range("D5").Select
        ActiveCell.FormulaR1C1 = "Volta"
        Range("E5").Select
        ActiveCell.FormulaR1C1 = "Extra"
        Range("F5").Select
        ActiveCell.FormulaR1C1 = "Saída"
        Range("G5").Select
        ActiveCell.FormulaR1C1 = "Timesheet"
        Range("G5").Select
        Selection.ClearContents
        ActiveCell.FormulaR1C1 = "Jornada"
        Range("H5").Select
        ActiveCell.FormulaR1C1 = "TimeSheet"
        Range("I5").Select
        ActiveCell.FormulaR1C1 = "Observação"
        Range("J5").Select

    End Sub

    Espero ter ajudado!

    Thursday, February 23, 2012 1:41 PM