返回列表 上一主題 發帖

[發問] 想請問欄位紀錄最大最小值得最佳做法

回復 1# saleen

不曉得您所謂一值變動,指的是多久變動一次
如果一值變動,您的工作表也無法運作?

如果不是一值變動
試試看下面程式碼
放在該Sheet內即可使用
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Cells(1, 1) > Cells(1, 2) Then
  3.         Cells(1, 2) = Cells(1, 1)
  4.     ElseIf Cells(1, 1) < Cells(2, 2) Then
  5.         Cells(2, 2) = Cells(1, 1)
  6.     End If
  7. End Sub
複製代碼
PKKO

TOP

本帖最後由 PKKO 於 2015-1-9 14:45 編輯

回復 4# saleen
Tes.rar (12.26 KB)
一、您的程式要放在該sheet的模組內才有效果
二、您的with 不能連接著sheet,要分開如下
三、不屬於開啟或儲存或關閉或作用中的程式類別,不太需要放在ThisWorkbook的模組內
四、下面的[B1]這種寫法,運算速度比range("B1")還慢,最快的是cells(1,2),若您的資料時常在變,最好用最快速的運作方式
若指定A1變動才變動,如下請試試看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Address <> "$A$1" Then Exit Sub
  3.     With Sheets("Sheet1")
  4.         If [B1] > [A1] Then
  5.             [B1] = [A1]
  6.         ElseIf [C1] < [A1] Then
  7.             [C1] = [A1]
  8.         End If
  9.     End With
  10. End Sub
複製代碼
PKKO

TOP

回復 6# saleen
如果這樣寫,只要不是A1就會跳出了哦
If Target.Address <> "$A$1" Then Exit Sub
If Target.Address <> "$A$2" Then Exit Sub
If Target.Address <> "$A$3" Then Exit Sub

必須要改成
  1. Select Case Target.Address
  2.     Case "$A$1"
  3.         MsgBox "!!"
  4.         
  5.     Case "$A$2"
  6.         MsgBox "!!"
  7.         
  8.     Case Else
  9.         Exit Sub
  10.     End Select
複製代碼
當然程式寫法非常多種,也可以用if +elseif
如果CASE裡面執行程式碼都相同,也可以用GOTO 或是 CALL 來執行相同程式碼
PKKO

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題