从保存在string中的variables中select范围(Excel中的VBA)

我试图select行之间的数据,用户input自己(作为字母),我也试图限制数据,以便比较一行中的值,只复制具有相同的值在选定的“比较列“。 然后select“比较列”中所有具有相同值的数据并将其保存到新的工作表中。

然而,这是应该如何工作的。 我一直坚持几个小时的范围select。 我已经将用户input保存为string,也就是说,如果我需要范围A3到D19之间的数据,它将保存为“A3”和“D19”。 当我把它放到一个范围内:

设置selValue = arbEx.range(rangeStart&“:”&rangeStopp)

selValue.Copy

我得到了“应用程序定义或对象定义的错误”。 我已经尝试了无数不同的input范围,但我总是得到相同的错误。 代码的作品,如果我评论上述两行,所以问题应该在那里。

以下是完整的代码,

Sub Lösning() Set newWb = Workbooks.Add 'Set ActiveSheet = ActiveWorkbook.ActiveSheet 'Förhindrar screenflicker Application.ScreenUpdating = False 'Skapar två sheets som används i programmet Dim param As Worksheet Set param = ThisWorkbook.Sheets("Parametrar") Dim arbEx As Worksheet Set arbEx = ThisWorkbook.Sheets("Arbets ex") 'Kod för att hämta startvädet av kolumn Dim start As String start = param.Cells(4, 3).Value 'Kod för att hämta slutvärdet av kolumn Dim stopp As String stopp = param.Cells(4, 4).Value 'Deklaration av variabler Dim counter1 As Long Dim counter2 As Long Dim counter3 As Long Dim rangeStart As String Dim rangeStopp As String Dim rangeFinal As String 'dela upp efter kolumn Dim koluParam As String Dim paramCheck As String 'Kolumn att dela upp efter koluParam = param.Cells(4, 2).Value 'Algoritm för kopiering av valda kolumner For i = 3 To 10000 paramCheck = arbEx.Cells(i, koluParam).Value counter1 = counter1 + 1 counter2 = counter2 + 1 counter3 = counter3 + 1 If (paramCheck <> arbEx.Cells((i + 1), koluParam).Value) Then counter3 = counter2 - counter1 rangeStart = start & counter3 rangeStopp = stopp & counter2 '-------problem here Set selValue = arbEx.range(rangeStart & ":" & rangeStopp) selValue.Copy '----------------- newWb.Activate Sheets.Add ActiveSheet.Paste counter1 = 0 End If Next 'Rensar clipboard Application.CutCopyMode = False 'Aktiverar uppdatering för att visa all data Application.ScreenUpdating = True End Sub 

你的代码中有一个错误

你第一次通过

 If (paramCheck <> arbEx.Cells((i + 1), koluParam).Value) Then 

然后你设置

 counter3 = counter2 - counter1 

其中counter2counter1彼此相等(至1),因此返回0 ,这导致错误

你必须改变counterX设置