如何在ExcelVBA中组合两个不同列的两个不同请求

如何在ExcelVBA中组合两个不同列的两个不同请求,excel,vba,Excel,Vba,我想要一个宏,可以自动将给定的列乘以一个设定的数字。每个列的数字都不同。到目前为止,我只能将其应用于一个专栏。我不能为任何其他人做: Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub Application.EnableEvents = False

我想要一个宏,可以自动将给定的列乘以一个设定的数字。每个列的数字都不同。到目前为止,我只能将其应用于一个专栏。我不能为任何其他人做:

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)


If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target.Value = Target.Value * 300
    Application.EnableEvents = True
    


If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target.Value = Target.Value * 500
    Application.EnableEvents = True

End Sub
也许是这样的:

Private子工作表\u更改(ByVal目标作为范围)
如果Target.CountLarge>1,则退出Sub
错误转到安全出口
Application.EnableEvents=False
变暗rng As范围
设置rng=Intersect(目标,Me.Range(“B:B”)
如果不是,那么rng什么都不是
净价值=净价值*300
如果结束
设置rng=Intersect(目标,Me.Range(“C:C”))
如果不是,那么rng什么都不是
平均值=平均值*500
如果结束
安全出口:
Application.EnableEvents=True
端接头
编辑: 如果您有两个以上的列(并且它们是连续的),这可能是一种更好的方法:

Private子工作表\u更改(ByVal目标作为范围)
如果不相交(目标,距离(“B:F”))则为零
错误转到安全出口
Application.EnableEvents=False
变暗rng as范围
对于Intersect中的每个rng(目标,Me.范围(“B:F”))
变暗倍增器
选择Case rng.Column
案例2’B栏
乘数=300
案例3’C栏
乘数=500
案例4’D栏
乘数=400
案例5’E栏
乘数=。。。
案例6'F栏
乘数=。。。
结束选择
如果是数字(rng.Value),则
rng.Value=rng.Value*乘数
如果结束
下一个
如果结束
安全出口:
Application.EnableEvents=True
端接头

有多少列?发布了答案,但可能有一个更简单的方法。嗨@BigBen,我想为五列B到F做这件事。我想如果我知道如何为不止一列做这件事,我可以为其余的列做这件事。你能告诉我如何为另一行做这件事吗?假设D列应该在400之前完成。请查看对我的a的编辑当我尝试运行代码时,会弹出一个语法错误