如何使用if条件修复宏

时间:2019-05-13 13:04:56

标签: excel vba

尝试在VBA中使用此功能无效会产生错误 列包含这样的

Aero 1.0
3/24/2019 2:38:08 PM
3/18/2019 2:30:40 AM
3/17/2019 4:06:46 PM
3/11/2019 12:03:20 AM
3/5/2019 9:11:53 AM
3/4/2019 1:20:56 AM
3/3/2019 3:58:11 PM
2/24/2019 3:43:24 PM
Affleck 1.0
3/24/2019 2:38:19 PM
3/18/2019 2:30:52 AM
3/17/2019 4:06:56 PM
3/11/2019 12:03:31 AM

在excel中有效

=IF(OR(RIGHT(A5,2)="PM",RIGHT(A5,2)="AM"),F4,A5)

我需要放入宏。

这是为了自动化

IF(OR(RIGHT(A5,2)="PM",RIGHT(A5,2)="AM"),F4,A5)

这是我的编码

Sub folderMerge()

    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim LastRow As Long
    Dim oldfolderpath As String
    oldfolderpath = "C:\Users\dhason\Desktop\GPLM\master.xlsm"
    Dim fol As Folder
    Set fol = fso.GetFolder("C:\Users\dhason\Desktop\GPLM\")
    Dim Postmeridian, Postmeridian, Platform As String
    Postmeridiem = "PM"
    Antemeridiem = "AM"
    For Each fil In fol.Files
    Workbooks.Open fil.Path
    For Each ws In Worksheets
         ws.Activate
         With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
     End With
      Range("f4").Value = "Platform"
     Range("g4").Value = "Date"
     Range("h4").Value = "ODM"
     Range("i4").Value = "date value"
      Range("i5").Formula = "=datevalue(a5)"
     Range("f5").Formula = "=IF(OR(RIGHT((RANGE(A5,2).Value=PM), 
       (RIGHT(RANGE(A5,2)).VALUE=AM)),F4,A5)"
    Range("g5").Formula = "=LEFT(RC[-6],9)" ' second filling
        Range("g5", "g" & LastRow).Select
    Range("g5").Copy
    Range("g5:g" & LastRow).Select
    ActiveSheet.Paste
        c = InStr(Range("A1").Value, " ") 'third filling
    Range("h5").Value = Left(Range("A1"), c)
    Range("A6").Select
    Selection.End(xlToRight).Select
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlDown)).Select        
    Range("A2", Range("A2").End(xlDown).End(xlToRight)).Copy
        If ThisWorkbook.Worksheets(1).Range("A2").Value = "" Then
        ThisWorkbook.Worksheets(1).Range("A2").PasteSpecial xlPasteAll
        Else
        ThisWorkbook.Worksheets(1).Range("A1").End(xlDown).Offset(1, 
 0).PasteSpecial xlPasteAll
        end If
        Next
Next
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
wb.Close True
End If
Next
End Sub

0 个答案:

没有答案