Vba 在Do INTIL循环中使用.Select属性的替代方法

Vba 在Do INTIL循环中使用.Select属性的替代方法,vba,excel,select,Vba,Excel,Select,我正在尝试为多张图纸运行一个简单的嵌套If&Do-Until循环: Sub DoUntil() Dim ws As Worksheet Dim i As Integer For Each ws In ActiveWorkbook.Worksheets For i = 1 To 25 If ws.Cells(i, 10) = "T" Then ws.Cells(i, 10).Select

我正在尝试为多张图纸运行一个简单的嵌套If&Do-Until循环:

Sub DoUntil()

Dim ws As Worksheet
Dim i As Integer
    For Each ws In ActiveWorkbook.Worksheets
       For i = 1 To 25
            If ws.Cells(i, 10) = "T" Then
                ws.Cells(i, 10).Select

                Do Until ActiveCell = "P"
                ActiveCell.Offset(1, 1) = 1
                ActiveCell.Offset(1, 0).Select
                Loop
            End If
       Next i
Next ws
End Sub
用途:此函数用于循环一列,并将1放置在右侧的下一列中。1必须在“T”之后开始,在“P”处结束。T和P的间距不均匀

问题:在没有ws-Server的情况下为单个工作表运行此代码。对象没有问题。但是,只要我想循环浏览多个工作表,.Select就无法获取指定的范围(错误1004)。此错误在中给出

ws.Cells(i, 10).Select
问题:我知道使用.Select属性的危险,但我不确定如何以不同的方式解决这个问题,因为ActiveCell对于我的Do-Until函数至关重要。是否有另一种方法可以运行my Do Until函数,该函数将与If语句一起工作并在多个工作表中循环?

使用match,类似于
单元格(匹配(“T”,范围(“a1:a50000”),0),1)
单元格(匹配(“P”,范围(“a”)和匹配(“T”,范围(“a1:a50000”),0)和:a50000”),0),1)

什么的

范围(单元格(y,x),单元格(y2,x2))。偏移量(0,1)。值=1

Sub DoUntil()

Dim ws As Worksheet
Dim i As Integer, j as Integer
    For Each ws In ActiveWorkbook.Worksheets
       For i = 1 To 25
            If ws.Cells(i, 10) = "T" Then
                j = i

                Do Until ws.Cells(j,10) = "P"
                ws.Cells(j, 10+1) = 1
                j = j + 1
                Loop
            End If
       Next i
Next ws
End Sub