[英]Using VBA code to Copy Specific value from a cell when the dropdown box changes that value
我是VBA的新手,直到最近才发展我的Excel技能。
我为投资项目情况创建了3种不同的方案,这些方案作为下拉框显示在单元格“ h13”中,其中提供了三个选项,最佳情况/最坏情况/基本情况。
当您选择每种方案时,各种输出都会在工作表上更改,我设置了以下代码来更改输出并根据方案显示相关的输出:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$13" Then
ActiveSheet.Scenarios(Target.Value).Show
End If
现在,我要实现以下目标:
在单元格E13中,我有一个主要关注的数值(我应该注意,这是NPV公式)。 每次我们更改方案时,此值都会明显更改。 我想创建一个简单的汇总表,如下所示:方案1 = x方案2 = y方案3 = z因此,理想情况下,我想做的是,当我们选择方案1时,我们从E13中复制值表示B21 。 当我们选择下一个方案时,E13将会明显改变,但是我希望B21的复制值保持不变,现在新的方案2值将显示在B22中。
我不知道该怎么做? 我尝试将其添加到底部,但值不会保持“静态”
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("h13")) Is Nothing Then
Range("E13").Copy
Range("B21:B23").PasteSpecial xlPasteValues
End If
End Sub
现在我想我知道我需要创建一个引用,以便它会读取类似e13 = y然后复制,下一个e13 = x复制并循环的内容? 直到所有结果发生为止。 虽然不确定如何做到。
任何帮助将不胜感激,我已尝试过尽可能多地阅读此书,但由于我对此非常陌生,因此我无法真正确切地指出我在代码方面的需求
提前致谢。
此解决方案在B20:D23
的“范围\\表”中显示结果(请参见下图)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rTbl As Range, lRow As Long
Application.EnableEvents = False 'To avoid triggering again when table is updated
If Target.Address = "$H$13" Then
Rem Filters value in target range
Select Case Target.Value2
Case "Base case", "Best case", "Worst case" 'Change as required
Case Else: GoTo ExitTkn 'Value is not in the list then exit
End Select
Rem Show Scenario
ActiveSheet.Scenarios(Target.Value).Show
Rem Update Results
Set rTbl = Range("B21").Resize(3, 3) 'Change as required
With rTbl
lRow = WorksheetFunction.Match(Target.Value, .Columns(1), 0)
.Cells(lRow, 2).Value = Range("E13").Value2 'Updates result - Change as required
.Cells(lRow, 3).Value = Range("D13").Value2 'Updates scenario variable - Change as required
End With
End If
ExitTkn:
Application.EnableEvents = True
End Sub
建议阅读以下页面,以更深入地了解所使用的资源:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.