计数和复制动态范围Vba

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计数和复制动态范围Vba相关的知识,希望对你有一定的参考价值。

我试图根据单元格内的值过滤A列中的一个范围,例如只有590到690,其中包含一个值的范围,首先是为了计算动态范围的行数,其次是为了将动态范围中的值复制到另一列中.我有困难,我认为第一个msgbox范围,我不知道为什么我已经尝试了多种变化的范围.

column values

子巴卡()

Dim a As Variant
Dim b As Variant
Dim ws As Worksheets

Set ws = Worksheets("Rec")

LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row


For a = 4 To LastRow
For b = 4 To LastRow


If ws.Cells(a, 1).Value = "590" And ws.Cells(b, 1).Value = "690" Then


MsgBox ws.Range(Cells(a.Value, 1), (Cells(b.Value, 1))).Rows.Count


If ActiveSheet.Range("h4:h14").Rows.Count = ws.Range(Cells(a.Value, 1), (Cells(b.Value, 1))).Rows.Count Then

Range("a4:a15").Offset(0, 2).Copy
Range("g4:g15").Select
ActiveSheet.Paste

Else

MsgBox "no"


End If
End If



Next b
Next a


End Sub
答案

我设法解决了这个问题,看来是单元格变量引起的问题,因为我认为,我把它们从a和b改为atr和btr。

Sub barca()

Dim atr As Variant
Dim btr As Variant
Dim ws As Worksheet
Dim s As Range
Dim t As Long


Set ws = Worksheets("Rec")

LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row


For atr = 4 To LastRow
For btr = 4 To LastRow


If ws.Cells(atr, 1).Value = "590" And ws.Cells(btr, 1).Value = "690" Then

Set s = ws.Range(Cells(atr, 1), (Cells(btr, 1)))

t = s.Rows.Count

If ActiveSheet.Range("h4:h14").Rows.Count = t Then

s.Offset(0, 2).Copy
Range("g4:g15").Select
ActiveSheet.Paste

Else

MsgBox "no"


End If
End If



Next btr
Next atr

End Sub

以上是关于计数和复制动态范围Vba的主要内容,如果未能解决你的问题,请参考以下文章

VBA Excel小计动态范围不起作用

VBA - 最大化第二个窗口的连接范围计数不正确

制作动态 VBA 自动填充范围

在 for-each 循环中复制动态范围

复制自动过滤范围,vba excel

Excel VBA:自动填充动态范围错误