从保存在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
其中counter2
和counter1
彼此相等(至1),因此返回0
,这导致错误
你必须改变counterX
设置