Vba 射程及;使用多页的If语句

Vba 射程及;使用多页的If语句,vba,excel,Vba,Excel,我有几个表涉及,但我会有表2活动。当我在“工作表2”上时,我需要知道单元格(“C14”)在我猜测的IF语句中何时变为活动状态。一旦激活,我需要知道第1页单元格(“B2”)中的字符串是否为“战斗机”,然后我想在第2页单元格(“C14”)中插入“关于战斗机的一些措辞”。如果不是“战士”,那是“法师”吗?如果是这样,那么在这里插入“关于法师的一些措辞” 例如,这就是速记 如果活页2上的单元格C14处于激活状态,则 检查活页1上的单元格B2。如果文本为“战斗机”?然后 在单元格C14表单2中插入“你勇敢

我有几个表涉及,但我会有表2活动。当我在“工作表2”上时,我需要知道单元格(“C14”)在我猜测的IF语句中何时变为活动状态。一旦激活,我需要知道第1页单元格(“B2”)中的字符串是否为“战斗机”,然后我想在第2页单元格(“C14”)中插入“关于战斗机的一些措辞”。如果不是“战士”,那是“法师”吗?如果是这样,那么在这里插入“关于法师的一些措辞”

例如,这就是速记

如果活页2上的单元格C14处于激活状态,则 检查活页1上的单元格B2。如果文本为“战斗机”?然后 在单元格C14表单2中插入“你勇敢并使用剑” 如果它不等于战士,那么它是不是=“法师”?然后 在单元格C14表2中插入“你施法” 等等


我需要知道如何在VBA中编写此代码。我花了好几个小时搜索和尝试各种代码,但似乎都做不好。提前感谢您的帮助。

尝试以下方法:

'The way you check which cell is active is by using an
'Event like this one. This goes into the Sheet2 code module
'which you can get to by right clicking on the sheet's tab and
'selecting View Code.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim rng_Source As Excel.Range
    Dim rng_Target As Excel.Range

    On Error GoTo ErrorHandler

    'Setting the cells that you're interested in as
    'ranges will help minimise typo errors.
    Set rng_Target = ThisWorkbook.Sheets("Sheet2").Range("C14")
    Set rng_Source = ThisWorkbook.Sheets("Sheet1").Range("B2")

    'Target is a range that specifies the new
    'selection. Check its address against rng_Target
    'which we defined above.
    If Target.Address <> rng_Target.Address Then
        Exit Sub
    End If

    'If you don't want case sensitivity, convert to upper case.
    If UCase(rng_Source.Value) = "FIGHTER" Then
        rng_Target.Value = "some wording regarding the fighter here"
    ElseIf UCase(rng_Source.Value) = "MAGE" Then
        rng_Target.Value = "You cast spells"
    'You get the idea.
    End If

    ExitPoint:
    On Error Resume Next
    'Clean up
    Set rng_Source = Nothing
    Set rng_Target = Nothing

    On Error GoTo 0

    Exit Sub

    ErrorHandler:

    MsgBox "Error " & Err.Number & vbCrLf _
     & Err.Description

    Resume ExitPoint

End Sub
“检查哪个单元格处于活动状态的方法是使用
“像这样的事件。这将进入Sheet2代码模块
'右键单击工作表的选项卡并单击
'选择查看代码。
专用子工作表\u选择更改(ByVal目标作为范围)
作为Excel.Range的Dim rng_源
作为Excel.Range的Dim rng_目标
关于错误转到错误处理程序
'将您感兴趣的单元格设置为
“范围将有助于减少打字错误。
设置rng_目标=此工作簿。工作表(“Sheet2”)。范围(“C14”)
设置rng_Source=ThisWorkbook.Sheets(“Sheet1”).Range(“B2”)
'目标是指定新目标的范围
"选择,。对照rng_目标检查其地址
“这是我们上面定义的。
如果Target.Address rng_Target.Address,则
出口接头
如果结束
'如果不需要区分大小写,请转换为大写。
如果UCase(rng_Source.Value)=“战斗机”,则
rng_Target.Value=“这里有一些关于战斗机的措辞”
ElseIf UCase(rng_Source.Value)=“MAGE”然后
rng_Target.Value=“你施法”
“你明白了。
如果结束
出口点:
出错时继续下一步
“清理
设置rng_源=无
设置rng_目标=无
错误转到0
出口接头
错误处理程序:
MsgBox“错误”&错误编号和vbCrLf_
&错误描述
恢复退出点
端接头
我确实同意你应该总是发布你已经尝试过的代码(你后来也尝试过),但这是一个相对琐碎的代码,这只是清除了它的影响,并且可能对其他人将来也有用。

试试这个;)


您确定excel是您尝试做的事情的最佳平台选择吗?请只回答。这不是本网站的工作方式。伙计:P您可以使用宏在excel中做您尝试做的事情,但是如果您只知道VBAIt是可能的,那么使用Access做起来就更容易了。您只需要知道代码。@user1484182,是的,这是可能的,但是当您被困在某个地方时,本网站将帮助您解决代码问题。试着自己做,然后发布你的代码。谢谢艾伦!你完全明白了。但是,我得到了一个错误“Compile error”(编译错误),应该是end sub。请确保在复制代码时,您是在底部拾取end sub riiiiiiiiiiiiiiiiiilight(或者只是键入它)。我最好的猜测是,它只是没有正确地复制。ZygD-它工作了!我猜你是个法师。我必须拆除味精盒,但我想我能处理。你这个大法师!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo errH
    Dim rng1 As Range
    Set rng1 = ThisWorkbook.Worksheets(1).Range("B2")
    If Not Intersect(Target, Me.Range("C14")) Is Nothing Then
        Application.EnableEvents = False
            If rng1.Value2 = "Mage" Then
                Target.Value = "OMG This is MAGE!!! Run run run away!!!"
            ElseIf rng1.Value2 = "Fighter" Then
                Target.Value = "Fighter? :/ Was hoping for something better"
                MsgBox "Fighter? :/ Was hoping for something better"
                rng1.Value2 = "Mage"
                Target.Value = "Mage. Now This is better ;)"
            Else
                Target.Value = "No, we haven't discussed it."
            End If
        Application.EnableEvents = True
    End If
    Exit Sub
errH:
    MsgBox ("Error number: " & Err.Number & "Description: " & Err.Description)
    Application.EnableEvents = True
End Sub