Preencher o valor padrão para uma célula com base em outro conteúdo de célula

0

Nós usamos uma planilha como nossos cartões de tempo. O modelo é armazenado em um servidor com links para ele nos desktops do indivíduo.

Estou tentando descobrir o código VB que ajudaria a obter o sinal: quando a célula para nome de usuário (B5) estiver em branco, o código preencherá a data do próximo domingo em (B7). Após o usuário digitar seu nome em B5, o valor de B7 não deve ser alterado.

Se eu usar a fórmula ( =IF(B5="",TODAY()+8-WEEKDAY(TODAY()),B7) ) em B7, preciso ativar a referência circular, que não segue o modelo da planilha, causando erros para cada indivíduo.

A empresa diz que a planilha precisa estar no Excel, por causa do software de importação. Caso contrário, usaria o Word e usaria a função "CreateDate" para obter o mesmo.

Eu tenho tentado aprender VB para fazer isso, mas eu esperava que algum especialista pudesse ajudar o código em 5 min. plano e deixe-me dissecá-lo.

    
por Dan LaMoreaux 22.08.2014 / 04:52

1 resposta

0

Você pode usar o procedimento Auto_Open , que é executado automaticamente toda vez que uma pasta de trabalho é aberta. Inicie o editor do VBA ( ALT + F11 ), insira um novo módulo VBA e copie-o após o código abaixo. É seguro e você está pronto para ir.

O código se parece muito com a fórmula que você já tinha:

Sub Auto_Open()
    Const Sheetname = "Sheet1"
    Const NameCell = "B5"
    Const DateCell = "B7"

    If IsEmpty(Worksheets(Sheetname).Range(NameCell).Value) Then
        Worksheets(Sheetname).Range(DateCell).Value = Date + 8 - Weekday(Date)
    End If
End Sub
    
por 22.08.2014 / 13:51