VBA宏根据用户输入删除行

VBA宏根据用户输入删除行,vba,excel,Vba,Excel,我试图找到一个宏,该宏将删除用户指定编号下的所有行。例如,用户将输入“19”,宏将删除第20行及以下行。我真的很感谢你的帮助 谢谢 这应该可以做到: Sub UserInput() Dim num As Integer num = InputBox(Prompt:="Enter the row number.", Title:="Enter Row Number", Default:="Row number") If (num < 1) Then G

我试图找到一个宏,该宏将删除用户指定编号下的所有行。例如,用户将输入“19”,宏将删除第20行及以下行。我真的很感谢你的帮助


谢谢

这应该可以做到:

Sub UserInput()
    Dim num As Integer
    num = InputBox(Prompt:="Enter the row number.", Title:="Enter Row Number", Default:="Row number")
    If (num < 1) Then
        GoTo Whoops:
    End If
    Dim i As Integer
    i = 1
    Do While i <= num
        Rows(1).EntireRow.Delete
        i = i + 1
    Loop
    GoTo Fin:
    Whoops:
        MsgBox ("You have entered an invalid row number")
    Fin:
End Sub
Sub-UserInput()
Dim num作为整数
num=InputBox(提示:=“输入行号”,标题:=“输入行号”,默认值:=“行号”)
如果(num<1),则
后藤:哎呀
如果结束
作为整数的Dim i
i=1

i时执行,您可以在column=1和Row=1中输入要保留的行数。数据在rows=deleteRowsb中,然后将删除返回到row=2的每一行

Sub Macro1()
'
' Macro1 Macro
'

    deleterowsbefore = ActiveSheet.Cells(1, 1)
    Rows("2:" & deleterowsbefore - 1).Select
    Selection.Delete Shift:=xlUp
End Sub

试试这个。我使用了
ActiveSheet
。可以将其设置为要使用的任何图纸

Sub Sample()
    Dim Ret As Long

    Ret = Application.InputBox(Prompt:="Please enter a row number", Type:=1)

    If Ret = False Then Exit Sub

    With ActiveSheet
        .Rows(Ret + 1 & ":" & .Rows.Count).Delete
    End With
End Sub

试着写一个,如果你不能取得任何进展,发布你的代码,人们会帮助你。这是一个帮助你渡过驼峰的网站,一个为你做一切的网站。是的,我最初的描述是相当模糊的。我的意思是20-65536.+1@GrayFox374:我在30分钟前看到了你的评论,出于尊重,我没有发布代码示例,但当我看到发布了错误的代码示例时,我忍不住。我也为此道歉,我知道!即使只是鼓励他们,也很难不做出贡献!哈哈,我们有些人沉迷于解决问题!欢迎来到堆栈溢出。请阅读-,这里的问题应该与特定的编程问题有关。请发布您尝试过的内容,并明确指出您遇到的问题。您永远不需要在VBA中使用
GoTo
。总有更好的办法。我认为OP使用了“第20行及以下”来表示第20-65536行(或其他,它可以变化),而不是第1-19行。诚然,这是不明确的。我认为在这里使用
GoTo
没有问题;这很简单。我将“20及以下”解释为“20及以下,行号小于20,即1-19”。请看一位最优秀的Excel MVP对GoTo的评价:。我真的无法用GoTo Sorryhmm投票给一个答案,我不得不勉强同意@AndrewLeach和JMax——GoTo不应该在2012年“去”。当我第一次在Commodore 64上学习编码时,我曾经使用过它,但作为一名专业人员,我从未使用过它。这是可行的,但这对黑客来说是一个滑坡。
GoTo-Fin:
在这里看起来毫无意义。只需使用
Exit Sub
,这是一样的。