c.Excel-VBA(工作簿-工作表-單元格-行列)

最近學習VBA寞秃,發(fā)現(xiàn)之前的我太過于追求技術上的成功而忘記了學習的本質(zhì),是真正解決實際問題踱葛。學習了如何錄制宏,了解到工程光坝、對象等尸诽,接下來研究VBA工作簿、工作表及單元格:

工作簿盯另、工作表圖示

VBA工作簿

  1. 第N個工作簿 Workbooks(N)
  2. 指定名稱的工作簿 Workbooks("工作簿名")
  3. 當前所在的工作簿 thisWorkbook
  4. 當前激活的工作簿 ActiveWorkbook

新建工作簿

'1:新增工作簿'
Sub AddNewWorkbooks()
      Workbooks.add
End Sub
'2:創(chuàng)建工作簿的一種更好方式是將其分配給一個對象變量'
Option Explicit    
Sub AddNewWorkbooks()
Set NewBook = Workbooks.Add
   With NewBook
   .Title = "標題"
   .Subject = "未知屬性"
   .SaveAs Filename:="我是新建的工作簿名"
   End With
   MsgBox(ActiveWorkbook.Path)  '返回當前激活工作簿路徑'
End Sub

Option Explicit的作用為:聲明所有變量都需要先定義才能使用性含,否則程序在使用了未經(jīng)定義的變量時就會報錯'。 因VB中并不要求顯示定義變量鸳惯,即變量可以不經(jīng)定義直接使用.

打開工作簿

Sub OpenWorkbooks()
   Workbooks.Open("C:\users\Documents\我是新建的工作簿名.xlsx")   '可以使用Open方法打開指定的工作簿商蕴,注意路徑要填寫完整'
End Sub     '運行完成后將打開該工作簿'

返回當前工作簿的路徑

Sub GetWorkbooksPath()
   Application.ActiveWorkbook.Path           '返回當前激活工作簿路徑'  
   Application.ActiveWorkbook.FullName       '返回當前激活工作簿路徑及名稱'  
   pplication.ActiveWorkbook.Name            '返回當前激活工作簿文件名'  
End Sub

VBA工作表

  1. 第N個工作表 Worksheets(N)
  2. 指定名稱的工作表 Sheets("工作表名")
  3. 第N個工作表 SheetN
  4. 活動工作表 Activesheets
  5. Worksheets與Sheets的區(qū)別:Sheets集合代表當前工作簿中的所有工作表,包括圖表工作表芝发、對話框工作表和宏表绪商。Worksheets集合僅代表當前工作簿中的所有工作表。
    Sheets和Worksheets區(qū)別

    判斷工作表是否存在
Sub TestSheetYesNo()
    Dim mySheetName As String, mySheetNameTest As String
    mySheetName = "Sheet4"       '輸入需測試的工作表名稱'
    On Error Resume Next   
    mySheetNameTest = Worksheets(mySheetName).Name
    If Err.Number = 0 Then
        MsgBox "The sheet named ''" & mySheetName & "'' does exist in this workbook."
    Else
        Err.Clear
        MsgBox "The sheet named ''" & mySheetName & "'' does NOT exist in this workbook."
    End If
End Sub

On Error Resume Next的作用為:隨后的程序即便出現(xiàn)"運行時錯誤"時,也不
會顯示"出錯信息",并且會繼續(xù)運行下去辅鲸。

VB提供兩個語句和一個對象來處理"運行時錯誤"格郁,即:

  1. On Error Resume Next 語句 該語句后面程序出現(xiàn)"運行時錯誤"時,會繼續(xù)運行程序,僅只對當前函數(shù)有用例书。如果出錯,那么Err對象中將放置最近一次出錯的信息锣尉。
  2. On Error Goto 0 語句 該語句后面程序出現(xiàn)"運行時錯誤"時,會顯示"出錯信息"并停止程序的執(zhí)行决采。
  3. Err對象 使用Err對象來得到錯誤信息自沧。有重要的屬性有三個:Number(錯誤號-設置或返回指定一個錯誤的值;Err.Number=0指的是還沒有出現(xiàn)錯誤), Source(錯誤來源-設置或返回產(chǎn)生錯誤的對象的名稱), Description(錯誤描述-設置或返回一個描述錯誤的字符串)树瞭。分別是錯誤號拇厢,錯誤來源,錯誤描述移迫。

創(chuàng)建工作表

Sub TestSheetCreate()
    Dim mySheetName As String, mySheetNameTest As String
    mySheetName = "Sheet4"
    '[可增加判斷語句旺嬉,判斷Sheet4是否存在]'
    Worksheets.Add.Name = mySheetName    '該句創(chuàng)建工作表并命名為sheet4'
    MsgBox "The sheet named ''" & mySheetName & "'' did not exist in this workbook but it has been created now."
