Board logo

標題: [發問] 不知道哪裡出問題 執行階段錯誤 [打印本頁]

作者: j88141    時間: 2014-3-13 21:35     標題: 不知道哪裡出問題 執行階段錯誤

本帖最後由 j88141 於 2014-3-13 21:38 編輯

不知道哪裡做錯
執行不出來
謝謝各位指教
[attach]17756[/attach]

Private Sub Worksheet_Change(ByVal myRange As Range)

Set myRange = Worksheets(1).Range("A1")
   

   Range("A1") = "=SUM(B1:B10)"     '儲存格A1 等於  SUM(B1:B10)
         
       If Range("A1") >= Range("E1") And Range("A1") <= Range("G1") Then
       '如果 儲存格A1 大於等於 儲存格E1 和 小於儲存格G1的話

            MsgBox Range("D1") & 和& & Range("F1"), vbOKOnly
       '顯示.....

       ElseIf Range("A1") < Range("E1") Then
       '如果儲存格A1小於儲存格E1

            Range("A1").Interior.ColorIndex = 3
            '儲存格顯示紅色
  
       ElseIf Range("A1") > Range("F1") Then
       '如果儲存格A1大於儲存格F1

            MsgBox Range("E1") & 和& & Range("G1"), vbCritical
       '顯示.....
       End If
  
End Sub
作者: owen06    時間: 2014-3-14 00:12

回復 1# j88141
  1. Private Sub Worksheet_Change(ByVal myRange As Range)
  2. Application.EnableEvents = False

  3. Set myRange = Sheet1.Range("A1")

  4.    Range("A1") = "=SUM(B1:B10)"     '儲存格A1 等於  SUM(B1:B10)

  5.        If Range("A1") >= Range("E1") And Range("A1") <= Range("G1") Then
  6.        '如果 儲存格A1 大於等於 儲存格E1 和 小於儲存格G1的話

  7.             MsgBox Range("D1") & 和& & Range("F1"), vbOKOnly
  8.        '顯示.....

  9.        ElseIf Range("A1") < Range("E1") Then
  10.        '如果儲存格A1小於儲存格E1

  11.             Range("A1").Interior.ColorIndex = 3
  12.             '儲存格顯示紅色
  13.   
  14.        ElseIf Range("A1") > Range("F1") Then
  15.        '如果儲存格A1大於儲存格F1

  16.             MsgBox Range("E1") & 和& & Range("G1"), vbCritical
  17.        '顯示.....
  18.       
  19.       End If
  20.   
  21.   Application.EnableEvents = True
  22. End Sub
複製代碼

作者: j88141    時間: 2014-3-14 00:22

回復 2# owen06


    照你這樣輸入
可是程式好像也不理我
附檔案給你
剛好剛剛升級成中學生
可以下載附件了
[attach]17761[/attach]
作者: Hsieh    時間: 2014-3-14 08:17

回復 3# j88141
Worksheet_Change事件程序,是在工作表內容改變時觸發
你在參數中設置了ByVal myRange As Range
代表改變的儲存格是myRange
你沒必要在程序內又設置Set myRange = 工作表1.Range("A1")
雖然這樣設置如果是在同一工作表內並無不可
但是,如果要在程序中用到取得當前變化之儲存格時就會喪失
猜測看看是否是你要的
  1. Private Sub Worksheet_Change(ByVal myRange As Range)
  2. If Intersect(myRange, [B1:B10]) Is Nothing Then Exit Sub '變動儲存格不在B1:B10則退出程序
  3.    Range("A1") = Application.Sum([B1:B10])     '儲存格A1 等於  SUM(B1:B10)

  4.        If Range("A1") >= Range("E1") And Range("A1") <= Range("G1") Then
  5.        '如果 儲存格A1 大於等於 儲存格E1 和 小於儲存格G1的話

  6.             MsgBox Range("D1") & 和& & Range("F1"), vbOKOnly
  7.        '顯示.....

  8.        ElseIf Range("A1") < Range("E1") Then
  9.        '如果儲存格A1小於儲存格E1

  10.             Range("A1").Interior.ColorIndex = 3
  11.             '儲存格顯示紅色
  12.   
  13.        ElseIf Range("A1") > Range("F1") Then
  14.        '如果儲存格A1大於儲存格F1

  15.             MsgBox Range("E1") & "和&" & Range("G1"), vbCritical
  16.        '顯示.....
  17.       
  18.       End If
  19. End Sub
複製代碼

作者: j88141    時間: 2014-3-15 22:14

回復 4# Hsieh


    可以用~謝謝
作者: j88141    時間: 2014-3-16 12:15

回復 4# Hsieh

    可以再請教Hsieh 版主
比如說如果我想在

儲存格 B5  加入  
=COUNTIF(E6,"蘋果")+COUNTIF(E10,"蘋果")+COUNTIF(E14,"蘋果")+COUNTIF(E18,"蘋果")+COUNTIF(E22,"蘋果")
儲存格B7 加入
=COUNTIF(E8,"蘋果")+COUNTIF(E11,"香蕉")+COUNTIF(E15,"香蕉")+COUNTIF(E19,"香蕉")+COUNTIF(E23,"香蕉")
的話

程式碼就不能執行了

那程式碼該如何改寫呢?
謝謝Hsieh 版主幫忙




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