是否可以删除在VBA中选择的当前范围?

问题描述 投票:0回答:1

我正在尝试选择特定范围的数据,并仅删除我标识的单元格,而不是整个行。

我已经包含了当前的编码。我正在尝试选择所指示单元格左侧的所有内容,删除范围,并将所有单元格向上移动。我无法输入特定范围(例如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)。

提前感谢。

excel vba
1个回答
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

在这种情况下,输入框会加载活动单元格,或者在调用宏并将范围填充到数组中时所做的选择。您可以在customize上的这行设置为“ xrng =”行。我将使用'set xrng =逻辑来获取您所描述的选择,因此将所有内容都放在左侧,然后向上并删除。您可以通过对范围进行更多研究来弄清楚。如果您选择此答案,则将有一个手动处理异常的接口,并且由于在我看来您似乎有些眼花,乱,因此在实际使用中可能会从中受益。

© www.soinside.com 2019 - 2024. All rights reserved.