返回Excel工作表列指定的函数适用于除一列之外的所有列

bprjcwpo  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(78)

我有一个电子表格,第1行有各种标题名称。第36列(列“$AJ$1”),标题名称为“Product Quantity”。我试图在该列之后插入一个标题为“Total Quantity”的列。我的代码计算出列号(36),将其传递给一个函数,该函数应该返回列的字母数字(“AJ”)指定。在函数调用中,该函数计算出它应该是“AJ”,但当它被传递回调用例程时,字母数字指定是空白的。我应该提到,该函数和传递回调用程序适用于所有其他列引用,它只是不适用于第36列(“AJ”)。
怎么回事?这是我的密码。
数据表片段:
| AJ列|AK列|
| --|--|
| 产品数量|产品价格|
我想要的:
| AJ列|AK列|AL列|
| --|--|--|
| 产品数量|总量|产品价格|
下面是调用代码:

Dim rng1                        As Excel.Range
    Dim QuantityCol                 As String
    Dim TotalQuantityCol            As String
    Dim strSearch                   As String

    Set rng1 = Nothing
    strSearch = "Product Quantity"
        
    Set rng1 = xlApp_p.ActiveSheet.UsedRange.Find(strSearch, , xlValues, xlWhole)
    If Not rng1 Is Nothing Then

        QuantityCol = ColumnNumberToColumnString(rng1.Column)
'        QuantityCol = Columns(36).Address (My attempt to hardcode which did not work)
        xlApp_p.ActiveSheet.Range(QuantityCol & ":" & QuantityCol).EntireColumn.Insert Shift:=xlToRight

        'Label the now blank column (where the column after Product Quantity was) with "Total Quantity"
        xlApp_p.ActiveSheet.Range(QuantityCol & "1").Offset(0, 1).Value = "Total Quantity"
        
    End If
    Set rng1 = Nothing

Function ColumnNumberToColumnString(col As Long) As String

    If col > MAX_COL_NUMBER Or col < 1 Then
        ColumnNumberToColumnString = "ERROR":     Exit Function
    Else

        ColumnNumberToColumnString = Split(Columns(col).Address, "$")(2)
'        ColumnNumberToColumnString = "AJ" (My attempt to hardcode which did not work)

    End If

字符串
我不是新手,但我是新的提交问题stackoverflow.请帮助,如果你可以.非常感谢!
我尝试在函数内部和外部进行硬编码,但也不起作用。
我希望我的电子表格的第36列有一个列名称“AJ”。

e0bqpujr

e0bqpujr1#

不需要将列号转换为文本。您可以使用列号,或者在这种情况下,当您搜索并返回对“Product Quantity”单元格的引用时,您可以从该单元格偏移。

Public Sub Test()

    'Where we're searching.
    Dim SearchRange As Range
    Set SearchRange = ThisWorkbook.Worksheets("Sheet1").Rows(1)
    
    'Perform the search.
    Dim FoundRange As Range
    Set FoundRange = SearchRange.Find(What:="Product Quantity", _
                                      After:=SearchRange.Cells(1, 1), _
                                      LookIn:=xlValues, _
                                      LookAt:=xlWhole, _
                                      SearchDirection:=xlNext)
                  
    'If the cell reference is found offset by 1 column,
    'insert a new column and update the cell to the right of your found cell.
    If Not FoundRange Is Nothing Then
        FoundRange.Offset(, 1).EntireColumn.Insert Shift:=xlToRight
        FoundRange.Offset(, 1) = "Total Quantity"
    End If

End Sub

字符串

相关问题