如何启动我的宏我点击而不是设置单元格

时间:2014-09-18 17:10:21

标签: excel vba excel-vba

无论如何我的macro开始突出显示或选择empty cell,而不是始终将数据放在同一范围内?我知道如何编辑代码本身只是不知道我是否可以使用不同的功能,而不是通过使用特定的单元格位置来设置范围。

我希望宏在我突出显示的地方开始....无论是单个单元格还是突出显示4或5并且宏在这些4或5中运行..

Sub macroforme() ' ' macrowork Macro '

Range("H19").Select 
ActiveCell.FormulaR1C1 = "Legacy" 
Range("H18").Select 
ActiveCell.FormulaR1C1 = "Field Service" 
Range("H17").Select 
ActiveCell.FormulaR1C1 = "Supply Chain" 
Range("H16").Select 
ActiveCell.FormulaR1C1 = "Engineering" 
Range("H15").Select 
ActiveCell.FormulaR1C1 = "Sales" 
Range("I15").Select 
Columns("H:H").ColumnWidth = 11.71 
Range("I15").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],Legacy)" 
Range("I15").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],""Sales*"",C[-8])" 
Range("I16").Select 
ActiveCell.FormulaR1C1 = "sumif" 
Range("I16").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],Engineering)" 
Range("I16").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],""Engineering"",C[-8])" 
Range("I17").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],""Supply Chain"",C[-8])" 
Range("I18").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],""Field Service"",C[-8])" 
Range("I19").Select 
ActiveCell.FormulaR1C1 = "=SUMIF(C[-5],""Legacy"",C[-8])" 
Range("I20").Select 
End Sub

2 个答案:

答案 0 :(得分:1)

将下面的代码粘贴到工作表中(在宏编辑器中,双击要执行此代码的工作表,然后将其粘贴到其中)。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Target.Offset(0, 0).FormulaR1C1 = "Legacy"
    Target.Offset(-1, 0).FormulaR1C1 = "Field Service"
    Target.Offset(-2, 0).FormulaR1C1 = "Supply Chain"
    Target.Offset(-3, 0).FormulaR1C1 = "Engineering"
    Target.Offset(-4, 0).FormulaR1C1 = "Sales"
    Target.ColumnWidth = "11.71"

    'Next Column
    Target.Offset(-4, 1).FormulaR1C1 = "=SUMIF(C[-5],""Legacy*"",C[-8])"
    Target.Offset(-3, 1).FormulaR1C1 = "=SUMIF(C[-5],""Engineering"",C[-8])"
    Target.Offset(-2, 1).FormulaR1C1 = "=SUMIF(C[-5],""Supply Chain"",C[-8])"
    Target.Offset(-1, 1).FormulaR1C1 = "=SUMIF(C[-5],""Field Service"",C[-8])"
    Target.Offset(0, 1).FormulaR1C1 = "=SUMIF(C[-5],""Legacy"",C[-8])"
End Sub

这将使您的硬编码代码执行相同的操作,但它将在双击单元格时执行。此示例中的Target是您双击的单元格。偏移量会移动您指定的许多行和列。因此,在Target.Offset(-4, 1).FormulaR1C1 = "=SUMIF(C[-5],""Legacy*"",C[-8])"行中,它表示移动1列,最多4行,然后粘在公式中。

答案 1 :(得分:0)

如果删除选择行,它将适用于当前选定的单元格(activecell)

所以

activecell.value = "This is the current cell"

会在您选择的那个中输入这是当前单元格

如何处理所选择的多个单元格取决于您要执行的操作,因为您需要在一堆独立单元格上执行一系列操作。

如果要将所有选定的单元格设置为相同的值,可以使用

selection.value = "These are the current cells"

选择也适用于为大多数事情选择的1个单元格。