需要使用VBA返回Excel表格中的行值。可以是工作表上任何不能使用activecell的表

需要使用VBA返回Excel表格中的行值。可以是工作表上任何不能使用activecell的表,excel,rows,vba,Excel,Rows,Vba,在Excel中使用VBA: 我有很多有多张桌子的床单。这些表唯一的共同点是ProductID列和LotNumber列。产品ID列中的数据需要验证和/或处理。我需要一种方法来获取当前选定单元格的当前表的表行索引号。我无法使用ActiveCell引用,因为表行与工作表行不匹配。我无法使用“查找列中最后使用的单元格”,因为还有其他表 我需要能够在许多不同的工作簿中使用此接头 这是我到目前为止的代码 Const tblUNLABELED As String = "tblUnLabel" Private

在Excel中使用VBA:

我有很多有多张桌子的床单。这些表唯一的共同点是ProductID列和LotNumber列。产品ID列中的数据需要验证和/或处理。我需要一种方法来获取当前选定单元格的当前表的表行索引号。我无法使用ActiveCell引用,因为表行与工作表行不匹配。我无法使用“查找列中最后使用的单元格”,因为还有其他表

我需要能够在许多不同的工作簿中使用此接头

这是我到目前为止的代码

Const tblUNLABELED As String = "tblUnLabel"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    StopAppEvents
    Dim ws As Worksheet

    Set ws = ActiveSheet
    Dim intRow As Integer
    Dim strTest As String
    If Not Intersect(ActiveCell, _
                     ActiveSheet.Range(tblUNLABELED & "[LotNumber]")) Is Nothing Then
        'go to the product entered in this table row and Ucase(ProductID)
        strTest = ws.ListObjects(tblUNLABELED).Range(intRow, "[ProductID]")
        ws.ListObjects(tblUNLABELED).Range(intRow, "[ProductID]") = UCase(strTest)
    End If

    RestartAppEvents

End Sub

欢迎提供任何帮助。

如果所选单元格位于您的一个表中,并且您的表中有空单元格,则ActiveCell.CurrentRegion应为您提供一个包含该表的范围,您可以从该范围开始工作

ActiveCell.Row-ActiveCell.CurrentRegion.Row+1


提供当前表中活动单元格的(基于1的)行号这使用范围的ListObject属性告诉您活动单元格所在表的列名和行号。如果ActiveCell不在表中,您会收到这样的消息。行号为0表示ActiveCell位于表的标题行中:

Sub PrintActiveCellTableData()

    Dim cell As Excel.Range
    Dim lo As Excel.ListObject
    Dim loCol As Excel.ListColumn
    Dim loRowNum As Long

    Set cell = ActiveCell
    If cell.ListObject Is Nothing Then
        Debug.Print "No ActiveCell ListObject"
        Exit Sub
    End If

    Set lo = cell.ListObject
    With lo
        Set loCol = .ListColumns(cell.Column - (.HeaderRowRange.Cells(1).Column) + 1)
        loRowNum = cell.Row - .HeaderRowRange.Row
    End With

    Debug.Print "Table Name: "; lo.Name; "  ListColumn: "; loCol.Name; "  Row:"; loRowNum

End Sub

Charles你能给我举一个如何使用CurrentRegion固定单元格行的例子吗?谢谢Charles,这看起来非常有用。偏移量不起作用,因为有很多表,并且不是所有的表在LotNumber和ProductId之间都有相同的列数。使用Dougs示例,这里是我想到的。它就像一个符咒。