gpt4 book ai didi

Excel Range 不太笨拙

转载 作者:行者123 更新时间:2023-12-02 21:16:59 25 4
gpt4 key购买 nike

作为一只正在学习新(Excel VBA)技巧的老狗(73 岁),我对将下面的代码组合在一起感到相当满意。但我认为它可以更干净。你会如何编码?

Dim thisDate As Double  'start timestamp
thisDate = Now()
With Sheets("Pressure Log")
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row 'populate next row with date/time
.Range("B" & lastRow + 1 & ":G" & lastRow + 1).Borders.LineStyle = xlContinuous
.Range("B" & lastRow).Offset(1) = Format(thisDate, "dddd")
.Range("B" & lastRow).Offset(1, 1) = Format(thisDate, "mm/dd/yyyy")
.Range("B" & lastRow).Offset(1, 2) = Format(thisDate, "hh:mm AM/PM")
.Range("B" & lastRow).Offset(1, 3).Select 'position for data
End With
End Sub

最佳答案

我认为这种性质的问题适合 CodeReview。您可能会在那里得到更好的回应。

我不确定我的版本一定更好:

Option Explicit

Private Sub AddCurrentDateTimeAfterLastRow()
Dim thisDate As Double
thisDate = Now()

With ThisWorkbook.Worksheets("Pressure Log")
Dim lastRow As Long
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row

Dim outputArray() As Variant
ReDim outputArray(1 To 3)

outputArray(1) = Format(thisDate, "dddd")
outputArray(2) = Format(thisDate, "mm/dd/yyyy")
outputArray(3) = Format(thisDate, "hh:mm AM/PM")

With .Cells(lastRow + 1, "B").Resize(1, UBound(outputArray))
.Borders.LineStyle = xlContinuous
.FormulaLocal = outputArray
.Parent.Parent.Activate
.Parent.Activate
.Cells(1, 3).Select
End With
End With
End Sub
  • 输入Option Explicit在代码之前确保声明所有变量。 (也许你已经有了这个,我不知道。你的代码的开头似乎丢失了。)
  • 限定工作簿(例如 ThisworkbookSet 对它的引用),否则将假定它是代码执行时处于事件状态的工作簿。
  • 我的理解是Sheets可以引用常规工作表和图表,而 Worksheets只能引用工作表。因此,最好明确地使用Worksheets。 .
  • 由于您希望宏(在末尾)选择单元格,因此工作表和工作簿(包含单元格)在选择时处于事件状态非常重要。否则,您可能会遇到错误。
  • 我将您的日期、日期、时间放入一个数组中,然后将该数组写入工作表中。我只是认为数组元素分配更短、更清晰(便于阅读和维护)。

关于Excel Range 不太笨拙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com