返回列表 上一主題 發帖

這種依時間運算的巨集要如何寫??

本帖最後由 藍天麗池 於 2014-12-6 20:19 編輯

回復 9# GBKEE


    G大可以再幫我一次嗎??
改.rar (95.23 KB)

因為程式關係,所以這次要做點小修改,在麻煩G大一下

上次的程式是寫成往下執行,過一分鐘後再將前一個寫成值,這次我要將程式改成往右邊執行(就是這一分鐘執行T欄,下一分鐘執行U欄,且把T欄的公式寫為值,以此類推),請問一下G大,如果這樣的話程式要怎麼改呢??

簡單的說就是執行的內容不變,只是行列對調

感謝您

TOP

回復 11# 藍天麗池
  1. Option Explicit
  2. Dim NextTime As Date
  3. Sub RecordPrice()
  4.     Dim i As Integer
  5.     i = Cells(2, Columns.Count).End(xlToLeft).Column
  6.     'i: 傳回工作表最右邊的儲存格, 向左到最後有資料的儲存格的欄號
  7.     'Cells(列號, 欄號).END(向左到最後有資料的儲存格)
  8.     'Columns.Count(工作表欄物件的總計)
  9.     With Range("t2")
  10.         If .Value = "" Then
  11.             .Cells = "公式A"          '你的公式
  12.             .Cells(2) = "公式B"       '下一列的公式
  13.         ElseIf i >= .Column Then      '
  14.              '這裡沒有.Cells 為這工作表以A1為基點的Cells
  15.             Cells(2, i) = Cells(2, i).Value
  16.             Cells(3, i) = Cells(3, i).Value
  17.             Cells(2, i + 1) = "公式A" '下一欄給公式
  18.             Cells(3, i + 1) = "公式B"
  19.         End If
  20.     End With
  21. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 藍天麗池 於 2014-12-7 09:19 編輯

回復 12# GBKEE

跟G大請教兩個問題:

1.我之前的想法是只要行列互換,所以如果只將With Sheets("RTD").Cells(i + 2, "T").Resize(, 7)改成With Sheets("RTD").Cells("T" , i + 2).Resize(5 ,) 這樣是可以的嗎??
2. .Offset(-1).Value = .Offset(-1).Value '上一列:將公式回數值            另外這行我就不會改了
3.如果1.的想法是正確的那之前下面的公式要怎麼改??

4.i = Cells(2, Columns.Count).End(xlToLeft).Column
    'i: 傳回工作表最右邊的儲存格, 向左到最後有資料的儲存格的欄號
    'Cells(列號, 欄號).END(向左到最後有資料的儲存格)
    'Columns.Count(工作表欄物件的總計)
以上是這次的新公式,請問G大這個新公式可以設定從哪一列開始嗎??因為我O欄之前有其他的東西,這樣會影響到嗎??

5. If .Value = "" Then
            .Cells = "公式A"          '你的公式
            .Cells(2) = "公式B"       '下一列的公式
以上是這次的新公式,G大是舉兩個為例,如果我要增加公式改成以下這樣是否正確
If .Value = "" Then
            .Cells = "公式A"          '你的公式
            .Cells(2) = "公式B"       '下一列的公式
           .Cells(3) = "公式C"       '下一列的公式
           .Cells(4) = "公式D"       '下一列的公式
                                       .
                                       .
                                       .
                                以此類推
6.ElseIf i >= .Column Then      '
             '這裡沒有.Cells 為這工作表以A1為基點的Cells
            Cells(2, i) = Cells(2, i).Value
            Cells(3, i) = Cells(3, i).Value
            Cells(2, i + 1) = "公式A" '下一欄給公式
            Cells(3, i + 1) = "公式B"
如果5.修改程式增加公式數量,那6.的部分要修改嗎??

抱歉G大問題有點多還請G大不吝指教,感謝

TOP

回復 13# 藍天麗池
查看VBA Offset 屬性 的說明
  1. .Offset( ,-1).Value = .Offset( ,-1).Value '左一欄:將公式回數值            
複製代碼
i: 傳回工作表最右邊的儲存格, 向左到最後有資料的儲存格的欄號
O欄在T欄的左邊不會影響的

如果5.修改程式增加公式數量,那6.的部分要修改嗎??
5增加公式數量,當然 6.的部分要修改所增加公式數量
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 藍天麗池 於 2014-12-7 10:38 編輯

回復 14# GBKEE

改.rar (730.38 KB)
    G大我把要改版的程式上傳,麻煩你幫我看一下
如果照G大說的我有200個程式不就要打200列??    :'(  
附件中我要執行的就是8:45將公式寫到J2-J202,等到8:46將公式寫到K2-K202、且將J2-J202的公式寫成值,以此類推一直執行到最右邊也就是執行到13:45
上述部分有比較簡單的寫法嗎??

另外我可以跟G大交個朋友嗎??G大有FB嗎??或是line?

TOP

本帖最後由 GBKEE 於 2014-12-7 14:30 編輯

回復 15# 藍天麗池
VBA公式文字可用巨集錄製: 在公式所在的儲存格作輸入的動作
  1. Sub RecordPrice()
  2.     Dim i As Integer, 公式(1 To 2)
  3.     i = Cells(2, Columns.Count).End(xlToLeft).Column
  4.     公式(1) = "=MATCH(R[-1]C,R3C6:R50000C6,0) + 1"
  5.     公式(2) = "=IF(SUMIF(INDIRECT(""D""&R2C[-1]+1):INDIRECT(""D""&R2C),RC9,INDIRECT(""E""&R2C[-1]+1):INDIRECT(""E""&R2C))=0,"""",SUMIF(INDIRECT(""D""&R2C[-1]+1):INDIRECT(""D""&R2C),RC9,INDIRECT(""E""&R2C[-1]+1):INDIRECT(""E""&R2C)))"
  6.     With Range("J2")
  7.         If .Value = "" Then
  8.             .Cells = 公式(1)         '你的公式"
  9.             .Cells(2).Resize(200) = 公式(2)
  10.         ElseIf i >= .Column Then      '
  11.             Cells(2, i) = Cells(2, i).Value
  12.             Cells(3, i).Resize(200) = Cells(3, i).Resize(200).Value
  13.             Cells(2, i + 1) = 公式(1)
  14.             Cells(3, i + 1).Resize(200) = 公式(2)
  15.         End If
  16.     End With
  17. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 藍天麗池 於 2014-12-8 18:14 編輯

回復 16# GBKEE


    G大感謝你,G大請教一下裡面好像沒有看到時間的設定,之前有設定從8:45開始到13:45結束,這次沒看到,是已經寫在裡面了嗎?

TOP

回復 17# 藍天麗池

之前有設定從8:45開始到13:45結束,這次沒看到
Sub RecordPrice() 套上不就可以了嗎?
你對VBA應該有認識了,多練習一下就會進步的.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 18# GBKEE


    G大我修改完成了感謝你的幫助,感激不盡

TOP

策略王報價.rar (59.39 KB) 回復 18# GBKEE


    請問G大有遇過這種情況嗎??裡面的表單(登入、接收資料...)都不能點,是不是有設定到什麼?

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題