Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在单击而不是设置单元格的位置启动宏_Vba_Excel - Fatal编程技术网

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