excel - VBA - 绕过剪贴板传输(除了值)
问题描述
我在脚本中有以下代码。
我的问题是,在wb.ws.range
我的某些列中包含诸如 00100 之类的数字。这些值被复制为 100 而不是 00100。
我怀疑这很简单......但在任何地方都找不到答案
With wb.ws.Range(Range( _
Range("A3"), _
Range("A3").End(xlDown) _
), _
Range( _
Range("R3"), _
Range("R3").End(xlDown) _
) _
.End(xlToRight) _
)
Mwb.Mws.Cells(1, 1).Resize(.Rows.Count, .Columns.Count) = .Value2
End With
解决方案
按赋值复制值
- 调整常量部分中的值。
- 这包括如何获取(创建对)相关范围的引用,如何将数字格式更改为文本(对于整个范围),以及如何删除(
ClearContents
)目标工作表相关列中可能剩余的旧数据. - 请随时在下面的评论中询问其他详细信息。
Option Explicit
Sub copyValuesByAssignment()
Const sName As String = "Sheet1"
Const sCols As String = "A:R"
Const sFirstRow As Long = 3
Const dName As String = "Sheet2"
Const dFirst As String = "A1"
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim srg As Range
With wb.Worksheets(sName).Columns(sCols).Rows(sFirstRow)
Dim sCell As Range
Set sCell = .Resize(.Worksheet.Rows.Count - .Row + 1) _
.Find("*", , xlFormulas, , xlByRows, xlPrevious)
If sCell Is Nothing Then Exit Sub
Set srg = .Resize(sCell.Row - .Row + 1)
End With
Dim srCount As Long: srCount = srg.Rows.Count
With wb.Worksheets(dName).Range(dFirst).Resize(, srg.Columns.Count)
.Resize(srCount).NumberFormat = "@" ' or just for some columns?
.Resize(srCount).Value = srg.Value
.Resize(.Worksheet.Rows.Count - .Row - srCount + 1) _
.Offset(srCount).ClearContents
End With
End Sub
推荐阅读
- winapi - 如何使 Windows 复选框在单击时起作用?
- capacitor - Ionic 3 电容器 Android 构建网络不是原生的
- database - 由于 adobe flash player 生命周期结束,无法通过 Web 浏览器访问 Oracle 18c XE
- sequelize.js - 从谷歌云功能运行 npm 命令
- java - 如何使用 pyjnius 在我的 android kivy 应用程序中集成指纹认证
- css - 如何避免图像扩展我的 html 宽度和高度
- c# - C# 中用于启动 .exe 的计时器
- python - Pandas groupby 削减总和
- c++ - std::optional 不编译
- macos - 如何在 MacOS 的 SwiftUI 中向 TextFields 添加建议(参见下面的 gif)?