標題:
將許多儲存格數值改為0
[打印本頁]
作者:
vvcvc
時間:
2013-2-1 16:04
標題:
將許多儲存格數值改為0
我使用錄製的方式得到以下程式碼(只完成一小部份的需求)
以下程式碼處理列2401~2500、2501~2600
原資料每100列會重復相同的格式一次(ex.E5:AJ11、E105:AJ111...E2405:AJ2411、E2505:AJ2511、E2605:AJ2611...)
想簡化程式碼
目前需求為清除1~3399範圍
Sub Macro4()
'
' Macro4 Macro
' 在 2013/2/1 錄製的巨集
'
' 快速鍵: Ctrl+a
'
Range("E2403:E2404,E2405:AJ2411").Select
Range("E2405").Activate
Range("E2403:E2404,E2405:AJ2411,E2415,E2417:AJ2418").Select
Range("E2417").Activate
Range("E2403:E2404,E2405:AJ2411,E2415,E2417:AJ2418,E2421:AJ2421").Select
Range("E2421").Activate
Range( _
"E2403:E2404,E2405:AJ2411,E2415,E2417:AJ2418,E2421:AJ2421,E2425:E2426,E2427:AJ2428" _
).Select
Range("E2427").Activate
Range( _
"E2403:E2404,E2405:AJ2411,E2415,E2417:AJ2418,E2421:AJ2421,E2425:E2426,E2427:AJ2428,E2430:AJ2432,E2437:AJ2438,E2444:AJ2444,E2446:AJ2446" _
).Select
Range("AJ2446").Activate
Range( _
"E2403:E2404,E2405:AJ2411,E2415,E2417:AJ2418,E2421:AJ2421,E2425:E2426,E2427:AJ2428,E2430:AJ2432,E2437:AJ2438,E2444:AJ2444,E2446:AJ2446,E2455" _
).Select
Range("E2455").Activate
Range("E2503:E2504,E2505:AJ2511").Select
Range("E2505").Activate
Range("E2503:E2504,E2505:AJ2511,E2515,E2517:AJ2518").Select
Range("E2517").Activate
Range("E2503:E2504,E2505:AJ2511,E2515,E2517:AJ2518,E2521:AJ2521").Select
Range("E2521").Activate
Range( _
"E2503:E2504,E2505:AJ2511,E2515,E2517:AJ2518,E2521:AJ2521,E2525:E2526,E2527:AJ2528" _
).Select
Range("E2527").Activate
Range( _
"E2503:E2504,E2505:AJ2511,E2515,E2517:AJ2518,E2521:AJ2521,E2525:E2526,E2527:AJ2528,E2530:AJ2532,E2537:AJ2538,E2544:AJ2544,E2546:AJ2546" _
).Select
Range("AJ2546").Activate
Range( _
"E2503:E2504,E2505:AJ2511,E2515,E2517:AJ2518,E2521:AJ2521,E2525:E2526,E2527:AJ2528,E2530:AJ2532,E2537:AJ2538,E2544:AJ2544,E2546:AJ2546,E2555" _
).Select
Range("E2555").Activate
Selection.FormulaR1C1 = "0"
End Sub
複製代碼
作者:
stillfish00
時間:
2013-2-1 19:12
回復
1#
vvcvc
你錄製的東西 基本上code#41行前都是沒作用的
應該是錄製時一直沒選好範圍
Sub Test()
Dim i As Long
For i = 0 To 33
ActiveSheet.Range("E3:E4,E5:AJ11,E15,E17:AJ18,E21:AJ21,E25:E26,E27:AJ28,E30:AJ32,E37:AJ38,E44:AJ44,E46:AJ46,E55").Offset(i * 100).Value = 0
Next i
End Sub
複製代碼
作者:
GBKEE
時間:
2013-2-2 14:51
回復
1#
vvcvc
Sub Ex()
Dim Rng As Range
Set Rng = Range("E5:AJ11") '最上方的資料位址
Do
Rng = 0
Set Rng = Rng.Offset(100) '原資料每100列會重復相同的格式一次
Loop While Rng.Cells(1).Row < 3399 '清除1~3399範圍: .Row>=3399 離開迴圈
End Sub
複製代碼
作者:
vvcvc
時間:
2013-2-2 23:15
謝謝2位的回答
其實有選好,真的是要選的儲存格很亂
我自己去除下拉動作的程式碼
可能有誤刪部份儲存格
不過大致上知道怎麼修改2位指導的程式碼
先謝囉!
作者:
vvcvc
時間:
2013-2-2 23:25
重新看了一次自己錄出來的程式碼
範圍一直重覆出現
哈哈...連錄都錄的不好
作者:
vvcvc
時間:
2013-3-1 11:00
2位, 如果我要在輸入0之前加入一段如下程式
這樣寫的結果會出錯,出錯的位置於
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
這段程式碼
可否幫我看看這段內容那邊寫錯嗎?
Sub Macro4()
'
' 快速鍵: Ctrl+n
'
Sheets("sheet3").Select
Dim i As Long
For i = 0 To 38
Range("AJ3:AJ4,AJ15,AJ25:AJ26,AJ55").Select
Selection.Copy
Range("E3:E4,E15,E25:E26,E55").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Range("E5:AJ11,E17:AJ18,E21:AJ21,E27:AJ28,E30:AJ32,E37:AJ38,E44:AJ44,E46:AJ46").Offset(i * 100).Value = 0
Next i
End Sub
複製代碼
作者:
Hsieh
時間:
2013-3-1 11:14
回復
6#
vvcvc
無法在不相鄰的區域貼上
作者:
vvcvc
時間:
2013-3-1 11:51
主要需求是要在清除所有數值前先把AJ3:AJ4,AJ15,AJ25:AJ26,AJ55的結果以選擇性貼上「值」的方式貼到E3:E4,E15,E25:E26,E55
原資料每100列會重復相同的格式一次(ex.E5:AJ11、E105:AJ111...E2405:AJ2411、E2505:AJ2511、 E2605:AJ2611...)
我這樣的寫法可以嗎?
Sub Macro4()
'
' 快速鍵: Ctrl+n
'
Sheets("sheet3").Select
Dim i As Long
For i = 0 To 38
Range("AJ3:AJ4,AJ15,AJ25:AJ26,AJ55").Offset(i * 100).Select
Selection.Copy
Range("E3:E4,E15,E25:E26,E55").Offset(i * 100).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Range("E5:AJ11,E17:AJ18,E21:AJ21,E27:AJ28,E30:AJ32,E37:AJ38,E44:AJ44,E46:AJ46").Offset(i * 100).Value = 0
Next i
End Sub
複製代碼
作者:
Hsieh
時間:
2013-3-1 23:55
回復
8#
vvcvc
試試看
Sub Macro4()
'
' 快速鍵: Ctrl+n
'
Dim i As Long
For i = 0 To 38
Set Rng = Range("AJ3:AJ4,AJ15,AJ25:AJ26,AJ55").Offset(i * 100)
Set Rng1 = Range("E3:E4,E15,E25:E26,E55").Offset(i * 100)
For j = 1 To Rng.Areas.Count
Rng1.Areas(j) = Rng.Areas(j).Value
Next
ActiveSheet.Range("E5:AJ11,E17:AJ18,E21:AJ21,E27:AJ28,E30:AJ32,E37:AJ38,E44:AJ44,E46:AJ46").Offset(i * 100).Value = 0
Next i
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)