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