小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

vba excel編程三日談(2)

 天蝎的天空 2015-01-06
分類: VBA 2010-06-09 17:55 6079人閱讀 評論(1) 收藏 舉報

vba excel編程三日談(1)

vba excel編程三日談(2)

vba excel編程三日談(3)

表格基本操作

由于表格操作內(nèi)容繁多, 本文將以例子為主演示一些常用的操作.

下面的例子將演示怎么遍歷worksheet,選中worksheet,添加worksheet,刪除worksheet.

  1. Sub test8()  
  2.     Dim sh As Worksheet  
  3.     For Each sh In ActiveWorkbook  
  4.         If sh.Name = "Sheet1" Then  
  5.             sh.Range("A1").Value = "Haha"  
  6.         End If  
  7.     Loop  
  8.     Sheets("Sheet1").Select  
  9.     ActiveSheet.Range("A1").Value = "Hello"  
  10.     '在當前活動sheet前添加一個新sheet  
  11.     ActiveWorkbook.Worksheets.Add ActiveSheet  
  12.     '新sheet會成為活動sheet,給它一個名字  
  13.     ActiveSheet.Name = "New sheet1"  
  14.     ActiveWorkbook.Worksheets.Add ActiveSheet  
  15.     ActiveSheet.Name = "New sheet2"  
  16.     '因為刪除sheet會彈出警告消息,所以先禁止警告消息  
  17.     Application.DisplayAlerts = False  
  18.     ActiveWorkbook.Worksheets(2).Delete  
  19.     '恢復(fù)警告消息  
  20.     Application.DisplayAlerts = True  
  21. End Sub  
  

下面例子將演示單元格復(fù)制,粘貼,行列刪除等操作

  1. Sub test10()  
  2.     Range("A1").Copy Range("A2")  
  3.     Range("A1").Copy Range("A2:A10")  
  4.     Range("B1:D1").Copy Range("B2:D10")  
  5.     ActiveWorkbook.Sheets("Sheet1").Range("A1:E1").Copy Sheets("Sheet2").Range("A1:E1")  
  6.     Sheets("Sheet1").Cells(1, 1).Copy Sheets("Sheet1").Cells(11, 11)  
  7.     '可以這樣引用一個range  
  8.     [a1:e1].Copy [g1:k1]  
  9.     '可以通過單元格獲取它所在的行然后執(zhí)行行操作  
  10.     [A1].EntireRow.Copy [A11].EntireRow  
  11.     '列操作  
  12.     [A1].EntireColumn.Copy [F1].EntireColumn  
  13.     [A2].EntireRow.Delete  
  14.     [g1].EntireColumn.Delete  
  15.     [a1:a10].Cut [a20]  
  16. End Sub  

下面的例子演示如何獲得某行最大使用列數(shù), 某列最大使用行數(shù), 整個sheet的最大行數(shù),列數(shù):

 

  1. Sub test11()  
  2.     '第A列最大使用行數(shù)  
  3.     MsgBox [a65536].End(xlUp).Row  
  4.     '第B列最大使用行數(shù)  
  5.     MsgBox [b65536].End(xlUp).Row  
  6.     '第一行最大使用列數(shù)  
  7.     MsgBox [iv1].End(xlToLeft).Column  
  8.     '第二行最大使用列數(shù)  
  9.     MsgBox [iv2].End(xlToLeft).Column  
  10.     '整個sheet最大使用行數(shù)  
  11.     MsgBox ActiveSheet.UsedRange.Rows.Count  
  12.     '整個sheet最大使用列數(shù)  
  13.     MsgBox ActiveSheet.UsedRange.Columns.Count  
  14. End Sub  

End屬性應(yīng)用于Range對象,同樣也返回一個Range對象。該對象代表包含源區(qū)域的區(qū)域結(jié)尾處的單元格。如果你還是不明白,那請你在工作表里試一試,分別按Ctrl+上、下、左、右方向鍵,看看得到的是什么?End屬性返回的單元格就相當于在源單元格按住Ctrl鍵+上(或下、左、右)方向鍵所得到的單元格。

xlToLeft :向左移動,相當于在源區(qū)域按Ctrl+左方向鍵。

xlToRight:向右移動,相當于在源區(qū)域按Ctrl+右方向鍵。

xlUp:向上移動,相當于在源區(qū)域按Ctrl+上方向鍵。

xlDown:向下移動,相當于在源區(qū)域按Ctrl+下方向鍵。

