2014年2月21日 星期五

EXCEL VBA:工作表

工作表

工作表名稱:

Sheets("Sheet1").Name = "001"  '工作表命名
WorkSheets.Name 工作表名稱
ActiveWorkbook.Sheets(i).Name '取得工作表i的名稱


================================
'顯示所有工作表名稱
    For Each ws In Worksheets
        MsgBox ws.Name
    Next
================================

設定目前作用的工作表:

WorkSheets("Sheet1").Activate 設定Sheet1工作表為目前作用的工作表
Sheets("工作表名稱").Selec
Worksheets(Array(“sheet1”,”sheet2”)).Select '同時選擇工作表1和工作表2


作用工作表:ActiveSheet

ActiveSheet.Name

複製:

 '把工作表 Sheet2 複製 , 然後把複製出來的工作表放到工作表 Sheet5 後面
Worksheets("Sheet2").Copy After:=Worksheets("Sheet5")
 '把工作表 Sheet2 複製 , 然後把複製出來的工作表放到最後面
Worksheets("Sheet2").Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)

 '把工作表 Sheet2 複製 , 然後把複製出來的工作表放到最前面
Worksheets("Sheet2").Copy After:=ActiveWorkbook.Sheets(1)

移動位置:

'將當前工作表移至最後面
ActiveSheet.Move After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)

'將當前工作表移至最前面

ActiveSheet.Move Before:=ActiveWorkbook.Sheets(1)

'將當前工作表移至工作表Sheet3的前面
ActiveSheet.Move Before:=ActiveWorkbook.Sheets("Sheet3")

新增:

Worksheets.Add [Before, After, Count, Type] 新增工作表
    Before := Worksheets(n) 出現於某工作表之前
    After := Worksheets(n) 出現於某工作表之後
    Count := n 新增工作表數量
    Type := xlWorksheet (工作表) 或 xlChart (圖表)

ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一個新工作表在第一工作表前
Sheets.Add    '新增一工作表

刪除:

Sheets(“Sheet1”).Delete  '刪除工作表Sheet1
Sheets(1).Delete  '刪除工作表1




其它:

ActiveSheet.UsedRange.Rows.Count ‘當前工作表中已使用的行數
Rows.Count ‘獲取工作表的行數
ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines '切換工作表中的網格線顯示,這種方法也可以用在其它方面進行相互切換,即相當於開關按鈕
ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings  ‘切換工作表中的行列邊框顯示

ActiveSheet.UsedRange.FormatConditions.Delete ‘刪除當前工作表中所有的條件格式
Cells.Hyperlinks.Delete ‘取消當前工作表所有超鏈接
ActiveSheet.PageSetup.Orientation=xlLandscape
或ActiveSheet.PageSetup.Orientation=2 '將頁面設置更改為橫向
ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在頁面設置的表尾中輸入文件路徑
ActiveSheet.PageSetup.LeftFooter=Application.UserName ‘將用戶名放置在活動工作表的頁尾





程式碼:

 -----------------------------------------------------------------------
'製作01到42的工作表
n = 42
For i = 1 To n
    Sheets("student").Select
    Sheets("student").Copy After:=Sheets(2)
    Sheets("student (2)").Select
    k = (n + 1) - i
    If k < 10 Then
    wn = "0" & Str(Trim(k))
    Else
    wn = Str(Trim(k))
    End If
    Sheets("student (2)").Name = wn
Next i
--------------------------------------------------------------------------------

ActiveSheet.Columns("B").Insert ‘在A列右側插入列,即插入B列
ActiveSheet.Columns("E").Cut

ActiveSheet.Columns("B").Insert  ‘以上兩句將E列數據移至B列,原B列及以後的數據相應後移
ActiveSheet.Columns("B").Cut

ActiveSheet.Columns("E").Insert ‘以上兩句將B列數據移至D列,原C列和D列數據相應左移一列

ActiveSheet.Calculate ‘計算當前工作表

ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetHidden ‘正常隱藏工作表,同在Excel菜單中選擇“格式——工作表——隱藏”操作一樣

ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVeryHidden ‘隱藏工作表,不能通過在Excel菜單中選擇“格式——工作表——取消隱藏”來重新顯示工作表

ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVisible ‘顯示被隱藏的工作表

