返回列表 上一主題 發帖

間斷輸入時 如何讓程式也可以帶出資料

回復 10# hugh0620
1. 變數.Count   ?????????
Private Sub Worksheet_Change(ByVal 變數 As Range)
Range是物件  .Count 傳回物件子集合的計數

2.IsNumeric(I) 是否解讀 IsNumeric判別[I]是TRUE或是FALSE
   對的

你所附上的程式可參可9樓所修改的程式碼較為簡潔
On Error Resume Next 使用上要小心 ,如程式碼有寫錯後,執行上是不易查出錯誤在哪裡的.

TOP

回復 11# GBKEE

   謝謝大大的提醒~ 在使用上會嚴謹些
    大大是否可以舉例 On Error Resume Next 會不明易發現錯務的情況~ 給後學的晚輩參考~
學習才能提升自己

TOP

回復 11# GBKEE


    Dear 大大
        唉~ 又有問題了
        因為我的資料輸入共分成兩塊
        Part1:輸入[A]後帶出[B][C]
            Part2:輸入[B1][C1]帶出[A1]  PS:Part1與Part2在同一行上,可以分別滿足各自的條件後,自行重覆運算
            用Worksheet_SelectionChange或Worksheet_Change,可以自動外出[A][A1],但是需要[A]再按一次(CHANGE),才會再運算
        除了用CommandButton(該填的地方填完後再按),是否有其他方式可以克服,只要我滿足我所需要的條件後,就計算
        附件為問題之範本 間斷輸入時 程式如何克服_延伸題3.rar (12.85 KB)
學習才能提升自己

TOP

例如a1與b1儲存格都是文字不是數字,不能做運算。
程式碼:
On Error Resume Next
[c1] = [a1] * [b1]
這樣它不會告訴你任何錯誤訊息。

TOP

回復 13# hugh0620
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. Select Case Target.Column
  4. Case 2
  5. Set a = Sheets("DATA1").Columns(2).Find(Target, lookat:=xlWhole)
  6. If Not a Is Nothing Then Target.Offset(, 1) = a.Offset(, 1)
  7. Case 3
  8. Set a = Sheets("DATA2").Columns(2).Find(Target, lookat:=xlWhole)
  9. If Not a Is Nothing Then Target.Offset(, 1) = a.Offset(, 1)
  10. Case 6
  11. If Target <> "" And Target.Offset(, 1) <> "" Then Target.Offset(, -1) = Target * Target.Offset(, 1)
  12. Case 7
  13. If Target <> "" And Target.Offset(, -1) <> "" Then Target.Offset(, -2) = Target * Target.Offset(, -1)
  14. End Select
  15. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 15# Hsieh


    Dear 大大 若現在改成用按鈕式的方式處理 (主要是我有一部份資料要自動計算~一部份是需要匯出後資料回填後再計算~)
             這樣 ByVal Target As Range 是否就無法使用了
             該如何處理讓間斷的資料可以在按下按鈕後進行運算~
                   問題範本不變 (最後一次的範本)
學習才能提升自己

TOP

回復 16# hugh0620
你的問題應該是出在流程上
請說明檔案使用流程,按鈕作用是甚麼?
把問題敘述清楚,才能得到解答
學海無涯_不恥下問

TOP

回復 7# hugh0620
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Or Target.Column <> 2 Then
  3. Exit Sub
  4. End If
  5. On Error Resume Next
  6. Target(1, 2) = Sheet2.[B:b].Find(Target)(1, 2).Value
  7. Target(1, 3) = Sheet3.[B:b].Find(Target(1, 2))(1, 2).Value

  8. End Sub
複製代碼
另外按鍵問題,要回到傳統的sub(),這樣做會很麻煩
80 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題