excel - 在单元格范围上强制 "F2"+"Enter"

标签 excel vba

我有一个 Excel 2010 工作表,其中包含用于将其他工作表中的数据复制到另一个工作表上的特定格式的宏。

数据副本,但我对保存日期或时间值的单元格范围的格式有疑问。

数据源自数据库提取,所有内容均为文本格式。在我的工作表中,当我复制日期(通过 VBA)时,我对日期应用格式 "yyyy-mm-dd" ,对日期应用格式 "hh:mm.ss.ss"次。

行数从来没有固定数量,因此我设置了 VBA 代码以将格式应用于单元格范围,例如:

AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row

shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"

并非该范围内的所有单元格都具有正确的格式,它们将显示为 15/04/2014 而不是 2014-04-15。如果我手动选择单元格并按 F2 然后按 ENTER 键,格式将根据我的需要显示。这种情况在整个范围内随机发生,并且可能有数千行,因此在每个行上手动按 F2+ENTER 遍历工作表是不切实际的。

我在互联网上查找,发现应该使用 VBA 自动执行 F2+ENTER 操作。

下面的代码是从更大的代码行中提取的,因此 Dim 语句等在实际副本中更靠前,但这应该显示我解决这个问题的方式,所以远。

Dim shAss As Worksheet
Dim AssDateLastRow As Long
Dim c As Range

'enter method to format 'Date Craftperson Assigned' and 'Time Craftperson Assigned' in   Assignments sheet
'column "C" and "D", to formats required by Archibus: date "yyyy-mm-dd", time  "hh:mm.ss.ss"
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
'ensure format is applied by forcing F2 edit of cell
For Each c In shAss.Range("C4:C" & AssDateLastRow).Cells
    c.Select
    SendKeys "{F2}", True
    SendKeys "{ENTER}", True
'Selection.NumberFormat = "yyyy-mm-dd"
Next

当我运行代码时,数据会复制到我的工作表中,但日期和时间仍采用混合格式。

通过 VBA 强制按 F2+ENTER 的尝试似乎没有做任何事情。如果手动完成,则可以正常工作。

下面是从工作表中的结果复制的数据示例

Work Request Code       Date Assigned       Time  Assigned
92926                   19/05/2014          14:30.00.00
92927                   19/05/2014          15:00.00.00
92928                   2014-05-19          15:15.00.00
92934                   2014-05-19          14:00.00.00
92527                   12/05/2014          07:30
92528                   12/05/2014          08:00
92804                   2014-05-12          16:15
92805                   2014-05-12          16:20.00.00

最佳答案

我使用这个简单的宏在当前选定的范围上应用F2 + Enter:

Sub ApplyF2()
    Selection.Value = Selection.FormulaR1C1
End Sub

关于excel - 在单元格范围上强制 "F2"+"Enter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24060831/

相关文章:

excel - 如何将一个 Excel 表 (ListObject) 中的多行追加到另一个表?

vba - 编译错误 : Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions

Excel VBA - 如何添加动态数组公式

excel - 如何自动为日历中当前月份的单元格着色

vba - VLOOKUP适用于不同的工作表

vb6 - 权限被拒绝使用 Excel 12.0 库和 VB6 打开 Excel 文件

vba - 根据日期锁定整行

vba - 运行时错误 '13' 在用户窗体中使用 .Find 函数时类型不匹配

linux - 转换和下载地理空间数据

sql - 如果选中复选框则更新记录