作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为一只正在学习新(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
在代码之前确保声明所有变量。 (也许你已经有了这个,我不知道。你的代码的开头似乎丢失了。)Thisworkbook
或 Set
对它的引用),否则将假定它是代码执行时处于事件状态的工作簿。Sheets
可以引用常规工作表和图表,而 Worksheets
只能引用工作表。因此,最好明确地使用Worksheets
。 .关于Excel Range 不太笨拙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683704/
如果这是一个非常普遍的问题和/或我遗漏了一些非常明显的问题,我很抱歉。我的目标是让我的背景在整个屏幕上拉伸(stretch),同时仍然与页面的其余部分一起滚动。我现在的代码实现了这一点,但并非没有严重
我是一名优秀的程序员,十分优秀!