End Sub

引用工作表

' 1 - 引用1個以上工作表'
Sub Several() 
 Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select     '選中表1、2厨埋、3'
End Sub
'2 - 按索引號引用工作表 
如果移動邪媳、添加或刪除工作表, 則索引順序可能會更改'
Sub FirstOne() 
    Worksheets(1).Activate    '引用第一個工作表'
    Sheets(4).Activate        '所有類型的工作表 (工作表、圖表荡陷、模塊和對話框工作表)第四張'
End Sub
'3 - 通過名稱引用工作表'
Sub ActivateChart() 
  Worksheets("Sheet1").Activate         '激活名稱為“Sheet1”工作表'
  Charts("Chart1").Activate             '激活名稱為“Sheet1”圖表'
  DialogSheets("Dialog1").Activate      '激活名稱為“Dialog1”對話框工作表'
Sheets("Chart1").Activate 
End Sub

VBA單元格

  1. Range 引用單元格和單元格區(qū)域
    Range('A1')=Cells(1,'A') =[A1] 單元格A1三種表示方法
    Range('A1:B5') 從單元格A1到B5區(qū)域
    Range('A1:B5雨效,B1:B7') 多塊的選定區(qū)域
  2. Cells (行號,列號)
    Range(cell(1,1),cells(30,1))=Range('A1:A30') 從單元格A1到A30區(qū)域
  3. Seletion 當前被選取的區(qū)域

引用單元格

'1 - 引用工作表上的所有單元格'
Sub ClearSheet() 
  Worksheets("Sheet1").Cells.ClearContents     '清除Sheet1所有單元格'
End Sub
'2 - 使用 A1 表示法引用單元格和區(qū)域'
Sub FormatRange() 
 Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _ 
 .Font.Bold = True 
End Sub
'3 - 使用 Range 對象引用單元格'
Sub Random() 
 Dim myRange As Range 
 Set myRange = Worksheets("Sheet1").Range("A1:D5") 
 myRange.Formula = "=RAND()" 
 myRange.Font.Bold = True 
End Sub
'4 - 使用索引編號來引用單元格'
Sub EnterValue() 
 Worksheets("Sheet1").Cells(6, 1).Value = 10 
End Sub

VBA整行废赞、整列

  1. Rows('1:1')=Range('1:1')=Row(1) 第一行
    Rows('2:10')=Range('2:10') 第2-10行
  2. Columns('A:A')=Range('A:A')=Columns(1) 第一列徽龟,A列
  3. Range('A:F')=Columns('A:F') A:F列
'將活動工作簿中第一張工作表上的第一行、第三行和第五行的字體設置為加粗'
Sub SeveralRows() 
    Worksheets("Sheet1").Activate 
    Dim myUnion As Range 
    Set myUnion = Union(Rows(1), Rows(3), Rows(5)) 
    myUnion.Font.Bold = True 
End Sub

思考:
1.怎樣將多個工作簿合并成一個工作簿唉地?
2据悔、怎樣實現(xiàn)跨表鏈接數(shù)據(jù)?

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耘沼,一起剝皮案震驚了整個濱河市极颓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌群嗤,老刑警劉巖菠隆,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狂秘,居然都是意外死亡骇径,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門者春,熙熙樓的掌柜王于貴愁眉苦臉地迎上來破衔,“玉大人,你說我怎么就攤上這事钱烟≡烁遥” “怎么了校仑?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長传惠。 經(jīng)常有香客問我迄沫,道長,這世上最難降的妖魔是什么卦方? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任羊瘩,我火速辦了婚禮,結(jié)果婚禮上盼砍,老公的妹妹穿的比我還像新娘尘吗。我一直安慰自己,他們只是感情好浇坐,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布睬捶。 她就那樣靜靜地躺著,像睡著了一般近刘。 火紅的嫁衣襯著肌膚如雪擒贸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天觉渴,我揣著相機與錄音介劫,去河邊找鬼。 笑死案淋,一個胖子當著我的面吹牛座韵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踢京,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼誉碴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瓣距?” 一聲冷哼從身側(cè)響起黔帕,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎旨涝,沒想到半個月后蹬屹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣背,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡白华,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贩耐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧腥。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖潮太,靈堂內(nèi)的尸體忽然破棺而出管搪,到底是詐尸還是另有隱情虾攻,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布更鲁,位于F島的核電站霎箍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏澡为。R本人自食惡果不足惜漂坏,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望媒至。 院中可真熱鬧顶别,春花似錦、人聲如沸拒啰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谋旦。三九已至剩失,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛤织,已是汗流浹背赴叹。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留指蚜,地道東北人乞巧。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像摊鸡,于是被迫代替她去往敵國和親绽媒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355