返回列表 上一主題 發帖

請問只要在單數儲格1,3,5.…51寫入

請問只要在單數儲格1,3,5.…51寫入

Sub a1()
    For x = 1 To 50
        Cells(x, 1) = "ai"
    Next x
End Sub
請問只要在單數儲格1,3,5.…51寫入
要怎樣寫呢?
50 字節以內
不支持自定義 Discuz! 代碼

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

TOP

回復 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
複製代碼
向高手学习

TOP

本帖最後由 自我感覺良好 於 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
50 字節以內
不支持自定義 Discuz! 代碼

TOP

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   '螢幕更新開心

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 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")这个似乎是多余代码???
向高手学习

TOP

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


Sub a1()
    For x = 1 To 800 Step 2
    ActiveCell.Offset(2, 0).Range("A1").Select
    Selection.ClearContents
    Next x
End Sub
50 字節以內
不支持自定義 Discuz! 代碼

TOP

  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
複製代碼
向高手学习

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題