【发布时间】:2014-11-28 15:13:09
【问题描述】:
希望有人能指出为什么这不起作用。基本上通过vba在表的最后一行(Row41)插入新行,这会将最后一行向下推(在数据中创建一个间隙)然后最后一行值向上传输一行,因此空白行位于底部。
除了两个单元格值随机变化之外,现在这个过程工作正常,下面是之前和之后
之前:
- 细胞 (41,B) = 03/10/14
- 单元格(41,C) = 12345
- 单元格(41,E) = 3.00
- 单元格(41,F) = DD
之后:
- 细胞 (41,B) = 03/10/14
- 单元格(41,C) = 12345
- 单元格(41,E) = 41915
- 单元格(41,F) = 41915
我已经仔细检查了设定的范围,它们应该是,有什么想法吗?哦,对于代码,Specific_Tbl 变量是 2
'[Capture table First/Last row number]
int_FirstRow = .Cells(4, "AC").Offset(0, Specific_Tbl)
int_LastRow = .Cells(6, "AC").Offset(0, Specific_Tbl)
'[Insert Blank Row]
.Range("A" & int_LastRow & ":Z" & int_LastRow).Insert shift:=xlDown
'[Set Cell Ranges]
Select Case Specific_Tbl
Case 1
'[Remerge Description]
.Range(.Cells(int_LastRow, "E"), .Cells(int_LastRow, "H")).MergeCells = True
Set rng_Tmp1 = .Range("B" & int_LastRow & ":C" & int_LastRow & ",E" & int_LastRow & ":J" & int_LastRow)
Set rng_Tmp2 = .Range("B" & int_LastRow + 1 & ":C" & int_LastRow + 1 & ",E" & int_LastRow + 1 & ":J" & int_LastRow + 1)
Case 2, 3
Set rng_Tmp1 = .Range("B" & int_LastRow & ":C" & int_LastRow & ",E" & int_LastRow & ":F" & int_LastRow)
Set rng_Tmp2 = .Range("B" & int_LastRow + 1 & ":C" & int_LastRow + 1 & ",E" & int_LastRow + 1 & ":F" & int_LastRow + 1)
End Select
'[Transfer values and clear]
rng_Tmp1.Value = rng_Tmp2.Value
rng_Tmp2.ClearContents
【问题讨论】:
-
你有没有设置断点并单步执行代码?
-
嗨,PJ,是的,通过,一切正常,直到 rng_Tmp1.value = rng_Tmp2.value
-
嗨 pnuts,谢谢,我确实认为它来自日期,但我不明白为什么
-
谢谢PJ,不管是通过案例1,2还是3,结果都是一样的。在 value = value 范围是正确的,我通过即时窗口 rng_Tmp1 = $B$41:$C$41,$E$41:$F$41, rng_Tmp2 =$B$42:$C$42,$E 检查42 美元:42 美元。而且 pnuts 是正确的,它绝对是 B 列的日期被放入 E 和 F 列,我只是不明白为什么。
-
也许做一个分割范围 value = value 只是行不通,即使范围完全相同。