2019-06-27

〔VBA〕範例:抓取資料夾下所有檔案名稱並寫入工作表內--v011


【列出指定目錄下所有檔案名稱】

當你需要將特定資料夾下的檔案名稱放入Excel工作表內做處理,除了辛苦的將檔名個別複製或寫入外,還有沒有更快的方式??

本範例是在工作表上放個按鈕,只要按下就即刻更新目前檔案所在的資料夾下所有的檔案名稱


注意:每次更新時記得先將舊資料刪除喔★★★★

語法:
Private Sub cmdGetAmount_Click()
    ActiveSheet.Range("B6:D1000").ClearContents  '清除舊資料
    '取得所有檔名
    Dim myDir As Variant
    Dim strPath As String: strPath = ActiveWorkbook.Path        '目前Workbook所在位置
    Dim iRow As Integer: iRow = 6           '從第6行開始寫入
   
    Range("C2") = Now()
    myDir = Dir(strPath & "\*.*")        '指定抓出xlsx的檔案
    Do While myDir <> ""
        Range("B" & iRow) = myDir
        iRow = iRow + 1
        myDir = Dir()
    Loop
End Sub


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

5 章老師的電腦小講堂: 6月 2019 【列出指定目錄下所有檔案名稱】 當你需要將特定資料夾下的檔案名稱放入 Excel 工作表內做處理,除了辛苦的將檔名個別複製或寫入外,還有沒有更快的方式 ?? 本範例是在工作表上放個按鈕,只要按下就即刻更新 目前檔案所在的資料夾 下所有的檔案名稱 ...

2019-06-26

〔VBA〕範例:動態螢光棒(列變色)的作法[格式化的條件]--v010


【點選儲存格,則該列底色反黃變色】

這是一個很有趣的題目
當我們在處理Excel的表格"很寬。。很寬。。很寬"
是否會有移到後面的儲存格時,搞不清楚目前到底是在看哪一列
又或者要對應前面的資料會有些眼花撩@@@…

如果,如果,如果被點選的儲存格那一列能自動反黃,是否會更好用一些呢?

本範例也是經由學員實務應用上的提問而來的有需要可參考
只是這是利用Excel VBA來處理的唷~

例如這張表,希望只要點選B7~S12之間的任一儲存格該列就會呈現淡黃底色

作法:在Worksheet_SelectionChange中貼入動態的"刪除及加入"『格式化條件的設定』語法即可
關鍵:利用『格式化條件的設定』才能讓你在離開該列時該列會恢復原有的格式設定唷~相當重要★★★★

語法:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub       '選擇多儲存格則不處理
    Range("B7:S12").FormatConditions.Delete       'B7:S12內格式化條件的設定刪除
    If Target.Row > 6 And Target.Row < 13 Then   '點選在第7~12列時,才設定該列的格式化條件
        With Target.EntireRow.Range("B1:S1").FormatConditions
            .Add xlExpression, , "TRUE"
            .Item(1).Interior.ColorIndex = Int(36)
            .Item(1).StopIfTrue = False
        End With
    End If
End Sub


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

5 章老師的電腦小講堂: 6月 2019 【點選儲存格,則該列底色反黃變色】 這是一個很有趣的題目 … 當我們在處理 Excel 的表格 " 很寬。。很寬。。很寬 " 時 … 是否會有移到後面的儲存格時,搞不清楚目前到底是在看哪一列 … 又或者要對應前面的資料會有些眼花撩 @@...

2019-06-25

〔EXCEL〕IF多層結構的寫法(概念說)--h003

章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【用槽狀IF函數的撰寫方式來說明公式寫法的好習慣】

其實這篇概念想寫很久了…
對於初學者來說,養成一個良好的"習慣"是會有很大的幫助…
而這習慣,也許只是一個非常簡單的動作










相信,對於初學者或對函數不熟悉的人,甚至,非常厲害的人但卻寫了一長串複雜的函數及公式…
看到這個訊息,當下應該會很無奈吧@@@@!

因此今天要談的是函數的"結構"…在串組公式時…用完整函數結構一層層架上去的好習慣
舉例來說,IF的結構為
=IF(,,)         '函數  IF(條件, 成立的顯示, 不成立的顯示)




案例希望評等結果
>=90→特優
>=80→優
>=70→一般
>=60→再加強
<60→不及格

我們用IF判斷式來達到上述的結果
步驟一:在E4 先寫入IF的完整結構                           
               =IF( , , )
