Board logo

標題: 請問只要在單數儲格1,3,5.…51寫入 [打印本頁]

作者: 自我感覺良好    時間: 2013-2-20 10:41     標題: 請問只要在單數儲格1,3,5.…51寫入

Sub a1()
    For x = 1 To 50
        Cells(x, 1) = "ai"
    Next x
End Sub
請問只要在單數儲格1,3,5.…51寫入
要怎樣寫呢?
作者: loquat    時間: 2013-2-20 11:09

  1. Sub a1()
  2. Dim x As Integer
  3.     For x = 1 To 51 Step 2
  4.         Cells(x, 1) = x
  5.     Next x
  6. End Sub
複製代碼

作者: 自我感覺良好    時間: 2013-2-20 11:55

Step 2太好用了
我下面的程式,不太好用,會跳動影幕,如何改善…?


Sub a1()
    For x = 1 To 800 Step 2
    ActiveCell.Offset(2, 0).Range("A1").Select
    Selection.ClearContents
    Next x
End Sub
作者: loquat    時間: 2013-2-20 14:30

回復 3# 自我感覺良好
  1. Sub a1()
  2.     For x = 1 To 800 Step 2
  3.     ActiveCell.Offset(2, 0).ClearContents
  4.     Next x
  5. End Sub
複製代碼
.Range("A1")这个似乎是多余代码???
作者: mark15jill    時間: 2013-2-20 14:44

Step 2太好用了
我下面的程式,不太好用,會跳動影幕,如何改善…?


Sub a1()
    For x = 1 To 800 ...
自我感覺良好 發表於 2013-2-20 11:55




Application.DisplayAlerts = False'提示訊息消除
Application.ScreenUpdating = False    '螢幕更新消除

若使用  Application.ScreenUpdating = False    '螢幕更新消除
程式後面必須將其開啟
Application.ScreenUpdating = True   '螢幕更新開心
作者: 自我感覺良好    時間: 2013-2-20 16:45

本帖最後由 自我感覺良好 於 2013-2-20 16:46 編輯

改成這樣就不會亂跳了。
3Q


Sub a1()
    For x = 1 To 802 Step 2
    Application.ScreenUpdating = False
    Cells(x, 1).Range("A1").Select
    Selection.ClearContents
    Next x
    Application.ScreenUpdating = True
End Sub
作者: loquat    時間: 2013-2-20 20:03

回復 6# 自我感覺良好
还是可以去掉Select,在VBA中使用Select和Activate会大大降低执行效率
  1. Sub a1()
  2.     For x = 1 To 802 Step 2
  3.     Application.ScreenUpdating = False
  4.     Cells(x, 1).ClearContents
  5.     Next x
  6.     Application.ScreenUpdating = True
  7. End Sub
複製代碼

作者: Hsieh    時間: 2013-3-15 10:04

回復 1# 自我感覺良好
發現一個有趣的現象
以本範例來說
  1. Sub ex()
  2. Selection = "=IF(MOD(ROW(),2)=0,RC,""ai"")"   '選取範圍寫入公式
  3. Selection = Selection.Value  '選取範圍公式轉成值
  4. End Sub
複製代碼
如果執行以上程式碼,可以達到類似勾選選項/計算/反覆計算的效果可以將偶數列的原值保留
但是,逐行以上程式碼就不能將偶數列的原值保留




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