gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:32:35 24 4
gpt4 key购买 nike

在 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

欢迎任何帮助。

最佳答案

这使用 Range 的 ListObject 属性来告诉您 ActiveCell 所在表格的列名和行号。如果 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

关于excel - 需要使用VBA返回Excel表格中的行值。可以是工作表上任何位置都不能使用 activecell 的任何表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com