步驟二:再將結構中要填入的參數補齊                    
               =IF(D4>=90,"特優", )   '不成立的部份還要再判斷,先空著
步驟三:不成立的部份,再複製完整結構貼入,例如IF( , , )或直接用IF(D4>=90,"特優", )去改,我們採後者
               =IF(D4>=90,"特優",IF(D4>=80,"", ))
步驟四:重覆步驟三,將完整IF結構貼入所需判斷的參數位置,再修改其條件…直到全數判斷為止
               =IF(D4>=90,"特優",IF(D4>=80,"優",IF(D4>=70,"一般", )))
               =IF(D4>=90,"特優",IF(D4>=80,"優",IF(D4>=70,"一般",IF(D4>=60,"再加強","不及格" ))))

當你是運用完整結構貼入,再將其中的空白參數一個個補滿的時候,你完全不用擔心括號( )的位置或個數
因為在你貼入時,它已經是對應好且位置正確了…

至於其它函數,當然,也是等同辦理…除非你很有把握~~
--好習慣讓你不用思考--好習慣讓你降低除錯的必要--好習慣其實看似麻煩實則簡單--

--範例檔下載--

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂  https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【用槽狀IF函數的撰寫方式來說明公式寫法的好習慣】 其實這篇概念想寫很久了… 對於初學者來說,養...

2019-06-20

開新視窗/關閉視窗/訊息視窗 的語法範例


〔ASP.NET〕視窗轉向方式

.Response.Redirect("網址:xxx.aspx")

.Server.Transfer("網址:xxx.aspx")

.Server.Excute



〔JavaScript〕開啟新視窗方式
在Button裡加入屬性
Button1.Attributes.Add("onclick", "window.open( 'xxxx.aspx', '視窗Title', 'menubar=no, status=no, scrollbars=yes, top=100, left=200, toolbar=no, width=450, height=300');")


menubar=no - 是否顯示視窗選單按鈕
status=no - 是否顯示狀態欄位
scrollbars=yes - 是否顯示視窗捲軸
top=100,left=200 - 視窗起始位置
toolbar=no - 是否顯示工具列
width=450,height=300 - 視窗大小



JavaScript 〕視窗關閉方式

在後端程式碼加入
Response.Write("<script>window.opener=null;window.close()</script>")



JavaScript 〕開啟訊息方式

在後端程式碼加入
Response.Write("<Script language='JavaScript'>alert('喔喔!這裡寫入你的訊息喔!');</Script>")



5 章老師的電腦小講堂: 6月 2019 〔ASP.NET〕視窗轉向方式 .Response.Redirect("網址:xxx.aspx") .Server.Transfer("網址:xxx.aspx") .Server.Excute 〔JavaScript〕...

2019-06-19

〔VBA〕從非連續的選取區取值(Selection.Areas)--v009


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【使用迴圈一列列讀取選取範圍裡的資料
Dim sArea  As Range
Dim sRow As Range
For Each sArea In Selection.Areas               '選取範圍裡的每個區域
    For Each sRow In sArea.Rows             '區域裡的每一列
        [A欄的內容] = sRow.Range("A1")
    Next
Next
Set sArea=Nothing:Set sRow=Nothing

參考文件:

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【使用 迴圈一列列讀取選取範圍裡的資料 】 Dim sArea  As Range Dim sRow ...

2019-06-17

〔VBA〕Copy-複製工作表至另一個活頁簿--v008


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【複製指定的工作表至另一個活頁簿】
本範例以完整Function撰寫,可自行修改改
fWBName
:被複製的活頁簿
fWSName
:被複製的工作表
tWBName
:複製至的活頁簿(空白代表產生新的活頁簿,非空白一律複製到最後一張工作表)

執行結果,成功回傳True,失敗回傳False

Private Function CopyDataSource(ByVal fWBName As String, ByVal fWSName As String, ByVal tWBName As String) As Boolean
On Error GoTo Err
Workbooks(fWBName).Activate     '複製來源Workbook必需Activate
If tWBName = "" Then
Sheets(fWSName).Copy
Else
Sheets(fWSName).Copy After:=Workbooks(tWBName).Sheets(Workbooks(tWBName).Sheets.Count)
End If
CopyDataSource = True
Exit Function
Err:
CopyDataSource = False
End Function

參考文件:

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【複製指定的工作表至另一個活頁簿】 本範例以完整 Function 撰寫,可自行修改改 fWBNam...

〔VBA〕ScreenUpdating-關閉及開啟螢幕更新--v007


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【關閉螢幕更新】
Application.ScreenUpdating = False

