如何在Excel VBA中基于用户选择的单元格引用设置范围

如何在Excel VBA中基于用户选择的单元格引用设置范围,vba,excel,Vba,Excel,我目前正在运行一个代码,其中用户选择一个单元格引用(这是列标题名称),代码根据该选择创建一个数据集。当前代码通过对选定的标题字符串运行find命令来创建数据。这确实很有效,但如果标题在同一行中出现两次,则会出现问题。我想做的是用所选行的偏移量替换find字符串,但我遇到了问题 使用查找字符串的原始代码是: Sub test() Dim ar1 As Variant Dim str1 As String Dim ar2 As Variant Dim Path As String Dim j As

我目前正在运行一个代码,其中用户选择一个单元格引用(这是列标题名称),代码根据该选择创建一个数据集。当前代码通过对选定的标题字符串运行find命令来创建数据。这确实很有效,但如果标题在同一行中出现两次,则会出现问题。我想做的是用所选行的偏移量替换find字符串,但我遇到了问题

使用查找字符串的原始代码是:

Sub test()

Dim ar1 As Variant
Dim str1 As String
Dim ar2 As Variant
Dim Path As String
Dim j As Long 'counter
Dim output As String

Path = ActiveWorkbook.Path

ar1 = Worksheets("Sheet1").Range("C6:C222").Value

str1 = Application.InputBox("Select data heading from row 6", _
        "Obtain String", Type:=2)

ar2 = Range(Range("E6:IP6").Find(str1),Range("E6:IP6").Find(str1).End(xlDown))


For j = 1 To UBound(ar1, 1)
  output = output & ar1(j, 1) & "," & ar2(j, 1) & vbNewLine
Next

Open Path & "\text_data.txt" For Output As #1
Print #1, output
Close
End Sub
我的新代码尝试如下,但是当代码到达我设置ar2数组的行时,我不断得到一个运行时错误'1004-应用程序定义的或对象定义的错误.L

ar2 = Range(rng1.Offset(0, 0), rng1.Offset(216, 0))


Sub test()

Dim ar1 As Variant
Dim rng1 As Range
Dim ar2 As Variant
Dim Path As String
Dim j As Long 'counter
Dim output As String

Path = ActiveWorkbook.Path

ar1 = Worksheets("Sheet1").Range("C6:C222").Value

set rng1 = Application.InputBox("Select data heading from row 6", _
        "Obtain String", Type:=8)

ar2 = Range(rng1.Offset(0, 0), rng1.Offset(216, 0))

For j = 1 To UBound(ar1, 1)
  output = output & ar1(j, 1) & "," & ar2(j, 1) & vbNewLine
Next

Open Path & "\text_data.txt" For Output As #1
Print #1, output
Close
End Sub

非常感谢您的帮助

我对这个问题的解决方案粘贴在下面。最后,我做的是调整用户在输入框命令中选择的范围的大小,并将其偏移为数据从标题下方开始的所需行数。这对我来说是可行的,因为我的数据总是在所选标题下的某个固定长度

偏移范围的参考来自


在哪一行?抱歉,在我定义数组ar2的那一行
Sub test()

Dim ar1 As Variant
Dim ar2 As Variant
Dim rng1 As Range
Dim Path As String
Dim j As Long
Dim output As String

Path = ActiveWorkbook.Path

ar1 = Worksheets("Find Friends").Range("C6:C222").Value

Set rng1 = Application.InputBox("Select data heading from row 5", _
            "Select Indicator", Type:=8)

ar2 = rng1.Offset(1, 0).Resize(rng1.Rows.Count + 215, rng1.Columns.Count)

For j = 1 To UBound(ar1, 1)
    output = output & ar1(j, 1) & "," & ar2(j, 1) & vbNewLine
Next

Open Path & "\text_data.txt" For Output As #1
Print #1, output
Close

End Sub