Vba 将单词Winner插入O列的子项
当用户从下拉列表中选择单词Jackpot时,尝试将单词Winner插入O列Vba 将单词Winner插入O列的子项,vba,excel,Vba,Excel,当用户从下拉列表中选择单词Jackpot时,尝试将单词Winner插入O列 Private Sub Worksheet_SelectionChange(ByVal Target As Range) For x = 6 To 88 If Cells(x, 14).Value = "Jackpot" Then Cells(x, 15).Value = "Winnner" ElseIf Cells(x, 14).Value <>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For x = 6 To 88
If Cells(x, 14).Value = "Jackpot" Then
Cells(x, 15).Value = "Winnner"
ElseIf Cells(x, 14).Value <> "High" Then
Cells(x, 15).Value = " "
End If
Next x
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)
对于x=6到88
如果单元格(x,14).Value=“Jackpot”,则
单元格(x,15)。Value=“Winnner”
ElseIf细胞(x,14)。那么值为“高”
单元格(x,15)。Value=“”
如果结束
下一个x
端接头
我遇到的问题是,当用户使用任何文本填充O列时,该过程不应覆盖文本条目
我不知道如何编写一个VBA代码,使文本条目保持不变,而不让过程覆盖它。如果使用activeX控件组合列表,则可以为其指定一个宏,该宏将在“更新”时运行
检查这个
Private Sub ComboBox1_Change()
If ComboBox1.Value = "JackPot" Then
Range("o1").Offset(0, 1).Value = "Winner"
End If
End Sub
Private Sub ComboBox1_DropButtonClick()
With Me.ComboBox1
.AddItem "JackPot"
.AddItem "high"
End With
End Sub
偏移量是错误的,但一开始我用它去了其他地方。。。。应该很容易从那里找到您要查找的事件宏,而不是事件宏 只要工作表上的任何值发生更改(但不是通过公式),就会触发工作表更改。因此,如果要使用Sub更改O列中的值,则需要在进行更改时暂时挂起事件处理,否则工作表更改可能会自行运行 当工作表上的更改触发工作表更改时,您需要确定目标(接收更改的单元格)是否在您关注的单元格范围内。这是通过以下步骤完成的。在下面的示例中,目标中的一个或多个单元格必须位于第6行和第88行之间的N列中。如果有一个或多个单元格,则使用a循环通过满足条件的每个单元格 每个匹配的单元格都按顺序检查其值。该方法可以轻松处理多种可能的结果 将上面讨论的所有要点放在一起,您应该得到如下代码
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Long
If Not Intersect(Target, Columns(14), Range("6:88")) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim win As Range
For Each win In Intersect(Target, Columns(14), Range("6:88"))
Select Case LCase(win.Value2)
Case "jackpot"
win.Offset(0, 1) = "Winnner" '<~~ ?? spelling...??
Case "high"
' do nothing...?
Case Else
win.Offset(0, 1).ClearContents
End Select
Next win
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
选项显式
私有子工作表_更改(ByVal目标作为范围)
暗x等长
如果不相交(目标,列(14),范围(“6:88”))则为零
错误转到bm_安全出口
Application.EnableEvents=False
作为射程
对于Intersect中的每一项胜利(目标、第(14)列、范围(“6:88”))
选择案例LCase(win.Value2)
案例“头奖”
win.Offset(0,1)=“Winnner”工作表\u SelectionChange表示每次单击工作表中的任意位置时,宏运行以及所有要替换的内容。为了让宏不改变用户改变的值,你必须用一些东西来标识该值,例如,如果该单元格不是空的,并且它不是什么东西,那么这意味着不需要有人在技术上改变偏移量,我只是比必要的时候更喜欢。您可以直接声明单元格值。答案解释得很好!