發表文章

目前顯示的是有「vba」標籤的文章

一些常用的 vba

 如題,稍做整理   Sub resetSheetFormat () ' 重置/清除表單的「設定格式化條件」     Cells.FormatConditions.Delete End Sub Sub resetFilter () ' 重置/清除表單的篩選條件,以顯示所有的資料 ' 篩選功能還開著     ActiveSheet.ShowAllData End Sub Sub saveFile () ' 使用日期命名檔案 ' 另存新檔為 xlsx (沒有巨集的檔案)     ' 今天的日期     today = Format ( Now , "YYYYMMDD" )     ThisWorkbook.Sheets.Copy     ' 關閉詢問視窗     Application . DisplayAlerts = False     ActiveWorkbook.SaveAs Filename := "d:\somewhere\" & today & ".xlsx" , FileFormat := 51     ActiveWorkbook.Close End Sub Sub autoFitAll ()     ' 調整所有欄位 ' 自動符合內容寬度、高度     Cells. Select     Cells.EntireColumn.AutoFit     Cells.EntireRow.AutoFit End Sub Sub trunFilterOnActive () ' 確認是否有開篩選,沒開的話才打開   If Not ActiveSheet.AutoFilterMode Then     ActiveSheet. Range ( "3:3" ).AutoFilter   End If End Sub Sub turnFilterOffActive () ' 如果有開篩選的話就把它關掉 ...

Excel 巨集合併多個 Excel 檔案

上次遇到了同一個檔案中多個工作表合併到一個工作表裏,這次因為工作的關係又去找了多個不同的檔案,所有的工作表合併到同一個檔案中。 工作環境︰ Windows 10 M$ Office 2010 Sub CombineSheets() '活頁簿存放路徑,可自行修改存放路徑 Path = "D:\資料夾名稱\" Filename = Dir(Path & "*.xl*") '避免工作表名字相同,重新命名 i = 1 Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) ActiveSheet.Name = i i = i + 1 Next Sheet Workbooks(Filename).Close Filename = Dir() Loop End Sub 收工!

Excel 巨集檢查工作表是否存在的函式

Excel 好像沒有檢查工作表是否存在的原生函式,所以,到網站上找了一個,在跑巨集的時侯可以用 Function sheetExists(sheetToFind As String) As Boolean     sheetExists = False     For Each Sheet In Worksheets         If sheetToFind = Sheet.Name Then             sheetExists = True             Exit Function         End If     Next Sheet End Function 收工!

Excel 巨集合併多個工作表

假如你的工作表都長得一樣,都是從A1開始建立的,都在同一個檔案中,你可以新增一個巨集,幫你把所有的工作表合併到同一個工作表中。 Sub Combine()     Dim J As Integer       On Error Resume Next     Sheets(1).Select     Worksheets.Add     Sheets(1).Name = "Combine"     Sheets(2).Activate     Range("A1").EntireRow.Select     Selection.Copy Destination:=Sheets(1).Range("A1")       For J = 2 To Sheets.Count         Sheets(J).Activate         Range("A1").Select         Selection.CurrentRegion.Select         Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select         Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)     Next End Sub 檢視 》 巨集 》 檢視巨集 》 第一個Combine  》 執行 所有的資料全部都會合併到第一個工作表「Combine」裏面 如此就不用 [Ctrl] + [C] X [Ctrl] + [V] N 次了 收工!

Excel 錄製巨集,選取篩選完成後的資料

相信各位常用錄製巨集的朋友,可以感受到 Excel 的巨集功能強大,但是,有時侯就是會遇到一些小問題,其中之一就是要選取篩選後的資料,會有這樣的需求是因為,篩選的結果可能因為原始資料的變動而導致結果可能原本是第3列(例如:A3)的資料是第一筆,後來第5列的資料是第1筆(A5)。 我們的邏輯很簡單,篩選之後標題列(假設是A1)之下的第1列開始就是我要的資料,這時問題出現了,如果你用錄製巨集,雖然是用「向下箭頭」來移動你的游標,來到資料的第一列(選標題列,往下=>A1 > A#),但是,Excel 的巨集,會錄製你指定某一個欄位(A#),假如你的原始資料變動,同樣的篩選條件,但是第一筆資料,從A3變到A5,你的巨集就不能用了。 當然你會希望修正Excel的巨集,分享1個方法,把原本的 Range(A3).Select 改成,Range(A1).Select Application.SendKeys "{DOWN}" 你得到了你想要指定的第1列資料,收工