Vba 如何在单击而不是设置单元格的位置启动宏
是否有必要让我的Vba 如何在单击而不是设置单元格的位置启动宏,vba,excel,Vba,Excel,是否有必要让我的宏从突出显示或选择一个空单元格开始,而不是总是将数据放在相同的范围内?我知道如何编辑代码本身,只是不知道是否有一个不同的功能,我可以使用,而不是在石头上设置一个范围,通过使用特定的单元格位置 我希望宏从高亮显示的位置开始…无论是单个单元格还是高亮显示4或5,并让宏在4或5中运行 Sub macroforme() ' ' macrowork Macro ' Range("H19").Select ActiveCell.FormulaR1C1 = "Legacy" Range(
宏
从突出显示或选择一个空单元格开始,而不是总是将数据放在相同的范围内?我知道如何编辑代码本身,只是不知道是否有一个不同的功能,我可以使用,而不是在石头上设置一个范围,通过使用特定的单元格位置
我希望宏从高亮显示的位置开始…无论是单个单元格还是高亮显示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
如果删除选择行,它将在当前选定的单元格(activecell)上工作
所以
将键入这是所选单元格中的当前单元格
如何处理所选的多个单元格取决于您尝试执行的操作,因为这里有一组独立单元格要执行的操作
如果要将所有选定的单元格设置为可以使用的相同值
selection.value = "These are the current cells"
在大多数情况下,选择也适用于选定的1个单元格。将下面的代码粘贴到工作表中(在宏编辑器中,双击要执行此代码的工作表,然后将其粘贴到工作表中)
这将完成与硬编码代码相同的操作,但它将在双击单元格时执行<代码>目标
在本例中是双击的单元格。偏移量移动指定的行数和列数。所以在Target.Offset(-4,1).FormulaR1C1=“=SUMIF(C[-5],“Legacy*”,C[-8])”这行中,它是说移动1列,向上移动4行,然后坚持公式 如果双击前的工作表_
用于运行代码,则过程中的第一行应该是标识目标,以确保它是启动代码的正确单元格,如果为true,则第二行应该是取消=true
。这将停止输入单元格进行编辑的操作(假设在Excel选项中启用了该选项)。
selection.value = "These are the current cells"
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