我正在尝试选择特定范围的数据,并仅删除我标识的单元格,而不是整个行。
我已经包含了当前的编码。我正在尝试选择指示单元格左侧的所有内容,删除范围,然后将所有单元格向上移动。我无法输入特定范围(例如Range(“ 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)。
谢谢。
答案 0 :(得分:0)
我不能为你写它。但是请考虑使用此技术,因为您似乎是手动执行此操作。 Application.Inputbox是一个内置的用户窗体,它会暂停代码执行,直到您查看范围/自行选择为止。
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
您可以通过对范围进行更多研究来弄清楚这一点。如果您选择此答案,则将有一个手动处理异常的界面,由于在我看来您似乎有点眼花eye乱,因此在实际使用中可能会从中受益。
答案 1 :(得分:0)
我认为这就是您要寻找的。选择任何单个单元格时,此行代码将选择从A列和活动行到活动行+ 1的范围。
ThisWorkbook.Sheets("Sheet1").Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, ActiveCell.Column + 1)).Delete