返回列表 上一主題 發帖

請求師兄協助,小弟不懂完成語法

請求師兄協助,小弟不懂完成語法

小弟爬文後只做到時間開關,其它是錄製出來的。
我希望下面模組能改為每次貼上時,
向右欄位加1欄即第1次是c3下1次是d3...e3...
請問要如何更改?
Dim s As String
Sub 開始()
If s <> "停止" Then
Application.OnTime Now + TimeValue("00:30:00"), "開始"
Call pop_1
End If
s = ""
End Sub

Sub pop_1()
'
' pop_1 巨集
'
    Range("A3:A22").Select
    Selection.Copy
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
End Sub

Sub 停止()
s = "停止"
End Sub

回復 1# bully

不太了解您的問題,是希望每次執行程式時,可以自動向右邊一欄貼上?
EX:第一次執行>貼在B欄
第二次執行>貼在C欄?

時間開關與此的關聯是甚麼呢?
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

本帖最後由 bully 於 2018-5-10 17:50 編輯

回復 2# iamaraymond

謝謝師兄回復
我想法是第一次開始是在c3,30分後d3貼上,
再30分後e3貼上

TOP

回復 3# bully

所以是每30分鐘貼一次嗎?那停止的條件是?
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

回復 4# iamaraymond


    我本想法是貼上20次後自動停止,
     因不會寫,所以用手動停止運作!

TOP

回復 5# bully

不知這樣是否符合您的需求
  1. Sub test()

  2. For i = 1 To 20
  3.     Range("A3:A22").Copy
  4.     Cells(3, i + 2).PasteSpecial Paste:=xlPasteValues
  5.     Application.Wait Now() + TimeValue("00:00:01")
  6. Next
  7. Application.CutCopyMode = False
  8. [A1].Select
  9. End Sub
複製代碼
我是先測試1秒,如果您覺得OK,可以將timeValue修改為 TimeValue("00:30:00")
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

回復  bully

不知這樣是否符合您的需求我是先測試1秒,如果您覺得OK,可以將timeValue修改為 TimeValue ...
iamaraymond 發表於 2018-5-10 18:10


謝謝師兄,我就是這個意思,但是這個test會長期處於運行中,
因我只需30分執行1次,直至20次完成停止,(表單內其它動作不能做)
,可否改為每30分叫醒1次?

TOP

本帖最後由 quickfixer 於 2018-5-10 20:43 編輯

回復 7# bully
01 學來的,這個方法不會讓excel停住,表單還可以正常做別的事
  1. Public i As Integer

  2. Sub 開始()
  3.     i = 0
  4.     Call test
  5. End Sub

  6. Sub test()
  7.        If i > 20 Then Exit Sub
  8. '下面這2行,換成你要跑的程式
  9.     i = i + 1
  10.     Cells(1, 1) = i
  11.     Application.OnTime Now + TimeValue("00:00:02"), "test"
  12. End Sub

  13. Sub 停止()
  14.    i=21
  15. End Sub
複製代碼

TOP

回復 8# quickfixer


    成功了,多謝2位大大協助!!

TOP

回復 7# bully
  1. Dim total As Integer


  2. Sub test()

  3. If total < 5 Then
  4.     total = total + 1
  5.     Debug.Print total
  6.     Application.OnTime Now() + TimeValue("00:00:10"), "Thisworkbook.test1"
  7. Else
  8.     Application.CutCopyMode = False
  9.     [A1].Select
  10. End If

  11. Application.CutCopyMode = False
  12. [A1].Select
  13. End Sub
  14. Sub test1()
  15.     Range("A3:A22").Copy
  16.     Cells(3, total + 2).PasteSpecial Paste:=xlPasteValues
  17.     Call test
  18. End Sub
複製代碼
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題