gpt4 book ai didi

excel - VBA ActiveCell 动态调整大小

转载 作者:行者123 更新时间:2023-12-04 21:50:40 24 4
gpt4 key购买 nike

您好,我创建了以下代码来格式化 Excel 电子表格中的总计行。我的问题是我想从总计中选择动态单元格,因为我并不总是有 15 列。我尝试使用 ActiveCell,但它没有用。谁能帮我更改此代码以满足我的需要?

Range("A1").Select
FindRow1 = Range("A:A").FIND(What:="Grand Total", LookIn:=xlValues, LookAt:=xlWhole).Activate
ActiveCell.Resize(, 15).Select

'Range(ActiveCell, Cells(, ActiveCell.End(xlToRight).Column)).Select

Selection.Font.Bold = True

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0

End With

Selection.Font.Size = 12
[编辑]:这是尝试建议的解决方案后我的问题的屏幕截图:
enter image description here

最佳答案

  • 您不必选择范围。只要确定你正在使用的范围的地址,你就很好。
  • 如果你指定你正在使用的工作表会更好,所以
    如果您在工作簿中有多张工作表,您仍在工作
    在右边。
  • 而不是激活您使用Find 找到的单元格,将该单元格的行传递给名为 myRow 的变量并在另一个函数中使用此变量来定义您需要的范围。
  • 一旦你定义了你需要的范围,把它传递给一个像 myRange 这样的变量。 , 并使用它而不是使用 Selection在您的其余代码中。
  • 要使您的范围动态更改其大小(假设您希望您的范围有一行并且该行的所有填充单元格),那么您需要找到表格中最后一个填充单元格的列,将其传递给变量 lastCol并用它来定义你的范围。
  • Sub formatRange()

    Dim ws As Worksheet
    Dim myRow As Long, lastCol As Integer, myRange As Range

    Set ws = ThisWorkbook.ActiveSheet 'Change this to the name of the sheet you're working with

    myRow = ws.Range("A:A").Find(What:="Grand Total", LookIn:=xlValues, LookAt:=xlWhole).Row 'The row that has "Grand Total"
    lastCol = ws.Cells(myRow, Columns.Count).End(xlToLeft).Column 'The column of the last filled cell in `myRow`

    Set myRange = ws.Range("A" & myRow).Resize(1, lastCol) 'The desired range has 1 row and (lastCol) columns

    myRange.Font.Bold = True

    With myRange.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0.399975585192419
    .PatternTintAndShade = 0
    End With

    myRange.Font.Size = 12

    End Sub
  • 考虑这种情况:

  • 如果行中最后一个单元格的列 myRow不是 与整个表格中的最后一列相同(见屏幕截图),您有 2 个选项来定义您的 lastCol :
    Table Screenshot 1&2
  • 您可以定义lastCol作为行的最后一列 myRow (屏幕截图 1),在这种情况下,您保持上面的代码不变。
  • 您可以将其定义为整个表格的最后一列(屏幕截图 2),在这种情况下,您必须替换 lastCol上面有这个:
        'The column of the last filled cell in the whole table
    lastCol = ws.Cells.Find(What:="*", _
    After:=Range("A1"), _
    LookAt:=xlPart, _
    LookIn:=xlFormulas, _
    SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious).Column

  • 附:如果最后一个单元格的列在所有行中都相同,则可以忽略最后一段。

    关于excel - VBA ActiveCell 动态调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827825/

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