我通过移动偏移的指定行来解决问题。
它抛出了需要一个Object的Error 424。 我使用所选范围设置了rng2,但是当我尝试将其向上移动时,错误就会进入。
我基本上需要当87行中的区域找到一个空单元格时将其删除,以便带有该信息的标签可以上升。
只是
到
谢谢你的时间!
app080
答案 0 :(得分:0)
您不能With rng
For i = .Rows.Count To 1 Step -1
If .Item(i) = "" Then
set tmp=rng2
tmp.Delete Shift:=xlUp
End If
Set rng2 = rng2.Offset(-1)
Next i
End With
之前已删除的范围。试试这个(未经测试,我正在智能手机上回答):
rng2.offset(-1)
.select
(第二个参数,0,是可选的)不应该在if子句中。
在删除范围之前,也不需要Sub rowOffset()
Dim rng As Range, row As Range, i%
Set rng = [c37:n85]
For i = rng.Rows.Count To 1 Step -1
Set row = rng.Rows.Item(i)
If row.Range("a1") = "" Then row.Delete shift:=xlUp
Next i
End Sub
范围。实际上,将此步骤保留可以提高脚本的性能。
修改强>:
好吧,正如@Matto非常正确地指出的那样,我以前的解决方案仍然无效。所以我再看看它并修改整个子,如下所示:
Option Explicit 'Generic Module
Public Const WS1_MEM_RNG = "C5,J5,R5" 'Sheet1 memory cells
Public prevWs1Vals As Object
Public Sub SetPreviousWS1Vals()
Dim c As Range
For Each c In Sheet1.Range(WS1_MEM_RNG).Cells
If Len(c.Value2) > 0 Then prevWs1Vals(c.Address) = c.Value2
Next
End Sub
我认为无论如何这都是短的......并且它的工作原理(已测试)。
答案 1 :(得分:0)
您的代码错误的原因是因为rng2.Delete ...
rng2
不再指向有效范围(因为您刚删除它)。
那说更好的方法是首先确定要删除的范围,然后一次删除它。
这样的事情(假设你的第一个数据在B栏)
Sub Demo()
Dim r1 As Range, r2 As Range
With ThisWorkbook.ActiveSheet
' Find Total row
' assumes there is no other data below the table in Column B
Set r2 = .Cells(.Rows.Count, 2).End(xlUp).Offset(-2, 0)
If IsEmpty(r2) Then
' Find the last row of data
Set r1 = r2.End(xlUp).Offset(1, 0)
.Range(r1, r2).EntireRow.Delete
End If
End With
End Sub
答案 2 :(得分:0)
Pembelian
.find({})
.populate('dp')
.populate('pelunasan')
.populate('supplier')
.populate('produk')
.populate('komisi')
.exec((err, dataPembelian) => {
function filter() {
let result = []
for (pembelian of dataPembelian) {
result.push(pembelian.produk.map(
o => Object.assign(
o, {
"transaksi": o["transaksi"].filter(o => {
console.log(o)
console.log('\nSEPARATOR\n')
console.log("THIS PEMBELIAN ID: " + o.pembelian)
console.log("LOOPING ID: " + pembelian._id)
console.log("THE CONDITION")
console.log(pembelian._id.toString() == o["pembelian"])
return pembelian._id.toString() == o["pembelian"]
})
}
)
))
}
return result
}
res.json(filter())
})
将为您提供要删除的第一行中的第一个单元格。
然后
Range(“C35”).End(xlDown).Offset(1,0)
将在您要删除的区域中为您提供右下角的单元格。
因此,将这两个单元格设置为变量(例如cell1和cell2)。 然后:
Range(“C35”).End(xlToRight).End(xlDown).End(xlDown).Offset(-2,0)
会让你知道结果。