首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有方法删除在VBA中选择的当前范围?

是否有方法删除在VBA中选择的当前范围?
EN

Stack Overflow用户
提问于 2020-01-14 18:33:56
回答 2查看 857关注 0票数 0

我试图选择特定范围的数据,只删除我识别的单元格,而不是整行。

我已经包括了我目前的编码。我正在尝试将所有内容选择到指定单元格的左边,删除范围,并将所有单元格向上移动。我不能输入特定的范围。范围(“B3:B7”).delete等)因为范围将在整个代码中发生变化。我需要它是一个动态范围,它将随着代码的运行而改变。

代码语言:javascript
运行
复制
  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)。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-14 19:42:14

我想这就是你要找的。当您选择任何单个单元格时,这一行代码将选择从A列和活动行到活动行上的活动列+1的范围。

代码语言:javascript
运行
复制
 ThisWorkbook.Sheets("Sheet1").Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, ActiveCell.Column + 1)).Delete
票数 0
EN

Stack Overflow用户

发布于 2020-01-14 18:47:33

我不能给你写。但是请考虑一下这种技术,因为您似乎是在手动完成此操作。Application.Inputbox是一个内置的userform,它暂停代码的执行,直到检查您自己选择的范围/工艺。

代码语言:javascript
运行
复制
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 =逻辑,以获得您所描述的选择,所以所有的东西向左,向上,并删除它。

编辑:

代码语言:javascript
运行
复制
Set xrng = Range(ActiveCell, Range(ActiveCell.End(xlToLeft), ActiveCell.End(xlUp))).Select

你可以通过对范围进行更多的研究来解决这个问题。如果您选择了这个答案,您将有一个接口来手动处理异常,而且在我看来,这在某种程度上是用眼睛看的,这可能会使您在实际使用中受益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59739814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档