ThisWorkbook.Sheets(1).ProtectContents ‘檢查工作表是否受到保護
ThisWorkbook.Worksheets.Add Count:=2, _
Before:=ThisWorkbook.Worksheets(2)
或 ThisWorkbook.Workshees.Add ThisWorkbook.Worksheets(2), , 2  ‘在第二個工作表之前添加兩個新的工作表
ThisWorkbook.Worksheets(3).Copy ‘複製一個工作表到新的工作簿
ThisWorkbook.Worksheets(3).Copy ThisWorkbook.Worksheets(2) ‘複製第三個工作表到第二個工作表之前
ThisWorkbook.ActiveSheet.Columns.ColumnWidth = 20 ‘改變工作表的列寬為20
ThisWorkbook.ActiveSheet.Columns.ColumnWidth = _
ThisWorkbook.ActiveSheet.StandardWidth ‘將工作表的列寬恢復為標準值
ThisWorkbook.ActiveSheet.Columns(1).ColumnWidth = 20 ‘改變工作表列1的寬度為20
ThisWorkbook.ActiveSheet.Rows.RowHeight = 10 ‘改變工作表的行高為10
ThisWorkbook.ActiveSheet.Rows.RowHeight = _
ThisWorkbook.ActiveSheet.StandardHeight ‘將工作表的行高恢復為標準值
ThisWorkbook.ActiveSheet.Rows(1).RowHeight = 10 ‘改變工作表的行1的高度值設置為10
ThisWorkbook.Worksheets(1).Activate ‘當前工作簿中的第一個工作表被激活
ThisWorkbook.Worksheets("Sheet1").Rows(1).Font.Bold = True ‘設置工作表Sheet1中的行1數據為粗體
ThisWorkbook.Worksheets("Sheet1").Rows(1).Hidden = True ‘將工作表Sheet1中的行1隱藏
ActiveCell.EntireRow.Hidden = True ‘將當前工作表中活動儲存格所在的行隱藏
注:同樣可用於列。
ActiveSheet.Range(“A:A”).EntireColumn.AutoFit ‘自動調整當前工作表A列列寬
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) ‘選中當前工作表中常量和文本儲存格
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) ‘選中當前工作表中常量和文本及錯誤值儲存格

8 則留言:

  1. 請問我有一個活頁簿
    裡面有10個工作表
    當我在[工作表1]輸入1組資料時
    [工作表1]的儲存格[a1]已有公式會判斷這一組資料要放在[工作表5]
    所以當我執行巨集時,
    會自動將[工作表1]的資料剪下後貼到[工作表5]

    我的問題是[a1]是變動的,
    當我輸入另一筆資料時,[a1]可能會判斷這1組資料要放在另1個[工作表9]
    我要在巨集中如何修改程式碼,讓它可以依照[a1]的指示放到對應的工作表內??

    能否回覆至我的信箱pendy0239@gmail.com
    謝謝您

    回覆刪除
  2. 請問我有一個活頁簿
    裡面有10個工作表
    當我在[工作表1]輸入1組資料時
    [工作表1]的儲存格[a1]已有公式會判斷這一組資料要放在[工作表5]
    所以當我執行巨集時,
    會自動將[工作表1]的資料剪下後貼到[工作表5]

    我的問題是[a1]是變動的,
    當我輸入另一筆資料時,[a1]可能會判斷這1組資料要放在另1個[工作表9]
    我要在巨集中如何修改程式碼,讓它可以依照[a1]的指示放到對應的工作表內??

    能否回覆至我的信箱pendy0239@gmail.com
    謝謝您

    回覆刪除
  3. 作者已經移除這則留言。

    回覆刪除
  4. 請問,都在同一個活頁簿情況下,我在工作表1的A1欄位輸入A,則會對應到工作表2的A1欄位顯示甲,工作表1的A1欄位輸入B,則會對應到工作表2的A1欄位顯示乙,以此類推的VBA巨集該如何撰寫。

    謝謝你!!

    能否回應至我的信箱:jinnia91656@gmail.com

    回覆刪除
  5. 您好,請問有沒有甚麼方式
    我想同時做出A、B兩個類似的活頁簿
    (但是兩個活頁簿都有20個以上,幾乎相同的工作表),
    而A與B的活頁簿工作表中的內容只差別在於B活頁簿中有多兩個欄位的資料,
    其中A與B的所有工作表內容都一樣,只是B的每個工作表都多兩個欄位
    EX: 有沒有甚麼方法是不用將A活頁簿做複製之後再於B的每個工作表中逐一去新增欄位的?

    因為我也不確定是否有這種功能,
    能否回覆至我的信箱 yahan9806@gmail.com

    感謝您!!!

    回覆刪除
  6. 在保護工作表的情況下,可以複製列,然後再插入複製的列,VBA該如何撰寫
    謝謝你!!

    能否回應至我的信箱:morelluther99@yahoo.com.tw

    回覆刪除
  7. 版主,您好!冒昧請問下面的程式,跑到下列這行就卡住,如何解決?感謝!

    .Refresh BackgroundQuery:=False


    With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;" & StrWebSite, Destination _
    :=Range("$A$2"))
    .Name = "zcq_1234.djhtm"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingAll
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
    End With

    回覆刪除
  8. 請問:我的工作表以數字命名,當要指定到"1"的工作表時,vba會判定為從前面開始數第一個工作表,請問該如何寫才正確?
    Sub 測試II()

    Dim Wb As Workbook, Sh As Worksheet
    Set Wb = Workbooks(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B1").Value) '儲存格的值為檔案名稱
    Set Sh = Wb.Worksheets(Worksheets("VBA").Range("B2").Value) '儲存格的值為工作表名稱
    Sh.Activate 'Range("B2")的值為數字,也就是工作表名稱
    End Sub

    回覆刪除

關節卡卡或彈響

關節間產生的潤滑液少,關節摩擦的損耗 髖關節彈響。 一般有兩種情況,第一種是關節外彈響較常見。 發生的主要原因是髂脛束的後緣或臀大肌肌腱部的前緣增厚, 在髖關節作屈曲、內收、內旋活動時,增厚的組織在大粗隆部前後滑動而發出彈響, 同時可見到和摸到一條粗而緊的縴維帶在...