Excel VBA宏-提示输入列说明以断言范围

Excel VBA宏-提示输入列说明以断言范围,vba,excel,Vba,Excel,我一直在寻找答案: 使用下面的代码,我想在每组唯一值的末尾输入一个空行。关键是,我希望它有一个提示,允许用户为列范围键入字母。我已经尝试了很多,但不能用查询答案代替“B” Dim lRow As Long For lRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row To 2 Step -1 If Cells(lRow, "B") <> Cells(lRow - 1, "B") Then Rows(lRow).EntireRow.Inse

我一直在寻找答案:

使用下面的代码,我想在每组唯一值的末尾输入一个空行。关键是,我希望它有一个提示,允许用户为列范围键入字母。我已经尝试了很多,但不能用查询答案代替“B”

Dim lRow As Long
For lRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row To 2 Step -1
If Cells(lRow, "B") <> Cells(lRow - 1, "B") Then Rows(lRow).EntireRow.Insert
Next lRow
End Sub
Dim lRow尽可能长
对于lRow=单元格(Cells.Rows.Count,“B”)。结束(xlUp)。行到2步骤-1
如果是单元格(lRow,“B”)单元格(lRow-1,“B”),则是行(lRow).EntireRow.Insert
下一条路
端接头
有什么建议吗?

试试
范围(“B”和Cells.Rows.Count)
而不是
单元格(Cells.Rows.Count,“B”)
,其他的也一样。

试试这个

Sub Demo()
    Dim lRow As Long
    Dim sCol As String
    sCol = InputBox("Enter Column", sCol)
    For lRow = Cells(Cells.Rows.Count, sCol).End(xlUp).Row To 2 Step -1
        If Cells(lRow, sCol) <> Cells(lRow - 1, sCol) Then
            Rows(lRow).Insert
        End If
    Next lRow
End Sub
子演示()
暗淡的光线和长的一样
将sCol变暗为字符串
sCol=输入框(“输入列”,sCol)
对于lRow=单元格(Cells.Rows.Count,sCol)。结束(xlUp)。行到2步骤-1
如果单元格(lRow,sCol)单元格(lRow-1,sCol),则
行(lRow)。插入
如果结束
下一条路
端接头

我猜您的问题是,您希望用户能够输入“B”、“AA”、“C”作为列

部分复制@Chris的代码

Sub Demo()
    Dim lRow As Long
    Dim sCol As String
    Dim colNum as string
    sCol = InputBox("Enter Column", sCol)
    colNum  = columns(sCol).column
    For lRow = Cells(Cells.Rows.Count, colNum  ).End(xlUp).Row To 2 Step -1
        If Cells(lRow, colNum  ) <> Cells(lRow - 1, colNum  ) Then
            Rows(lRow).Insert
        End If
    Next lRow
End Sub
子演示()
暗淡的光线和长的一样
将sCol变暗为字符串
作为字符串的Dim colNum
sCol=输入框(“输入列”,sCol)
colNum=列(sCol).column
对于lRow=单元格(Cells.Rows.Count,colNum)。结束(xlUp)。行到2步骤-1
如果单元格(lRow,colNum)单元格(lRow-1,colNum),则
行(lRow)。插入
如果结束
下一条路
端接头

包括打开提示,这是我最后使用的。
将打开提示连接到按钮,使非技术人员更容易使用:

Sub InsertRowAtChangeInValue()

    Dim customerBook As Workbook
    Dim filter As String
    Dim caption As String
    Dim customerFilename As String
    Dim customerWorkbook As Workbook
    Dim targetWorkbook As Workbook

    Set targetWorkbook = Application.ActiveWorkbook

    filter = "Excel 2007 files (*.xlsx),*.xlsx, Excel 97-03 files (*.xls),*xls, All files (*.*),*.*"
    caption = "Please select an input file."
    customerFilename = Application.GetOpenFilename(filter, , caption)

    Set customerWorkbook = Application.Workbooks.Open(customerFilename)

    Dim targetSheet As Worksheet
    Set targetSheet = targetWorkbook.Worksheets(1)
    Dim sourceSheet As Worksheet
    Set sourceSheet = customerWorkbook.Worksheets(1)

    targetSheet.Range("A1", "AR5000").Value = sourceSheet.Range("A1", "AR5000").Value

    Dim lRow As Long
    Dim sCol As String
    Dim colNum As String
    sCol = InputBox("Enter Column", sCol)
    colNum = Columns(sCol).Column
    For lRow = Cells(Cells.Rows.Count, sCol).End(xlUp).Row To 2 Step -1
        If Cells(lRow, sCol) <> Cells(lRow - 1, sCol) Then
            Rows(lRow).Insert
        End If
    Next lRow
End Sub
Sub InsertRowAtChangeInValue()
将customerBook设置为工作簿
将筛选器设置为字符串
将标题设置为字符串
将customerFilename设置为字符串
将自定义工作簿设置为工作簿
将targetWorkbook设置为工作簿
设置targetWorkbook=Application.ActiveWorkbook
filter=“Excel 2007文件(*.xlsx),*.xlsx,Excel 97-03文件(*.xls),*xls,所有文件(*.*),*.”
caption=“请选择一个输入文件。”
customerFilename=Application.GetOpenFilename(过滤器,标题)
设置customerWorkbook=Application.Workbooks.Open(customerFilename)
将目标工作表变暗为工作表
设置targetSheet=targetWorkbook.Worksheets(1)
将源表设置为工作表
设置sourceSheet=customerWorkbook.Worksheets(1)
targetSheet.Range(“A1”、“AR5000”).Value=sourceSheet.Range(“A1”、“AR5000”).Value
暗淡的光线和长的一样
将sCol变暗为字符串
作为字符串的Dim colNum
sCol=输入框(“输入列”,sCol)
colNum=列(sCol).Column
对于lRow=单元格(Cells.Rows.Count,sCol)。结束(xlUp)。行到2步骤-1
如果单元格(lRow,sCol)单元格(lRow-1,sCol),则
行(lRow)。插入
如果结束
下一条路
端接头

再次感谢你的帮助

谢谢你的回复。我试了一下,但运气不好。请允许我澄清:我想使用输入框“询问”B。这样,它将作用于用户输入的任何列。是否有一个通用命令可以代替B,或者我需要设置它?@user2043959哦,我明白了,伙计,对不起。我的VBA体验离用户输入表单还很远。希望其他人能帮忙,谢谢。我自己刚开始。做了我想做的大部分事情…@user2043959祝你学习顺利。因为我对这个问题的答案也感兴趣,所以得到了我的+1。嘿,谢谢。如果我在这里的任何人面前找到一个合适的答案,我会发布一个解决方案。拉里,你的观点是什么?使用我的代码,用户确实输入了
B
AA
C
etc@chrisneilsen我刚刚测试了您的代码,并且学习了新语法
单元格(rowNumber,columnsymber)
。谢谢但我还是更喜欢数字,所以它可以很容易地抵消,迭代。。