返回列表 上一主題 發帖

避免重複執行程式

避免重複執行程式

各位前輩你們好!
         前輩!問題如附檔說明
         請知道的前輩,不吝賜教謝謝再三!!

Leov37.rar (14.72 KB)

回復 15# GBKEE
GBKEE良師你好!
   良師!謝謝!已經可以應付主管的要求囉!
      不好意思再浪費你寶貴的時間謝謝再三!!

TOP

回復 14# myleoyes
還欠缺什麼?? 清填滿嗎?
自己可以試試加上 清填滿的條件.

TOP

回復 13# GBKEE
GBKEE良師你好!
   良師!謝謝!辛苦囉!謝謝再三!!
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target(1), Range("A5:A152")) Is Nothing Then
        If Target(1) <> "" And Range("AB5") = "" And Range("AB8") = "" Then 填滿
    End If
    If Not Intersect(Target(1), Range("H1:I2,M1:M2")) Is Nothing Then
    End If
        Select Case Target(1).Address(0, 0)
        Case "C1"
            If Range("AB5") = 1 Or Range("AB8") = 2 Then 清填滿
            Range("AB5") = ""
        Case "H1"
            HA
        Case "H2"
            HB
        Case "I1"
            IA
        Case "I2"
            IB
        Case "M1"
            MA
        Case "M2"
            MB
    End Select
End Sub

TOP

回復 12# myleoyes
是這樣嗎?
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     If Not Intersect(Target(1), Range("A5:A152")) Is Nothing Then
  3.         If Target(1) <> "" And Range("AB5") = "" And Range("AB8") = "" Then 填滿
  4.     End If
  5.     If Not Intersect(Target(1), Range("H1:I2,M1:M2")) Is Nothing Then
  6.         If Range("AB5") = 1 Or Range("AB8") = 2 Then 清填滿
  7.         Range("AB5") = ""
  8.         Select Case Target(1).Address(0, 0)
  9.             Case "H1"
  10.                 HA
  11.             Case "H2"
  12.                 HB
  13.             Case "I1"
  14.                 IA
  15.             Case "I2"
  16.                 IB
  17.             Case "M1"
  18.                 MA
  19.             Case "M2"
  20.                 MB
  21.         End Select
  22.     End If
  23. End Sub
複製代碼

TOP

回復 10# myleoyes
GBKEE良師你好!
   良師!謝謝!不好意思..你可能有些誤解
           再附檔這是經過實際測試OK!的檔
           良師!其實你只要將找到位置與參照填滿
           合併就可以囉!因為找到位置的方式
           必須要在A欄作自訂格式,否則程式
           永遠只會找到AB6的位置不會找不到
           A欄的位置,辛苦囉!謝謝再三!!

Leov37-7.rar (19.59 KB)

TOP

本帖最後由 GBKEE 於 2010-12-26 16:49 編輯

回復 10# myleoyes
自動填滿:  ActiveCell 在A欄 ,是  "C:E,G:I,M:M" 等欄的填滿 .
手動填滿: 按鈕8A ,按鈕9A,按鈕10A    是各欄單獨的的填滿.
都依據 AB5:AB7 的數據來填滿的   
這樣的說法對嗎?
請問數字填滿的等差數,都是依據 AB5的數字嗎?
標題3  差2位,  標題5 差1位,標題7 連續 沒有一致規則性?
標題3標題4標題5標題7
2 0.065 10  
4 0.065 11 5
6 0.065 12 5

TOP

回復 9# GBKEE
GBKEE良師你好!
   良師!謝謝!程式的想法有誤
           小弟如此比喻填滿分為手動(填滿)
           與自動(填滿)兩部份解釋
           當執行手動(填滿)時,加入Range("AB6") = ActiveCell
           這一行作為自動(填滿)開始列的參照位置
           加入Range("AB7") = ZZ
           這一行作為自動(填滿)間隔列數的參照數據
           加入Range("AB5") = 1
           這一行作為關閉手動(填滿)A欄的開關
           因為A欄是觸發點,所以要執行自動(填滿)必須關閉手動(填滿)
           因此只要手動(填滿)作任何動作,都會留下軌跡
           供自動(填滿)作依據,確保動作一致無誤
           所以要執行自動(填滿)就必須先找到A欄的位置
           如今良師將手動(填滿)與自動(填滿)兩部份
           合併為單一程式,所以執行手動(填滿)是OK!!
           但當按鈕9A時就凸槌囉!!因為你的程式
           Dim E&, i&, R As Range, T%, ZZ
             Range("AB6") = ActiveCell這一列依然存在
           所以AB6會將原來的數字變成按鈕9A
           因而失去功能如附檔請參考看看
           辛苦囉!謝謝再三!!

