excel - 范围函数将数据发送到错误的行
问题描述
我正在尝试将数据添加到工作表中,虽然我知道我已经“正确”设置了 Range 函数(对于正确的值,包括“每隔一段时间工作一次”),而不是标记第 1 行,而是标记行2,并将第 2 行中的计算移至第 3 行。这仅是此工作表中此模块的问题。
我已经尝试过调试工具,但它们不会改变结果或在任何地方中断。第一行隐藏了,也没有冻结。无论我是否在范围调用之后附加“.value”,都会发生这种情况。
奇怪的是,第二组标签和计算(从“With Calcs.UsedRange”开始)最终出现在正确的单元格中。下面的代码:
Sub CalcGDD()
'Initialize
Dim nb As Workbook
Dim Clim, Vars, CC, Calc As Worksheet
Dim LRow, RowL As Long
'Setup
Set nb = ActiveWorkbook
Application.ScreenUpdating = False
Set Vars = nb.Sheets("Variables")
Set CC = nb.Sheets("CoverCrop")
Set Calcs = nb.Sheets("Summary")
Set Clim = nb.Sheets("Climate")
'Calculations in Climate Sheet
With Clim.UsedRange
LRow = Cells(Rows.Count, "A").End(xlUp).Row
.Range("H1") = "Plant Day"
.Range("I1") = "Harv Day"
.Range("J1") = "Fall GDDs"
.Range("K1") = "Spring GDDs"
.Range("H2:H" & LRow & "").FormulaR1C1 = (...calculations elided...)
End With
'Summarize
RowL = CC.Cells(Rows.Count, "A").End(xlUp).Row
With Calcs.UsedRange
.Range("A1") = "Year"
.Range("B1") = "Fall GDD"
.Range("C1") = "Spring GDD"
.Range("D1") = "Total GDD"
.Range("A2:A" & RowL & "").FormulaR1C1 = (...calculations elided...)
End With
End Sub
为什么 Range("H1") 打印到 H2 的任何想法?非常感谢。
解决方案
这.UsedRange
可能会抵消您的寻址。With
在两个语句中删除它。如果UsedRange
从第 2 行开始,则"A1"
in that range指的是该范围内的左上角单元格。如果您想写入绝对单元格地址A1
(即不相对于UsedRange
开始位置),请改用实际的工作表单元格。
'Calculations in Climate Sheet With Clim.UsedRange LRow = Cells(Rows.Count, "A").End(xlUp).Row
该Cells
呼吁隐含地与发生的任何ActiveSheet
事情背道而驰。Worksheet
使用您要使用的对象来限定它- 在这种情况下,很可能是With
块变量:
'Calculations in Climate Sheet
With Clim
LRow = .Cells(Rows.Count, "A").End(xlUp).Row
查看Rubberduck(我管理的免费、开源 VBIDE 插件项目)是否可以发现更多隐式 ActiveSheet 引用(以及代码中的其他潜在问题,例如这些隐式 Variant 变量:
Dim Clim, Vars, CC, Calc As Worksheet Dim LRow, RowL As Long
还:
无论我是否在范围调用之后附加“.value”,都会发生这种情况
这是因为如果未指定.Value
成员调用是隐式的。
推荐阅读
- java - 当程序知道所有手牌时,如何计算扑克手牌的百分比?
- html - 在 nodejs 中使用 multer
- javascript - d3.js 热图未正确显示数据
- flutter - Should codes be written before super.initState(); or after in Flutter?
- c# - 旋转手机时更改 CollectionView 的跨度不起作用
- python - 通过 ssh 远程运行 mkdir -p 会导致不是有效的本地路径或 glob 错误
- multithreading - Threads are freezing main form
- xamarin.forms - Dynamically hiding Xamarin Forms ListView item and setting the height of invisible item to 0 not working on iOS
- python - selenium and lxml - how to set html?
- swift - SKSpriteNode 在其物理体为动态时不会出现