有如下excel文件, 請按班級把學(xué)生信息copy到相應(yīng)的班級.

  1. Sub classify()  
  2.     Dim maxrow1&, maxrow2&, i&  
  3.     Dim cls As String  
  4.     Dim sh As Worksheet  
  5.     starttime = Timer  
  6.     maxrow1 = [a65536].End(xlUp).Row  
  7.     For i = maxrow1 To 2 Step -1  
  8.         'MsgBox Sheets("students").Name  
  9.         cls = Sheets("students").Cells(i, 4).Value  
  10.         MsgBox cls  
  11.         maxrow2 = Sheets(cls).[a65536].End(xlUp).Row + 1  
  12.         Sheets("Students").Cells(i, 3).EntireRow.Copy Sheets(cls).Cells(maxrow2, 1).EntireRow  
  13.     Next  
  14.     MsgBox "Total time used: " & Timer - starttime & " second(s)"  
  15. End Sub  

事件: workBook, worksheet, 以及后面要講的用戶自定義form等都定義了很多事件, 我們可以為它們添加響應(yīng)的事件處理函數(shù). 比如雙擊左邊的ThisWorkBook, 則在右邊的上部有兩個dropdown,左邊選中WorkBook, 則右邊的dropdown就會顯示相應(yīng)的事件列表,單擊任意一個即可添加事件處理函數(shù). 同樣雙擊一個sheet或用戶自定義form也可以為它們添加響應(yīng)的事件處理函數(shù).

自定義Form:用戶可以自定義表單來響應(yīng)用戶的輸入輸出.如下圖示添加一個userForm:

以剛才的學(xué)生信息分類的excel為例,我們設(shè)計出如下的form, 當用戶點擊save的時候,驗證用戶輸入的數(shù)據(jù)是否正確, 然后把數(shù)據(jù)插入到sheet中. 其中兩個textbox和下拉菜單分別命名為s_name, s_age, s_class:

因為學(xué)生班級為一個下拉菜單, 所以還要為下拉菜單添加選項, 雙擊userForm1的空白位置,為UserForm添加initialize事件處理函數(shù):

  1. Private Sub UserForm_Initialize()  
  2.     s_class.AddItem ("三一班")  
  3.     s_class.AddItem ("三二班")  
  4.     s_class.AddItem ("三三班")  
  5. End Sub  
  

雙擊Save按鈕, 為save按鈕添加click響應(yīng)函數(shù):

  1. Private Sub save_Click()  
  2.     Dim maxrow&  
  3.     Dim id&  
  4.     If s_name.Value = "" Then  
  5.         MsgBox "Name is required."  
  6.         Exit Sub  
  7.     End If  
  8.     If s_age.Value = "" Then  
  9.         MsgBox "Age is required."  
  10.         Exit Sub  
  11.     End If  
  12.     If IsNumeric(s_age.Value) = False Then  
  13.         MsgBox "Age should be a number."  
  14.         Exit Sub  
  15.     End If  
  16.     maxrow = ActiveWorkbook.Worksheets("Students").[a65536].End(xlUp).Row + 1  
  17.     If IsNumeric(ActiveWorkbook.Worksheets("Students").Cells(maxrow - 1, 1).Value) = False Then  
  18.         id = 1  
  19.     Else  
  20.         id = ActiveWorkbook.Worksheets("Students").Cells(maxrow - 1, 1).Value + 1  
  21.     End If  
  22.     ActiveWorkbook.Worksheets("Students").Cells(maxrow, 1) = id  
  23.     ActiveWorkbook.Worksheets("Students").Cells(maxrow, 2) = s_name.Value  
  24.     ActiveWorkbook.Worksheets("Students").Cells(maxrow, 3) = s_age.Value  
  25.     ActiveWorkbook.Worksheets("Students").Cells(maxrow, 4) = s_class.Value  
  26. End Sub  

通過UserForm1.show 即可顯示這個form. 也可以按F5預(yù)覽. 雙擊ThisWorkbook, 在右邊添加open事件響應(yīng)函數(shù):

  1. Private Sub Workbook_Open()  
  2.     UserForm1.Show  
  3. End Sub  

現(xiàn)在關(guān)閉excel文件,再重新開啟,即可測試.

該文件可在此處下載:students.zip

 

OK, 到此為止, 已經(jīng)熟悉了excel一些常用的操作.

 

主題推薦
編程 vba excel 移動 對象
猜你在找
Python的數(shù)據(jù)庫ORM框架SQLAlchemy
求兩個集合交集的方法比較
"金箍"我的約瑟夫環(huán)算法設(shè)計
Gource可視化魔獸世界玩家成就動態(tài)演示
peewee 一個輕量級的ORM二
Android App安全加固行業(yè)分析報告
ruby 取字符串中與正則表達式匹配的值
雙引號與換行的困惑
關(guān)于java內(nèi)部類的總結(jié)
平面上求最近點對問題
查看評論
1樓 lantianjialiang 2013-05-08 10:52發(fā)表 [回復(fù)]
Hi test8 有問題,運行不了,應(yīng)該是:
For Each sh In ActiveWorkbook.Worksheets
^^^^^^^^^^^^
If sh.Name = "Sheet1" Then
sh.Range("A1").Value = "Haha"
End If
Next
^^^^^^^

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多