Board logo

標題: 合併程式問題 [打印本頁]

作者: jim    時間: 2014-9-4 09:24     標題: 合併程式問題

各位前輩  如下程式應如何合併才可執行  謝謝!
    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
作者: stillfish00    時間: 2014-9-4 11:32

回復 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
複製代碼

作者: jim    時間: 2014-9-4 12:42

回復 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
作者: luhpro    時間: 2014-9-4 22:34

回復  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
複製代碼

作者: jim    時間: 2014-9-5 05:44

回復 4# luhpro
luhpro thanks




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)