Board logo

標題: 請教儲存格內容比較與運算問題(已解決) [打印本頁]

作者: jiuhtsair    時間: 2011-4-25 19:48     標題: 請教儲存格內容比較與運算問題(已解決)

本帖最後由 jiuhtsair 於 2011-8-23 17:54 編輯

我有五個儲存格分別是A1,B1,C1,D1,E1,F1,G1。如果A1小於或等於B1則將C1的內容與D1的內容相加放入D1,否則便將C1的內容與E1的內容相加放入E1。
我寫的程式碼如下,可是沒有作用,請大大們幫我看看哪裡錯了!謝謝!
     
        X = Sheets(1).Cells(1, 1)   'A1內容
        Y = Sheets(1).Cells(1, 2)   'B1內容
        Z = Sheets(1).Cells(1, 3)   'C1內容
        

        If X <= Y Then Sheets(1).Cells(1, 4) = Z Else Sheets(1).Cells(1, 5) = Z    '如果A1<=B1則D1=C1 否則 E1=C1
        
        Sheets(1).Cells(1, 6) = bid_t1    'bid_t1=D1
        Sheets(1).Cells(1, 7) = ask_t1    'ask_t1=E1
        
       If X <= Y Then bid_t1 = bid_t1 + Z Else ask_t1 = ask_t1 + Z   '如果A1<=B1則C1 +D1放入D1否則 C1+E1放入E1
作者: jiuhtsair    時間: 2011-4-25 19:56

抱歉!陳述有所錯誤,重新陳述:
我有七個儲存格分別是A1,B1,C1,D1,E1,F1,G1。如果A1小於或等於B1則將C1的內容放入D1,同時將C1的內容與D1的內容相加放入F1,否則便將C1的內容與E1的內容相加放放入G1。
我寫的程式碼如下,可是沒有作用,請大大們幫我看看哪裡錯了!謝謝!
     
        X = Sheets(1).Cells(1, 1)   'A1內容
        Y = Sheets(1).Cells(1, 2)   'B1內容
        Z = Sheets(1).Cells(1, 3)   'C1內容
        

        If X <= Y Then Sheets(1).Cells(1, 4) = Z Else Sheets(1).Cells(1, 5) = Z    '如果A1<=B1則D1=C1 否則 E1=C1
        
        Sheets(1).Cells(1, 6) = bid_t1    'bid_t1=F1
        Sheets(1).Cells(1, 7) = ask_t1    'ask_t1=G1
        
       If X <= Y Then bid_t1 = bid_t1 + Z Else ask_t1 = ask_t1 + Z   '如果A1<=B1則C1 +D1放入F1否則 C1+E1放入G1
作者: Hsieh    時間: 2011-4-25 23:34

if [A1]<=[B1] then
[D1]=[C1].value:[F1]=[C1]+[D1]
else
[G1]=[C1]+[E1]
end if
作者: jiuhtsair    時間: 2011-4-26 19:36

我把程式輸入,同時輸入A1,B1,C1三個儲存格數值,執行後沒有告訴我任何錯誤..有執行 If ...Then...Else的判斷式..但是D1,E1,F1,G1都沒有任何動作,.想請教要如何修改?謝謝!

Private Sub Worksheet_Calculate()
On Error Resume Next
        
        C1 = Sheets(1).Cells(1, 1) 'A1
        B1 = Sheets(1).Cells(1, 2) 'B1
        S1 = Sheets(1).Cells(1, 3) 'C1
        
        bid_s1 = Sheets(1).Cells(1, 4) 'D1
        bid_t1 = Sheets(1).Cells(1, 5) 'F1
        
        ask_s1 = Sheets(1).Cells(1, 6)  'E1
        ask_t1 = Sheets(1).Cells(1, 7)  'G!
        
              
        
        If [C1] <= [B1] Then [bid_s1] = [S1].Value: [bid_t1] = [bid_t1] + [S1] Else [ask_s1] = [S1].Value: [ask_t1] = [ask_t1] + [S1]
        
        
        
        
End Sub
作者: jiuhtsair    時間: 2011-4-26 20:15

我發現自己少打了end if,加入後,程式如下:

Private Sub Worksheet_Calculate()
On Error Resume Next
        
        C1 = Sheets(1).Cells(1, 1) 'A1
        B1 = Sheets(1).Cells(1, 2) 'B1
        S1 = Sheets(1).Cells(1, 3) 'C1
        
        bid_s1 = Sheets(1).Cells(1, 4) 'D1
        bid_t1 = Sheets(1).Cells(1, 5) 'F1
        
        ask_s1 = Sheets(1).Cells(1, 6)  'E1
        ask_t1 = Sheets(1).Cells(1, 7)  'G!
        
               
        
        If [C1] <= [B1] Then
                        [bid_s1] = [S1].Value: [bid_t1] = [bid_t1] + [S1]
                        Else
                        [bid_s1] = [S1].Value: [bid_t1] = [bid_t1] + [S1]
        
        
        End If
        
        
        
End Sub

但是結果仍是一樣...D1,E1,F1,G1都沒有數字出現....
作者: Hsieh    時間: 2011-4-26 21:02

1.Worksheet_Calculate是由公式重算觸發,輸入數值是觸發Change事件
2.變數與儲存格標示觀念混淆
[bid_t1]你沒有這樣的名稱
bid_t1是變數不能用中刮弧包裝
若變數要指定為儲存格物件必須使用Set陳述式
依照你的敘述,A1跟B1應該是用公式取得才能使用Calculate事件
程式碼:
  1. Private Sub Worksheet_Calculate()
  2. If [A1] <= [B1] Then
  3. [D1] = [C1].Value: [F1] = [C1] + [D1]
  4. Else
  5. [G1] = [C1] + [E1]
  6. End If
  7. End Sub
複製代碼

作者: jiuhtsair    時間: 2011-4-26 22:38

謝謝大大費心解答!這個解答對我有些難以理解。我先研究Worksheet_Calculate和Change事件,等有所了解再來請教...謝謝!




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