Excel VBA隨筆二

在VBA中窗口可以看到sheet1是哪張表,之後增加表,或者修改表的名字,移動表的位置等,該對應的表
都不會改變,可以防止以後表定位不準的問題

定義:dim i as Integer
循環:for i=10 to 1 step -2 ... next
for i=1 to sheets.count 這個循環數,不隨着sheets.count的改變而改變
條件:if "..."="" then ... elseif ... else ... end if
條件結束循環:if "..."="" then exit for

刪除表:
通過單元格刪除:rng.EntireRow.Delete
注意從下往上刪除,因爲刪除上面的單元格,或行,下一單元格或行將會向上移動,導致沒有刪除到
屏幕更新:
application.ScreenUpdating = False
彈出警告框:
application.DisplayAlerts = False
sheet1.delete
application.DisplayAlerts = True
application.ScreenUpdating = True
添加,複製等確定添加的位置:add , copy after := Sheets(Sheets.Count)
for 循環升級 for each
dim rng as Range
for each rng in range("a1:a10")
rng = 1(此時的rng等於a1,a2,...,a10)
next
 
循環所有表
dim biao as worksheet
for each biao in sheets
next

打開工作表
workbooks.open filename:="d:\data\1.xlsx"
當前打開的工作表activeworkbook.sheets(1).range("a1") = "heheda"
保存:activeworkbook.save
關閉:activeworkbook.close
新建工作表:Workbooks.Add
另存爲:activeworkbook.saveas filename:="d:\data\2.xlsx"

複製表到一張新的工作簿:sheet1.Copy

先點表,然後再點單元格
sheets(j).select
sheets(j).range("d22").select
當前選中的對象:selection.EntireRow.delete

操作單元格數據
[a10]
cells(2,3)第二行,第三列
range("a1:a10").select選中a1至a10
屬性用來賦值,默認是value:range("a1").value = 10
sheets(range("d1").value).select
range("a1").offset(10,1).select 下移10行,右移1列
選中單元格,雙擊上邊框,回到上邊界
range("a10").end(xlup)
Range("a65536").End(xlUp).Row返回最後一行的行號

選擇區域
range("a10").resize(1,4).select :選擇一行四列
range("a10").entireRow.select:選擇這一整行

range("h7:i7").copy range("n7"):會帶有單元格格式一起復制,比如框線
entireRow整行復制,必須從a列開始放

合併單元格,可以配合resize使用
Range("a1:a2").Merge


delete:刪除單元格
clearContents:清空內容

運行過程:call qk(調用函數)
autoFilter(自動篩選)

篩選:
Sheet1.Range("A1:F1048").AutoFilter Field:=4, Criteria1:="一車間"
篩選之後粘貼(篩選之後可以全選粘貼,即可以得到篩選出來的數據)
sheet1.range("A1:F1048").copy sheets(i).range("a1")
返回沒有篩選的狀態
Sheet1.Range("A1:F1048").AutoFilter

在最後一張表後新建一張表
sheets.add after:=sheets(sheets.count)
sheets(sheets.count).name = "123"
或者可以合併:sheets.add (after:=sheets(sheets.count)).name = "345"

建表之前,需要判斷表名不重複
for each sht in sheets
    if sht.name=sheet1.range("a1") then
        k = 1
        exit for
    end if
next

拷貝數據
錄製篩選的代碼,複製:
sheet1.range("a1:f"&irow).copy sheets(j).range("a1")
sheet1.range("a1:f"&irow).authfilter

msgbox,inputbox
彈出對話框MsgBox "噠噠"
輸入框:i = InputBox("你多大?")
MsgBox "原來你" & i & "歲了"

有兩個變量,不使用range,使用cells(行,列)

with語句,可以省寫:
with sheet2
    .range("a1")=6
    .range("a3")=16
    sheet3.range("a1") = 6
    .range("a4")=60
    .range("a6")=6
end with

cells表示整表

事件,雙擊工作表,選擇worksheet,選擇selectchange改變選擇的單元格
關閉事件:application.enableevents = False

當點擊或激活統計數據表的時候,自動刷新,事件:activate
激活表刷新:activeWorkbook.RefreshAll

工作簿事件,雙擊工作簿
帶代碼的文檔,xlsm後綴

重要數據的自動備份,定期備份,當文件被點了保存
=now()會得到當前的日期加時間,自定義數字
=text(now(),"yyyymmddhhmmss")


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章