【開啟螢幕更新】
Application.ScreenUpdating = True

'螢幕更新的關閉,好處在於可以加速整個作業執行(若程序步驟多又複雜的話,效能提昇會相當明顯),但相對的就看不到中間執行的過程。


參考文件:

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【關閉螢幕更新】 Application.ScreenUpdating = False 【開啟...

〔VBA〕Dir-讀取指定資料夾下的檔案名稱--v006


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【使用Dir讀取指定資料夾下的檔案名稱

Dim myDir As Variant
myDir = Dir(指定完整路徑 & "\*.xlsx")        '指定抓出xlsx的檔案
Do While myDir <> ""
MsgBox myDir           '跳出檔名之對話方塊
myDir = Dir()
Loop


參考文件:

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【使用 Dir 讀取指定資料夾下的 檔案名稱 】 Dim myDir As Variant my...

〔VBA〕Form.Show-開啟表單--v005

【開啟自定義表單】


Form.Show

'表單開啟,且為強制回應(預設)-開啟後必需關閉才能操作Excel
Form.Show vbModal
Form.Show 1

'表單開啟,非強制回應-開啟後可同時操作Excel
Form.Show vbModeless
Form.Show 0



章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

5 章老師的電腦小講堂: 6月 2019 【開啟自定義表單】 Form.Show '表單開啟,且為強制回應(預設)-開啟後必需關閉才能操作Excel Form.Show vbModal Form.Show 1 '表單開啟,非強制回應-開啟後可同時操作Excel Form.Show v...

2019-06-13

〔VBA〕搜尋指定字串所在位置(Find)--v004


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【在指定範圍的搜尋特定字串所在位置】

Dim fRange As Range
Set fRange = Worksheet.Columns("A:A").Find(搜尋的字串, LookIn:=xlValues)
If Not fRange Is Nothing Then
'找到第一筆符合字串
Else
'找不到
End If
Set fRange = Nothing

參考文件:

5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【在指定範圍的搜尋特定字串所在位置】 Dim fRange As Range Set fRan...

〔VBA〕Open/Close-開啟及關閉活頁簿--v003

章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※

【開啟Excel Workbook
Workbooks.Open Filename:="檔案完整路徑.xlsx", UpdateLinks:=0
'UpdtaeLinks:=0 代表檔案開啟時不會更新外部參照


【關閉Excel Workbook
Application.DisplayAlerts = False      '關閉警示詢問訊息,若檔案有被修改將不會儲存
ActiveWorkbook.Close
Workbooks("目前開啟的檔名.xlsx").Close
Application.DisplayAlerts = True



5 章老師的電腦小講堂: 6月 2019 章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/ ※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※ 【開啟 Excel Workbook 】 Workbooks.Open Filename:= "...

〔VBA〕Dir-檢查資料夾是否存在--v002

【使用Dir函數判定路徑下資料夾是否存在】

If Dir( 資料夾完整路徑 , vbDirectory) = vbNullString Then
    '資料夾不存在
Else
    '資料夾存在
End IF

相同功能:
〔VBA〕Dir-檢查資料夾是否存在--v002
〔VBA〕FileSystemObject-檢查檔案是否存在 --v026

參考文件:
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/dir-function


章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※
5 章老師的電腦小講堂: 6月 2019 【使用Dir函數判定路徑下資料夾是否存在】 If Dir( 資料夾完整路徑 , vbDirectory) = vbNullString Then     '資料夾不存在 Else     '資料夾存在 End IF 相同功能: 〔VBA〕Di...

〔VBA〕Dir-檢查檔案是否存在 --v001

【使用Dir函數判定路徑下檔案是否存在】


If Dir( 完整檔案路徑含副檔名 ) = "" Then
    '檔案不存在
Else
    '檔案存在
End IF


參考文件:
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/dir-function

章老師的電腦小講堂 https://www.facebook.com/ScenicSchool/
※※ 本區做為經常使用之程式碼複製區,提問請至小講堂唷 ※※
5 章老師的電腦小講堂: 6月 2019 【使用Dir函數判定路徑下檔案是否存在】 If Dir(  完整檔案路徑含副檔名   ) = "" Then     '檔案 不存在 Else     '檔案存在 End IF 參考文件: https://docs.mic...
小講堂經過多次搬移,舊文章連結及內容較難整理~
大家可以新文章為主~
每篇文章後有代碼,任何文章問題可至FB小講堂用代碼提問唷~