Board logo

標題: 程式碼精簡 [打印本頁]

作者: vic    時間: 2015-7-24 20:19     標題: 程式碼精簡

  1. If Second(Time) Mod 30 = 0 Then
  2.    xRow = Sht1.Range("A65536").End(xlUp).Row + 1
  3.    If xRow < 19 Then xRow = 19
  4.    Sht1.Range("A" & xRow & ":C" & xRow).Value = Sht1.Range("A18:C18").Value
  5.    Sht1.Range("E" & xRow & ":E" & xRow).Value = Sht1.Range("E18:E18").Value
  6.    Sht1.Range("G" & xRow & ":K" & xRow).Value = Sht1.Range("G18:K18").Value
  7.    Sht1.Range("M" & xRow & ":O" & xRow).Value = Sht1.Range("M18:O18").Value
複製代碼
請教 像這樣選擇性紀錄的程式碼,
有比較精簡的寫法嗎?

另外我每天5個小時,會漏記錄一兩筆,跟我寫的內容有關係嗎?
還是說多多少少,無法避免。
作者: bobomi    時間: 2015-7-24 21:57

你接收的商品為何?
作者: vic    時間: 2015-7-25 13:09

回復 2# bobomi

紀錄看盤軟體回傳的DDE資料
每30秒紀錄一次
不漏的話,大約600筆
作者: GBKEE    時間: 2015-7-25 14:24

本帖最後由 GBKEE 於 2015-7-25 14:29 編輯

回復 3# vic

是這樣嗎?
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar(), S(1 To 2), xRow As Long, E As Variant
  4.     Ar = Array("A:C", "E:E", "G:K", "M:O") '大約600筆的欄位字母
  5.     If Second(Time) Mod 30 = 0 Then
  6.         With Sht1
  7.             xRow = .Range("A65536").End(xlUp).Offset(1).Row
  8.             For Each E In Ar
  9.                 S(1) = Replace(E, ":", xRow & ":") & xRow
  10.                 S(2) = Replace(E, ":", 18 & ":") & 18
  11.                 .Range(S(1)).Value = .Range(S(2)).Value
  12.             Next
  13.         End With
  14.     End If
  15.   ' 陣列置入些欄位字母 , 可精簡下面的程式碼
  16.    'Sht1.Range("A" & xRow & ":C" & xRow).Value = Sht1.Range("A18:C18").Value
  17.    'Sht1.Range("E" & xRow & ":E" & xRow).Value = Sht1.Range("E18:E18").Value
  18.    'Sht1.Range("G" & xRow & ":K" & xRow).Value = Sht1.Range("G18:K18").Value
  19.    'Sht1.Range("M" & xRow & ":O" & xRow).Value = Sht1.Range("M18:O18").Value
  20.    '''大約600筆
  21. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)