返回列表 上一主題 發帖

避免重複執行程式

回復 1# myleoyes
以下是你所提供的部分程式 :
Sub HA()
    Range("H3:H152") = ""
    Range("H4").FormulaR1C1 = "=SUM(R[-1]C*R[-1]C[-4],R[-1]C,RC[-1])"
    Range("H4").AutoFill Destination:=Range("H4:H" & [A152].End(3).Row), Type:=xlFillDefault
    Range("H3").Select
    Range("H:H").EntireColumn.AutoFit
End Sub
Sub MA()
    Range("M3:M152") = ""
    Range("M3").FormulaR1C1 = "=RC[-8]"
    Range("M4").FormulaR1C1 = "=SUM(R[-1]C*RC[-9],R[-1]C,R3C13)"
    Range("M4").AutoFill Destination:=Range("M4:M" & [c1526].End(3).Row), Type:=xlFillDefault
    ActiveCell.Select
    [M3].End(xlDown)(2, 1).FormulaR1C1 = "=SUM(R[-1]C*RC[-9],R[-1]C)"
    R = [M152].End(xlUp).Row
    S = "M" & R & ":M" & [A152].End(xlUp).Row
    Range("M" & R).AutoFill Destination:=Range(S), Type:=xlFillDefault
    Range("M3").Select
    Range("M:M").EntireColumn.AutoFit
End Sub

目前僅看出 H3 之所以會沒資料,
似乎是你的程式在清空後本就沒有給 H3 值.

TOP

本帖最後由 luhpro 於 2010-12-22 22:22 編輯

你的檔案裡說 :
AB6作為填滿的開始列,就是(A5)的位置
AB7作為填滿的間隔列數
從A3開始往下填滿,請問程式為何?


上面的敘述在邏輯上有些怪怪的,
以 A5 作為填滿的開始列,
填滿的間隔列數是 10
再看你特地將 A5、A15、A25 框起來,
我猜你的意思是說填滿的對象是你框起來的那些儲存格A5、A15、A25、....

但你底下又補充說要以 A3 為填滿開始的儲存格,
3 + 10 = 13
怎麼樣也不會對應到 A15 呢.

那麼到底你是要對 A3、A13、A23、... 還是 A5、A15、A25、... 做填滿呢?


另外若是你想用 AutoFill 函數的話, 該函數的說明裡有提到 :

Destination     必選的 Range 物件類型。要填滿的儲存格。目標範圍必須包括來源範圍。

而在 Range 裡又有定義 :

代表某一儲存格、某一欄、某一列、某一指定範圍 (該指定範圍可包含一個或若干連續儲存格範圍) 或者某一立體範圍。

所以 AutoFill 的填滿動作是不能跳行或是跳列填滿的. (故而你上面說的 "填滿的間隔列數是 10" 的情形並不適用)

比較恰當可行的方式是用
For ... Step 10
.
.
.
Next

或是用

While iI < xxx
  .
  .
  .
  iI = iI + 10
Wend

的方式來實做.

至於想用程式來達到取得上述參照值的儲存格內容方式倒是不困難

想透過 AB6 找到 A5 可用如下方法 :

Sub AFill()
  Dim iSRow%, iRow%, iTarget%
  
  With Sheets("Sheet1")
    iSRow = .[AB6]
    iRow = .Range(.[A3], .Cells(.[A3].End(xlDown), 1)).Find(iSRow, LookIn:=xlValues).Row
    iTarget = .Cells(iRow, 1) '這個就是 A5 的位置, 只要變更後面的 1 對應到想 Fill 的欄位數即可,例如 : M5 就是 .Cells(iRow, 13)
  End With
End Sub

取得 iRow 後,
只要於迴圈內依次增加此值即可 "跳列" 對應到需要填滿的儲存格.

TOP

回復 6# myleoyes
物件不支援此屬性或方法. O.O"

我的 Office 2003 不讓我執行,
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
這三個屬性它都不認識.

為避免 失之毫釐 ; 差之千里 的情形出現,
我暫時只能先潛水了,
沒能幫到忙, 很抱歉...

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題