Leov37-6.rar (18.63 KB)

TOP

回復 8# myleoyes
是這樣嗎?
  1. Sub 填滿()
  2.      Dim E&, i&, R As Range, T%,ZZ
  3.      Range("AB6") = ActiveCell
  4.      E = Cells(ActiveCell.Row, 1).End(xlDown).Row
  5. Again:
  6.       ZZ = Application.InputBox("請輸入列數", "請輸入填滿間隔列數", 10, Type:=2)
  7.       If ZZ = "" Or ZZ = False Then End
  8.       Range("AB7") = ZZ
  9.       If ZZ <= 0 Then
  10.         MsgBox "列數間隔不得小於1列!!!", , "列數錯誤請重新輸入 !!"
  11.         GoTo Again
  12.       End If
  13.       Range("AB5") = 1
  14.     Application.EnableEvents = False
  15.     For i = ActiveCell.Row To E
  16.         For Each R In Range("c:e,g:i,m:m").Columns
  17.             T = IIf(i + ZZ <= E, ZZ + 1, E - i + 1)
  18.             If Mid(R.Cells(i).Formula, 1, 1) = "=" Then
  19.                 R.Cells(i).AutoFill R.Cells(i).Resize(T)
  20.             Else
  21.                 R.Cells(i).Offset(-1).Resize(2).AutoFill R.Cells(i).Offset(-1).Resize(T + 1)
  22.             End If
  23.         Next
  24.         Cells(i, 1).Resize(, 15).Interior.ColorIndex = 34
  25.         i = i + ZZ - 1
  26.     Next
  27.     Application.EnableEvents = True
  28. End Sub
複製代碼

TOP

回復 7# luhpro
luhpro前輩你好!
         前輩!非常感激謝謝!再附檔案
         Leov37-5,Leov37-51在2003應可以執行,將原填滿程式
         Sub 填滿()
             Dim E&, i&
             Range("AB6") = ActiveCell '加入這一行開始列的參照位置
             E = Cells(ActiveCell.Row, 1).End(xlDown).Row
         Again:
             ZZ = Application.InputBox("請輸入列數", "請輸入填滿間隔列數", 10, Type:=2)
             If ZZ = "" Or ZZ = False Then End
             Range("AB7") = ZZ '加入這一行間隔列數的參照數據
             If ZZ <= 0 Then
             MsgBox "列數間隔不得小於1列!!!", , "列數錯誤請重新輸入 !!"
             GoTo Again
             End If
             For i = ActiveCell.Row To E Step ZZ
             With Cells(i, 1).Resize(, 15).Interior
            .ColorIndex = 34
         End With
            Next
            Range("AB5") = 1 '加入這一行A欄的參照開關
         End Sub
         所以當資料改完後執行參照填滿
         因為小弟能力不足,所以用拼湊的方式
         先找到位置再執行填滿,就能解決困擾的問題
         Sub IA()
             清除填滿
                 HA
             MA
             參照填滿
             Range("I3").Select
             Range("I:I").EntireColumn.AutoFit
         End Sub
         Sub 參照填滿()
             Dim E&, i&
             找到位置
             E = Cells(ActiveCell.Row, 1).End(xlDown).Row
             For i = ActiveCell.Row To E Step Range("AB7")
             With Cells(i, 1).Resize(, 15).Interior
                  .ColorIndex = 34
             End With
             Next
             Range("AB5:AB7") = ""
         End Sub
         Sub 找到位置()
             With Sheet1
             Set c = Range("AB6")
             Set Rng = .Cells.Find(Format(c, "0列"), LookIn:=xlValues, LookAt:=xlWhole)
                 .Select
             If Not Rng Is Nothing Then Rng.Select
          End With
          End Sub
          只是原本應該不需要如此複雜
          無奈!!能力只有如此這般..!!
          前輩能否簡化程式嗎?
          希望有能力的前輩,請不吝賜教謝謝再三!!
          小弟在此順祝各位前輩!
              聖誕節快樂!!身體健康事事如意...

Leov37-5.rar (13.77 KB)

Leov37-51.rar (13.24 KB)

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題