VBA - Preencher célula se a célula adjacente não estiver vazia

1

Eu criei uma macro que abre e edita pastas de trabalho do Excel para mim.

Em primeiro lugar, adiciona uma nova coluna A e, em seguida, altera o título para A1, B1, C1, D1.

Depois disso, desejo criar algum tipo de fórmula / loop no VBA que adicione um texto (31/12/2014) neste caso a cada célula em A, mas somente se houver texto no arquivo adjacente célula à direita RC [1].

Alguém tem uma ideia de como devo editar o código indicado do meu VBA para realizar isso?

Não é tão importante, mas gostaria que essa data fosse alterada por meio da minha planilha de excel. Existe uma maneira fácil de fazer isso quando eu fiz isso usando Range ("E7"). Valor (e editado E7). A formatação estava fora em todas as minhas outras pastas de trabalho.

Sub test()


Dim MyPath          As String
Dim MyFile          As String
Dim Wkb             As Workbook
Dim Cnt             As Long

Application.ScreenUpdating = False

'MyPath = "G:\SHARED\Style Research\Portfolios - Macro Test"
MyPath = Range("D6").Value

If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"

MyFile = Dir(MyPath & "*.xls")

Cnt = 0
Do While Len(MyFile) > 0
    Cnt = Cnt + 1
    Set Wkb = Workbooks.Open(MyPath & MyFile)
    Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.Insert

'this is the part I'm referring to
    Wkb.Worksheets("Sheet1").Range("A1:A250") = "31/12/2014"
    'Range("D7").Value

    'Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.NumberFormat = "DD/MM/YYYY"
    Wkb.Worksheets("Sheet1").Range("A1") = "Date"
    Wkb.Worksheets("Sheet1").Range("B1") = "Identifier"
    Wkb.Worksheets("Sheet1").Range("C1") = "Name"
    Wkb.Worksheets("Sheet1").Range("D1") = "%"

    Wkb.Close savechanges:=True
    MyFile = Dir
Loop

If Cnt > 0 Then
    MsgBox "Completed...", vbExclamation
Else
    MsgBox "No files were found!", vbExclamation
End If

Application.ScreenUpdating = True

End Sub
    
por Ewldh20 05.02.2015 / 11:23

1 resposta

0

Isso é bem simples, use uma condição for loop com if como essa -

Sub test()
For Each c In Range("A:A")
 If c <> 0 And c.Offset(, 1) <> 0 Then
     c.Value = 1
 End If
Next
End Sub

Você pode alterar o intervalo para ajustar seus dados ou pode tentar obter o usedrange . Eu não entendo muito bem sua segunda parte.

    
por 05.02.2015 / 13:30