vba - Excel 仅粘贴特殊值忽略目标格式

标签 vba excel excel-2016

我有一个相当简单的 vba 脚本,它将转置值从工作表中的一个范围复制到另一个范围,以下是相关代码:

wb.ActiveSheet.Range("D2", "D32").Copy
cwb.ActiveSheet.Range("B10").PasteSpecial Paste:=xlPasteValues, Transpose:=True

源范围是未格式化的文本(对此无法控制),但它是时间(xx:xx),而目标则适本地预先格式化为时间(xx:xx) )

目标范围中的值似乎被视为纯字符串,而不是根据指定的规则进行格式化。一旦我选择一个单元格并按 Enter 键,就会应用格式。

当我在 vba 中粘贴范围时如何触发相同的行为? 不应要求用户确认每个单元格。

我应该补充一点,这也会导致一些计算失败,因为要超越这些并不是数字。

最佳答案

在您的情况下,常规的复制>>粘贴特殊将不起作用,您需要将以字符串输入的时间转换为时间格式,这实际上是一个十进制值0 到 1。您可以使用 TimeValue 函数来实现。

因此,您需要将 Set 一个 CopyRng 对象设置为要复制的范围,并循环遍历它,每个单元格都使用 TimeValue code> 将字符串转换为时间格式。

代码

Dim CopyRng As Range
Dim i As Long

Set CopyRng = wb.ActiveSheet.Range("D2", "D32") ' <-- I would try to avoid using Active Sheet

' loop through all cells in your range
For i = 1 To CopyRng.Cells.Count
    cwb.ActiveSheet.Range("B10").Offset(0, i - 1).Value = TimeValue(CopyRng.Cells(i, 1).Value)    
Next i

关于vba - Excel 仅粘贴特殊值忽略目标格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571477/

相关文章:

excel - 对特定工作簿禁用 Ctrl+D

vba - Excel VBA - 在工作表之间传输数据

mysql - VBA 与 MySQL 的连接问题 - 在宏顶部连接,但不在底部

vba - Access VBA - 在 Excel Sheet1 列 A 中搜索值并将相应的值放入 B 列?

java - 如何使用spring boot读取excel文件

excel - 在路径中间找到一个字符串

excel - 如何生成常规 Excel 公式作为查询结果?

excel - 如何使 Microsoft Web 浏览器对象在 Excel 2016 中工作

mysql - 在数据透视表旁边添加复选框,这些复选框将添加到数据透视表中的最后一行信息

vba - 将标题从 Word 提取到 Excel