Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何更改单元格';它后面的s代码';已使用VBA在Excel中移动_Date_Excel_Vba - Fatal编程技术网

Date 如何更改单元格';它后面的s代码';已使用VBA在Excel中移动

Date 如何更改单元格';它后面的s代码';已使用VBA在Excel中移动,date,excel,vba,Date,Excel,Vba,我有一个在帮助下编写的Excel VBA脚本,在编码方面我不是新手,但到目前为止,Excel VBA对我来说是一个砷的噩梦,包裹在MS销售的糖丸中,是一种易于学习的语言 好的,请让开,对不起,我离题了 以下是完整的脚本: Option Explicit Sub tgr() Dim wsB As Worksheet 'BackOrder Dim wsJ As Worksheet 'Jobs List Dim wsA As Worksheet 'Archive D

我有一个在帮助下编写的Excel VBA脚本,在编码方面我不是新手,但到目前为止,Excel VBA对我来说是一个砷的噩梦,包裹在MS销售的糖丸中,是一种易于学习的语言

好的,请让开,对不起,我离题了

以下是完整的脚本:

Option Explicit

Sub tgr()

    Dim wsB As Worksheet 'BackOrder
    Dim wsJ As Worksheet 'Jobs List
    Dim wsA As Worksheet 'Archive
    Dim LastRow As Long

    Set wsB = Sheets("BackOrder")
    Set wsJ = Sheets("Jobs List")
    Set wsA = Sheets("Archive")

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

    With Intersect(wsJ.UsedRange, wsJ.Columns("N"))
        .AutoFilter 1, "<>Same"
        With Intersect(.Offset(2).EntireRow, .Parent.Range("B:L"))
            .Copy wsA.Cells(Rows.Count, "B").End(xlUp).Offset(1)
            .EntireRow.Delete
        End With
        .AutoFilter
    End With

    LastRow = wsB.Range("B6").End(xlDown).Row
    wsB.Range("P5:Q5").Copy wsB.Range("P6:Q" & LastRow)
    Calculate
    wsB.UsedRange.Copy Sheets.Add.Range("A1")

    With Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns("Q"))
        .AutoFilter 1, "<>Different"
        .EntireRow.Delete
        With .Parent
            .AutoFilterMode = False
            Intersect(.UsedRange, .Columns("G")).Cut .Range("F1")
            Intersect(.UsedRange, .Columns("H")).Cut .Range("G1")
            Intersect(.UsedRange, .Columns("L")).Cut .Range("H1")
            Intersect(.UsedRange, .Columns("N")).Cut .Range("I1")
            Intersect(.UsedRange, .Range("B:J")).Copy wsJ.Cells(Rows.Count, "B").End(xlUp).Offset(1)
            .Delete
        End With
    End With

    LastRow = wsJ.Cells(Rows.Count, "B").End(xlUp).Row
    wsJ.Range("M1:T1").Copy
    wsJ.Range("B3:I" & LastRow).PasteSpecial xlPasteFormats
    wsJ.Range("U1:W1").Copy wsJ.Range("J3:L" & LastRow)
    wsJ.Range("X1:Y1").Copy wsJ.Range("M3:N" & LastRow)

    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With

End Sub
选项显式
副秘书长()
将wsB调整为工作表的延期订单
将华尔街日报作为工作表的工作列表
将wsA作为工作表存档
最后一排一样长
设置wsB=工作表(“延期订单”)
设置wsJ=工作表(“作业列表”)
设置wsA=工作表(“存档”)
应用
.ScreenUpdate=False
.DisplayAlerts=False
.EnableEvents=False
.Calculation=xlCalculationManual
以
带Intersect(wsJ.UsedRange,wsJ.Columns(“N”))
.自动筛选1,“相同”
具有相交(.Offset(2).EntireRow.Parent.Range(“B:L”))
.Copy wsA.Cells(Rows.Count,“B”).End(xlUp).Offset(1)
.EntireRow.Delete
以
.自动过滤器
以
LastRow=wsB.Range(“B6”).End(xlDown).Row
wsB.Range(“P5:Q5”)。复制wsB.Range(“P6:Q”和LastRow)
算计
wsB.UsedRange.Copy Sheets.Add.Range(“A1”)
使用Intersect(ActiveSheet.UsedRange、ActiveSheet.Columns(“Q”))
.自动筛选1,“不同”
.EntireRow.Delete
和父母在一起
.AutoFilterMode=False
相交(.UsedRange、.Columns(“G”)).Cut.Range(“F1”)
相交(.UsedRange,.Columns(“H”)).Cut.Range(“G1”)
相交(.UsedRange,.Columns(“L”)).Cut.Range(“H1”)
相交(.UsedRange,.Columns(“N”)).Cut.Range(“I1”)
相交(.UsedRange,.Range(“B:J”))。复制wsJ.Cells(Rows.Count,“B”)。结束(xlUp)。偏移量(1)
.删除
以
以
LastRow=wsJ.Cells(Rows.Count,“B”).End(xlUp).Row
华尔街日报。范围(“M1:T1”)。副本
范围(“B3:I”和LastRow).Paste特殊的XLPaste格式
wsJ.Range(“U1:W1”)。复制wsJ.Range(“J3:L”和LastRow)
wsJ.Range(“X1:Y1”)。复制wsJ.Range(“M3:N”和LastRow)
应用
.Calculation=xlcalculation自动
.EnableEvents=True
.DisplayAlerts=True
.ScreenUpdate=True
以
端接头
正如您所看到的,这是一个三页的脚本、延迟订单、作业列表和归档,我需要做的是归档。J&K中列中的单元格使用TODAY()来告诉脚本的其余部分何时在F列中的单元格中查看它提前或延迟了多少天

