我试图选择特定范围的数据,只删除我识别的单元格,而不是整行。
我已经包括了我目前的编码。我正在尝试将所有内容选择到指定单元格的左边,删除范围,并将所有单元格向上移动。我不能输入特定的范围。范围(“B3:B7”).delete等)因为范围将在整个代码中发生变化。我需要它是一个动态范围,它将随着代码的运行而改变。
Worksheets("Sheet1").Select
Cells(2, 6).Select
ActiveCell.Offset(0, 1).Select
col = ActiveCell.Column
row = ActiveCell.Row
Cells(row, col).Select
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
Range.Delete Shift:=xlToUp
如果你需要更多的信息,请告诉我。代码将一直运行到最后一行(Range.Delete)。
提前谢谢。
发布于 2020-01-14 19:42:14
我想这就是你要找的。当您选择任何单个单元格时,这一行代码将选择从A列和活动行到活动行上的活动列+1的范围。
ThisWorkbook.Sheets("Sheet1").Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, ActiveCell.Column + 1)).Delete
发布于 2020-01-14 18:47:33
我不能给你写。但是请考虑一下这种技术,因为您似乎是在手动完成此操作。Application.Inputbox是一个内置的userform,它暂停代码的执行,直到检查您自己选择的范围/工艺。
Dim xrng As Range
Dim rngholder As Range
Dim xArray(0 To 20) As Variant
Dim x As Integer
Set xrng = Application.Selection
Set xrng = Application.InputBox("Title", "Make a selection", xrng.Address, Type:=8)
x = 0
'If xrng = "" Then Exit Sub
For Each rngholder In ActiveSheet.Range(xrng.Address)
If rngholder.Value > "" Then
xArray(x) = VBA.Trim(rngholder.Value)
Else
End If
x = x + 1
Next rngholder
在这种情况下,Inputbox将加载活动单元格或在调用宏并将范围填充到数组时所选内容。在您可以自定义的地方,这是在行集中的'xrng =‘行上。我会把'set xrng =逻辑,以获得您所描述的选择,所以所有的东西向左,向上,并删除它。
编辑:
Set xrng = Range(ActiveCell, Range(ActiveCell.End(xlToLeft), ActiveCell.End(xlUp))).Select
你可以通过对范围进行更多的研究来解决这个问题。如果您选择了这个答案,您将有一个接口来手动处理异常,而且在我看来,这在某种程度上是用眼睛看的,这可能会使您在实际使用中受益。
https://stackoverflow.com/questions/59739814
复制相似问题