VBA:定义在if else条件下使用的相对范围

时间:2017-02-08 10:21:57

标签: excel-vba if-statement range relative vba

美好的一天

我有几个工作簿(> 100)我需要以相同的方式编辑,以便它们可以在不同的程序中使用 - 即从某个点(从头到尾)删除空白列并移动文本在左边,然后更改日期格式 - 我已经能够成功完成

但是,某些工作簿不包含需要编辑的日期,这会导致错误。

例如,某些工作簿将如下所示:

   A         B         C         D         E         F
    ------------------------------------------------------------
1   info    |           |        |        |       |
2   info    |           |        |        |       |
3   info    |           |        |        |       |
4   First   |           |        |        |       |
5           |  Data 1   |        |  Dates |       |   Data 2
6           |           |        |        |       |
7           |           |        |        |       |      
8           |           |        |        |       |
9           | Number dts|        |   0    |       |
10  Last    |           |        |

虽然其他人看起来像这样:

Option Explicit

Sub FixData()

Dim sPath As String
    Dim Wb As Workbook, sFile As String

    sPath = "C\:temp"

    sFile = Dir(sPath & "*.csv")

    Application.ScreenUpdating = False

    Do While sFile <> ""

        Set Wb = Workbooks.Open(sPath & sFile)

            Cells.Find(What:="Start", After:=ActiveCell, LookIn:= _
                xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
                xlNext, MatchCase:=False, SearchFormat:=False).Activate
            Range(Selection, Selection.End(xlDown)).Select
            ActiveCell.Range("A1:A12").Select
            Range(Selection, Selection.End(xlToRight)).Select
            Selection.SpecialCells(xlCellTypeBlanks).Select
            Selection.Delete Shift:=xlToLeft
            Selection.NumberFormat = "General"

            ActiveCell.Offset(0, -1).Range("A1").Select
            Cells.Find(What:="Dates", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate
            Selection.End(xlDown).Select
            Selection.End(xlDown).Select
            Range(Selection, Selection.End(xlDown)).Select
            ActiveCell.Range("A1:A2").Select
            Selection.NumberFormat = "General"

            'a condition needs to be added here to continue or end

            Selection.NumberFormat = "yyyy-mm-dd"
            ActiveCell.Columns("A:A").EntireColumn.AutoFit


        Wb.Close SaveChanges:=True

        sFile = Dir

    Loop

   Application.ScreenUpdating = True

End Sub

但是现在我想添加一个条件,其中日期数(第一个例子中的3个和第二个中的0个)用作继续日期格式的条件,或者结束子日期。所以如果0,结束,否则继续

我猜我需要进行搜索(对于数字dts),值始终是右边的第一个(ctrl-right)。但是 - 我不知道如何定义这个范围然后在一个条件下使用它?到目前为止,我需要编辑的代码如下:

{{1}}

任何帮助都将受到极大的赞赏!!

0 个答案:

没有答案