J列显示较早,K列显示较晚

J列的脚本是:

=IF(F3-TODAY()<0,"",F3-TODAY())
=IF(TODAY()-F3<1,"",TODAY()-F3)

=IF(F3-TODAY()您混淆了工作表函数和VBA函数。虽然我认为VBA是最差的版本,但您过早地停止了您的咆哮

通过用户界面,我可以转到单元格A1并键入“4apr12”。Excel将其识别为日期,将值存储为41003,并将格式设置为“dd mmm yy”,这是最接近我键入的标准格式

或者,我可以键入“41003”,然后转到“格式”菜单,选择或输入我选择的日期格式

另一种选择是键入“=TODAY()”。Excel将值存储为“=TODAY()”,但由于前导的等号,它在输入时将其作为表达式进行计算,并将值显示为标准日期(在英国,格式为dd/mm/yy)并在打开和保存工作簿时,以及在通过“计算”选项通知时,重新计算表达式

VBA函数是不同的。即使它们做相同的事情,它们的名称也往往不同。与今天()最接近的等价物是Now()。此函数以数字形式返回当前日期和时间。整数部分是1900年1月1日起的天数;小数部分是(自午夜起的秒数)/(一天中的秒数).所以在今天中午,Now()会返回“41003.5”。这是一个数字;我可以将它乘以2,减去5000或其他数字

使用VBA,我可以执行:

Range("A1").Value = "4apr12"
Range("A1").Value = 41003.5
Excel将其识别为日期,就像我从用户界面键入的一样

或者,我可以执行:

Range("A1").Value = "4apr12"
Range("A1").Value = 41003.5
这只是一个数字,将存储并显示为41003.5

如果我想将其显示为日期,我必须执行:

With Range("A1")
  .Value = 41003.5
  .NumberFormat = "dd mmm yy"
End With
该值仍保存为41003.5,但我已告诉Excel将其显示为4月12日

我可以执行:

Range("A1").Value = "=TODAY()"
这就像我从接口中键入了这个公式一样

但假设我执行:

With Range("A1")
  .Value = Now()
  .NumberFormat = "dd mmm yy"
End With
Now()以数字形式返回当前日期和时间。Excel将其存储为数字,但显示为日期,因为我已告诉它。它永远不会重新计算,因为它是一个简单的数值,而不是涉及函数的表达式


我希望您能理解这一点,并帮助您了解工作表函数和VBA函数之间的差异。Excel和VBA就像是学习驾驶汽车。第一次您知道您永远无法同时完成所有这些不同的事情。然而,一两个月后,您却在玩踏板、齿轮和变速箱我不明白为什么人们认为拍你的头和揉你的胃是件大事。我能说的是,雾会很快消失,VBA会有意义的。

你把工作表函数和VBA函数搞混了。虽然我认为nk Word VBA是最差的版本

通过用户界面,我可以转到单元格A1并键入“4apr12”。Excel将其识别为日期,将值存储为41003,并将格式设置为“dd mmm yy”,这是最接近我键入的标准格式

或者,我可以键入“41003”,然后转到“格式”菜单,选择或输入我选择的日期格式

另一种选择是键入“=TODAY()”。Excel将值存储为“=TODAY()”,但由于前导的等号,它会计算