返回列表 上一主題 發帖

合併程式問題

合併程式問題

各位前輩  如下程式應如何合併才可執行  謝謝!
    Sub Worksheet_change(ByVal T As Range)
  A程式  
  If T.Address <> "$Q$5" Then Exit Sub
       If ActiveSheet.Range("$q$5").Cells = "kk" Then
          Run "NewB"
       ElseIf ActiveSheet.Range("$q$5").Cells = "ka" Then
          Run "NewB"
     Else
     End If

  B程式
    If T.Address <> "$F$15" Then Exit Sub
       If ActiveSheet.Range("$F$15").Cells <> ActiveSheet.Range("$F$14").Cells Then
          Run "PP1"
     End If

回復 1# jim
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   Select Case Target.Address(False, False)
  3.   Case "Q5"
  4.     If Target.Value = "kk" Or Target.Value = "ka" Then Run "NewB"
  5.   Case "F15"
  6.     If Target.Value <> Range("F14").Value Then Run "PP1"
  7.   End Select
  8. End Sub
複製代碼

TOP

回復 2# stillfish00
stillfish00對不起
應該是
     If ActiveSheet.Range("$q$5").Cells = "kk" Then
          Run "NewA"
       ElseIf ActiveSheet.Range("$q$5").Cells = "ka" Then
          Run "NewB"
程式是否可以這樣寫  請指正
  If Target.Value="kk" then
     Run "NewA
ElseIf Target.Value="ka" then
  run "NewB"
else

End if

TOP

回復  stillfish00
stillfish00對不起
應該是
     If ActiveSheet.Range("$q$5").Cells = "kk" Then
...
jim 發表於 2014-9-4 12:42

可以改成底下這樣 : (善用 With 可以少打很多字, 當條件超過兩個時, 可以考慮用 Select Case 函數, Run 是用在須傳回 Range 時, 必要時可以省略)
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   
  3.   With Target
  4.     Select Case .Address(False, False)
  5.       Case "Q5"
  6.          Select Case .Value
  7.            
  8.            Case "kk"
  9.              NewA

  10.            Case "ka"
  11.              NewB
  12.          
  13.          End Select
  14.          
  15.       Case "F15"
  16.         If .Value <> [F14] Then PP1
  17.         
  18.     End Select
  19.   End With
  20. End Sub
複製代碼

TOP

回復 4# luhpro
luhpro thanks

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題