4

这是关于excel中的宏。

在按下组合键(即触发宏)时,我需要对具有 ActiveCell 的行的第 1 到 10 列进行一些格式更改。

目前我正在选择整行

ActiveCell.EntireRow.Select

但是,我只需要选择第 1 到第 10 行。我认为它应该类似于

ActiveCell.Range(1, 10).Select

但这不起作用。

为了清楚起见,我读过关于

ActiveCell.Offset(5, -4).Select

但这对我来说是行不通的。ActiveCell 可以是行的任何列,因此硬编码的偏移量不会有帮助。

所以,那里的excel专家,我希望这是一个快速的东西,只是不知何故我找不到答案。请帮忙。

4

4 回答 4

13

如果它总是第 1 到 10 列(即 A 到 J),那么这应该有效:

Range("A" & ActiveCell.Row & ":J" & ActiveCell.Row)

例如,如果活动单元格是,M14那么这将选择范围A14:J14。然后,您可以按照自己的喜好对其进行格式化。

希望这可以帮助

于 2013-05-06T08:14:58.450 回答
1

行。这就是我所做的,并且有效。

ActiveSheet.Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 10)).Select

在我看来,这是一种 hacky 方式。如果有更好的,请回复。直到我们得到更好的东西,我想这对于那些来寻找答案的人来说是最好的答案,在我之后。

于 2013-05-06T07:46:40.420 回答
0

这将起作用

Range("A" & ActiveCell.Row).Resize(1,10).select
于 2015-07-08T05:05:49.647 回答
0

如果适用.. 花了很多时间来寻找,需要一个更可编程的 - 自动化答案,结果 - 在 1 行上工作。

        Dim N7 As String: N7 = RANGE("N7")    'workcell N7 shows eg:  A:J    
        Intersect(Rows(ActiveCell.row), RANGE(N7).Columns).Select   'YES ANSWER

    'other:
        If application.Max(Intersect(Rows(ActiveCell.row), RANGE(N7).Columns)) > 0 Then

      MsgBox "YES" & Space(10), vbQuestion  ', "title": end if    & vbCr &
Else: MsgBox "NO" & Space(10), vbQuestion: End If ', "title": end if    & vbCr &

'Cells(ActiveCell.row, J6).OFFSET(, 1).RESIZE(, 6).Select    'YES: offset works on immediate cols for 1 row
'Cells(ActiveCell.row, J6).RESIZE(, 5).Select                'yes on 4 immediate cols for 1 row   (row, col)
'Cells(ActiveCell.row, B5).select

工作单元 N7 有: =SUBSTITUTE(SUBSTITUTE(CELL("address",$A7),"$",""),ROW(),"")&":"&SUBSTITUTE(SUBSTITUTE(CELL("address",$J7 ),"$",""),ROW(),"")

于 2017-01-16T01:45:52.927 回答