使用vba获取特定文本的单元格列号

excel的screeshot 嗨,我需要获得一个单元格的文本作为行动。

我目前的代码如下。

Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim rngDV As Range Dim oldVal As String Dim newVal As String Dim actionColName As String If Target.Count > 1 Then GoTo exitHandler On Error Resume Next Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation) On Error GoTo exitHandler If rngDV Is Nothing Then GoTo exitHandler If Intersect(Target, rngDV) Is Nothing Then 'do nothing Else Application.EnableEvents = False newVal = Target.Value Application.Undo oldVal = Target.Value Target.Value = newVal If Target.Column = 3 Then If oldVal = "" Then 'do nothing Else If newVal = "" Then 'do nothing Else Target.Value = oldVal _ & "+ " & newVal End If End If End If End If exitHandler: Application.EnableEvents = True End Sub 

在上面的代码中有一个条件如下Target.Column = 3然后

而不是用3硬编码值,我想将这个逻辑应用于包含ACTION值的完整列,在其列中的一个单元格中。

使用Find来确定包含Action的(第一个)列

 Sub GetAction() Dim rng1 As Range Set rng1 = ActiveSheet.UsedRange.Find("Action", , xlValues, xlWhole) If Not rng1 Is Nothing Then MsgBox "Found in column " & rng1.Column Else MsgBox "Not found", vbCritical End If End Sub