tag:blogger.com,1999:blog-59465307047421309702024-03-06T16:20:07.273+08:00Jax 的工作紀錄除了在整理學習上的經驗,同時也能幫助其他需要的人Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-5946530704742130970.post-86688511992154360192012-02-13T11:51:00.009+08:002012-02-13T11:55:43.734+08:00Excel 提醒重複輸入相同的資料先來瞭解一下 COUNTIF 的使用方式,以下是 Office 官方的片段說明:<br />
<blockquote>計算某範圍內符合某搜尋準則的儲存格個數。<br />
語法:<code>COUNTIF(range,criteria)</code><br />
<dl><dt>range</dt><dd>是您想計算符合準則之儲存格個數的儲存格範圍。</dd>
<dt>criteria</dt><dd>是用以決定是否要列入計算的搜尋準則,可以是數字、表示式或文字。例如,criteria 可以是 32、"32"、">32" 或 "apples"。</dd>
</dl></blockquote><br />
<br />
只要在『資料驗證』中加入重複資料檢查的條件,就可以自動提醒重複輸入相同的資料,不囉唆!看圖說故事吧!<br />
<br />
先將 A 欄整個選取,然後『資料 -> 驗證』<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo_gMTUSFuqjHr3xngpl1YtpbCZouTu1f3bd-Dhh5iNulEDoNh9y2IJx7dC-vnSpoBZ7ijkp0iKcVwwWcL7oTZ-eqS-R4Rll7PwzwMBgjyhxox680P6aUOO3myfuIUF2H0jzbvqNQ5kei_/s1600-h/alert_01.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo_gMTUSFuqjHr3xngpl1YtpbCZouTu1f3bd-Dhh5iNulEDoNh9y2IJx7dC-vnSpoBZ7ijkp0iKcVwwWcL7oTZ-eqS-R4Rll7PwzwMBgjyhxox680P6aUOO3myfuIUF2H0jzbvqNQ5kei_/s512/alert_01.png" /></a> <br />
<br />
設定 -> 選擇『<strong>自訂</strong>』 -> 公式 <code>=COUNTIF(A:A,A1)=1</code><br />
<a href="https://lh6.googleusercontent.com/-t5jpOHOpd9M/Tzfd6j4ID0I/AAAAAAAAKK4/CwYE8eOCcb4/s1600-h/alert_02.png"><img src="https://lh6.googleusercontent.com/-t5jpOHOpd9M/Tzfd6j4ID0I/AAAAAAAAKK4/CwYE8eOCcb4/s512/alert_02.png" /></a><br />
<br />
在『<strong>錯誤提醒</strong>』中填寫想要的提示訊息<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIzuPTttjFsst5HNaBB4yV9GFMATQWor7iqe_raPI8S3brrkGaAEUY7uBELVDjI75scA5B2JHm7ifuYJ_sofoMBVYM1RpUoV5HH_-VRVeh_J31hZ8lF6y6jHZn6KKglsSF5mmkoR5Gj3cf/s1600-h/alert_03.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIzuPTttjFsst5HNaBB4yV9GFMATQWor7iqe_raPI8S3brrkGaAEUY7uBELVDjI75scA5B2JHm7ifuYJ_sofoMBVYM1RpUoV5HH_-VRVeh_J31hZ8lF6y6jHZn6KKglsSF5mmkoR5Gj3cf/s512/alert_03.png" /></a><br />
<br />
增加一個相同的資料來測試一下<br />
<a href="https://lh3.googleusercontent.com/-auvRUqhL2P8/Tzfd8EH78_I/AAAAAAAAKLE/WClGxhXmaNs/s1600-h/alert_04.png"><img src="https://lh3.googleusercontent.com/-auvRUqhL2P8/Tzfd8EH78_I/AAAAAAAAKLE/WClGxhXmaNs/s512/alert_04.png" /></a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com2tag:blogger.com,1999:blog-5946530704742130970.post-76390500882992403812012-02-13T10:48:00.001+08:002012-02-13T10:53:07.800+08:00Excel 使用[自動篩選]找出重複的資料先來瞭解一下 COUNTIF 的使用方式,以下是 Office 官方的片段說明:<br />
<blockquote>計算某範圍內符合某搜尋準則的儲存格個數。<br />
語法:<code>COUNTIF(range,criteria)</code><br />
<dl><dt>range</dt>
<dd>是您想計算符合準則之儲存格個數的儲存格範圍。</dd>
<dt>criteria</dt>
<dd>是用以決定是否要列入計算的搜尋準則,可以是數字、表示式或文字。例如,criteria 可以是 32、"32"、">32" 或 "apples"。</dd> </dl></blockquote><br />
<br />
只要能算出重複的數量,就可以使用『<strong>自動篩選</strong>』來找出重複資料了,所以需要額外的欄位來計算重複的數量,太多廢話了,還是看圖說故事吧!<br />
<br />
在B欄加入公式<code>=COUNTIF(A:A,A2)</code><br />
<a href="https://lh3.googleusercontent.com/-i1M3RRxPoPU/Tzh4nI-qqyI/AAAAAAAAKMo/5YjnE_5xAUc/s1600-h/filter_01.png"><img src="https://lh3.googleusercontent.com/-i1M3RRxPoPU/Tzh4nI-qqyI/AAAAAAAAKMo/5YjnE_5xAUc/s512/filter_01.png" /></a><br />
<br />
選擇B1這個欄位,然後『<strong>資料 -> 篩選 -> 自動篩選</strong>』<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2NsD0Bw2Q71Oj8auB2n_TE-49omOm7rsB9XGPu8vu1Tf9ZmTfo1TmJWwcfCjHbdr_hbgLmI2vjMDxE3ZRJJFU0X-0TqStCnXlxCd8ILNjeYnDX3y1swO3YOn3ccR-WraqyWxtJ58hIxvh/s1600-h/filter_02.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2NsD0Bw2Q71Oj8auB2n_TE-49omOm7rsB9XGPu8vu1Tf9ZmTfo1TmJWwcfCjHbdr_hbgLmI2vjMDxE3ZRJJFU0X-0TqStCnXlxCd8ILNjeYnDX3y1swO3YOn3ccR-WraqyWxtJ58hIxvh/s512/filter_02.png" /></a><br />
<br />
接著在篩選選項中選擇『<strong>(自訂...)</strong>』<br />
<a href="https://lh5.googleusercontent.com/-gYtMjwKOILo/Tzh4n5mJfZI/AAAAAAAAKMs/SmDnnzqkZdM/s1600-h/filter_03.png"><img src="https://lh5.googleusercontent.com/-gYtMjwKOILo/Tzh4n5mJfZI/AAAAAAAAKMs/SmDnnzqkZdM/s512/filter_03.png" /></a><br />
<br />
將重複數量<strong>大於 1 </strong>的項目篩選出來<br />
<a href="https://lh5.googleusercontent.com/-W2R2v0Ulwnk/Tzh4qUX_pPI/AAAAAAAAKNI/h0hpHEtT7w8/s1600-h/filter_04.png"><img src="https://lh5.googleusercontent.com/-W2R2v0Ulwnk/Tzh4qUX_pPI/AAAAAAAAKNI/h0hpHEtT7w8/s512/filter_04.png" /></a><br />
<br />
很簡單就可以找出重複的資料了<br />
<a href="https://lh5.googleusercontent.com/-RHh6No8QtpQ/Tzh4pTbr4RI/AAAAAAAAKM8/8HWgKlahgpI/s1600-h/filter_05.png"><img src="https://lh5.googleusercontent.com/-RHh6No8QtpQ/Tzh4pTbr4RI/AAAAAAAAKM8/8HWgKlahgpI/s512/filter_05.png" /></a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-30430589683369309952012-02-13T10:16:00.000+08:002012-02-13T10:20:34.894+08:00Excel 標記重複的資料先來瞭解一下 COUNTIF 的使用方式,以下是 Office 官方的片段說明:<br />
<blockquote>計算某範圍內符合某搜尋準則的儲存格個數。<br />
語法:<code>COUNTIF(range,criteria)</code><br />
<dl><dt>range</dt><dd>是您想計算符合準則之儲存格個數的儲存格範圍。</dd>
<dt>criteria</dt><dd>是用以決定是否要列入計算的搜尋準則,可以是數字、表示式或文字。例如,criteria 可以是 32、"32"、">32" 或 "apples"。</dd>
</dl></blockquote><br />
<br />
透過『<strong>設定格式化的條件</strong>』就可以很容易做到『<strong>標記重複資料</strong>』,接著就來看圖說故事吧!<br />
<br />
先將 A 欄整個選取,然後『<strong>格式 -> 設定格式化的條件</strong>』<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJm4wLx1RMnYEuK2k-qYqAECk2mVjApkmV_vulL47v5yJPtXW5ffMthlCQjyQUjuAUBB3YqShocekQczp3vCe2_oHXP_d-ugc327rF7wzi4xMPifxdkzcB3zmY1b6FN-AdcQeqOTGZkTzL/s1600-h/mark_01.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJm4wLx1RMnYEuK2k-qYqAECk2mVjApkmV_vulL47v5yJPtXW5ffMthlCQjyQUjuAUBB3YqShocekQczp3vCe2_oHXP_d-ugc327rF7wzi4xMPifxdkzcB3zmY1b6FN-AdcQeqOTGZkTzL/s512/mark_01.png" /></a> <br />
<br />
選擇『<strong>公式為</strong>』,再輸入 <code>=COUNTIF(A:A,A1)>1</code>,在設定要套用的『<strong>格式</strong>』<br />
<a href="https://lh4.googleusercontent.com/-fGERzZlOVfY/TzfeCkAyAQI/AAAAAAAAKL4/BlRKJAKC5Xw/s1600-h/mark_02.png"><img src="https://lh4.googleusercontent.com/-fGERzZlOVfY/TzfeCkAyAQI/AAAAAAAAKL4/BlRKJAKC5Xw/s512/mark_02.png" /></a><br />
<br />
在『<strong>圖樣</strong>』中將背景設定為紅色<br />
<a href="https://lh6.googleusercontent.com/-X9JqKNvwQA8/TzfeBVZ5lsI/AAAAAAAAKLw/QBeNrRvjaPs/s1600-h/mark_03.png"><img src="https://lh6.googleusercontent.com/-X9JqKNvwQA8/TzfeBVZ5lsI/AAAAAAAAKLw/QBeNrRvjaPs/s512/mark_03.png" /></a> <br />
<br />
然後就可以看到有重複的資料就被標示為紅色底色了<br />
<a href="https://lh5.googleusercontent.com/-GhZ9mJPrNXo/TzfeDZJ4IaI/AAAAAAAAKL8/6NaBJUrPGLU/s1600-h/mark_04.png"><img src="https://lh5.googleusercontent.com/-GhZ9mJPrNXo/TzfeDZJ4IaI/AAAAAAAAKL8/6NaBJUrPGLU/s512/mark_04.png" /></a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-68670367813807309992012-02-01T15:18:00.000+08:002013-06-10T22:41:24.658+08:00[VBA] Office Excel 2003 連接 Web Service參考來源:<a target="_blank" href="http://mypaper.pchome.com.tw/stockfuture/post/1311885194">Excel 透過 VBA 呼叫 Web Service</a><br />
<br />
首先需要加入 Soap Library <br />
在『Visual Basic編輯器』中:工具 -> 設定引用項目 -> 勾選『Microsoft Office Soap Type Library v3.0』<br />
<br />
<pre class="vb" name="code">'連接 EpgSoap
Set EpgSoap = New SoapClient30
EpgSoap.MSSoapInit ("http://webservices.daehosting.com/services/isbnservice.wso?WSDL")
'請求 EpgSoap
MsgBox EpgSoap.IsValidISBN10("986-7889-18-5")
'關閉 EpgSoap
Set EpgSoap = Nothing
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-72477509176391494952012-01-24T18:58:00.008+08:002012-01-24T20:27:32.638+08:00[轉載] EXCEL 巨集與VBA介紹轉載自:<a href="http://web.ntit.edu.tw/~yclin/excel_new/excel06.htm">EXCEL 巨集與VBA介紹</a><br />
<br />
巨集:一連串的執行指令所構成,可以利用Visual Basic程式指令、也可以利用錄製巨集的方式來錄寫指令。<br />
<br />
<strong>如何錄製巨集:</strong><br />
<ol><li>如果要執行巨集,則需要更改「EXCEL選項」\「信任中心」\「信任中心設定」\「巨集設定」 </li>
<li>在「檢視」、「巨集」/「錄製巨集」</li>
<li>設定「巨集名稱」、快速鍵(Ctrl+英文鍵),將巨集儲存位置</li>
<li>開始錄製相關動作(錄製是以絕對位址方式來錄製,如果要以相對位址來錄製則要選「以相對位置錄製」)</li>
<li>停止錄製</li>
<li>查看巨集程式碼,並作必要的修正</li>
<li>執行巨集(可以利用「執行巨集」或快速鍵、或利用表單按鈕來執行),如果要編修表單時,可以按下Ctrl+該物件,進行修改。</li>
</ol><br />
<br />
<hr /><strong>範例:(錄製巨集)</strong><br />
<ol><li>C6至C12的數值格式設定「"進貨" #,##0;"出貨" #,##0」</li>
<li>「檢視」、「巨集」、「開始錄製」,並開始執行下列指令</li>
<li>選取範圍C6至C12,並執行「複製」</li>
<li>選取範圍B6至B12,並按下「選擇性貼上」,選擇貼上「值」與運算「加」</li>
<li>選取範圍C6至C12,並按下「Del」,清除儲存格內容</li>
<li>在儲存格C6按一下</li>
<li>停止錄製巨集</li>
<li>在工作表中,產生一個按鈕,並指定該按鈕執行該巨集,並將其按鈕文字改為異動</li>
<li>每次輸入異動資料(正的表示進貨,負的表示出貨),按下按鈕即可執行巨集</li>
</ol><br />
<br />
<hr /><strong>VBA簡介:</strong><br />
Visual Basic for Applications,利用VB來延申Office的能力。開啟EXCEL 顯示開發人員(在「EXCEL選項」/「常用」中勾選),再撰寫或修改VBA程式。<br />
<br />
VBA主要的組成要件:物件,其中包括<br />
<ol><li>屬性:對物件狀態的描述,可以定義物件的特性(大小、顏色、狀態等)。</li>
<li>方法:物件的某些特定動作,可以指定動作的細別內容。其主要結構如下:<br />
</code>物件.方法 指定引數1:=xl常數1, 指定引數2:=xl常數2,....</code><br />
<br />
指定引數設定為某些內建常數,每個內建常數前會有前綴字連接。<br />
<ul><li>EXCEL物件的常數會以xl開始。</li>
<li>VB的陳述式及函數的常數會以vb開始。</li>
<li>Office物件模式的常數會以mso開始。</li>
</ul></li>
<li>事件:物件的觸發反應。</li>
</ol><br />
<br />
<hr /><strong>EXCEL常用的物件</strong><br />
<ol><li><code>Workbook</code> 活頁簿</li>
<li><code>Workbooks</code> 活頁簿集合</li>
<li><code>Workbooks("filename")</code> 檔名為filename的活頁簿</li>
<li><code>ActiveWorkbook</code> 正在作用中的活頁簿</li>
<li><code>Sheets</code> 活頁簿中所有工作表</li>
<li><code>Sheets(n)</code> 活頁簿中第n張工作表</li>
<li><code>Worksheet</code> 工作表</li>
<li><code>Worksheets</code> 所有工作表(包括圖表)</li>
<li><code>Worksheets("sheet")</code> 指表名為sheet工作表</li>
<li><code>ActiveSheet</code> 正在作用中的工作表</li>
<li><code>Columns("c1:c2")</code> c1至c2欄(其中c1,c2為A~Z或AA~XFD等欄名)</li>
<li><code>Rows("r1:r2")</code> r1至r2列(其中r1,r2為1~1048576等列名</li>
<li><code>Range("x1:x2")</code> x1至x2間的儲存格(其中x1,x2為儲存格位址名稱)</li>
<li><code>cells(i,j)</code> 儲存格(第i列、第j行)</li>
<li><code>ActiveCell</code> 目前的儲存格</li>
<li><code>Selection</code> 目前所選取的物件</li>
</ol>範例:<pre class="vb:nogutter:nocontrols" name="code">Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True
Worksheets("Sheet1").Cells.ClearContents
Worksheets("Sheet1").Rows(1).Font.Bold = True
Range("1:1,3:3,8:8")
Worksheets("Sheet1").Cells(6, 1).Value = 10
Worksheets("Sheet1").[A1:B5].ClearContents
ActiveCell.Offset(1, 3).Font.Underline = xlDouble
</pre><br />
<br />
<hr /><strong>活頁簿常用屬性:</strong><br />
<ul><li><code>ActiveWorkBook.Name</code> 目前活頁簿的名稱</li>
<li><code>ActiveWorkBook.Save</code> 儲存目前的活頁簿</li>
<li><code>ActiveWorkBook.SaveAs Filename := "filename"</code> 另儲新檔</li>
<li><code>WorkBooks.Add</code> 新增活頁簿</li>
<li><code>WorkBooks(i).Close [SaveChange, Filename, RouteWorkbook]</code> 關閉指定的第i個活頁簿 <br />
<ul><li><code>SaveChange</code> := True 改變儲存</li>
<li><code>SaveChange</code> := False 不會改變儲存</li>
<li><code>SaveChange</code> 省略時,會出現對話方塊</li>
<li><code>filename</code> := "檔名"</li>
</ul></li>
<li><code>WorkBooks.Open "filename"</code> 開啟一個活頁簿</li>
<li><code>Application.Windows</code> 所有活頁簿視窗</li>
<li><code>WorkBooks.Count</code> 活頁簿的數量</li>
<li><code>WorkBooks.Item(Index)</code> 傳回單一活頁簿,由索引值指定</li>
</ul><br />
<br />
<hr /><strong>工作表常用屬性:</strong><br />
<ul><li><code>Worksheets.Add [Before, After, Count, Type]</code> 新增工作表<br />
<ul><li><code>Before</code> := Worksheets(n) 出現於某工作表之前</li>
<li><code>After</code> := Worksheets(n) 出現於某工作表之後</li>
<li><code>Count</code> := n 新增工作表數量</li>
<li><code>Type</code> := xlWorksheet (工作表) 或 xlChart (圖表)</li>
</ul></li>
<li><code>WorkSheets.Name</code> 工作表名稱</li>
<li><code>WorkSheets("Sheet1").Activate</code> 設定工作表為目前作用的功作表</li>
</ul><br />
<br />
<hr /><strong>儲存格常用屬性:</strong><br />
<ul><li><code>Rows.RowHeight</code> 指定範圍內的所有列高</li>
<li><code>Columns.ColumnsWidth</code>:指定範圍內的所欄寬</li>
<li><code>expression.NumberFormatLocal</code> 以本地的數字格式</li>
<li><code>Range.CurrentRegion</code> 目前區域是指以任意空白列及空白欄的組合為邊界的範圍<br />
範例:<pre class="vb:nogutter:nocontrols" name="code">Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
</pre></li>
<li><code>expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)</code> 以參照的方式<br />
<ul><li><code>RowAbsolute</code> 為True,則用列的絕對位址</li>
<li><code>ColumnAbsolute</code> 為True,則用欄的絕對位址</li>
<li><code>ReferenceStyle</code> 預設值為xlA1,如為xlR1C1則為R1C1的表達方式</li>
</ul></li>
<li><code>expression.count</code> 傳回範圍的數量(可以是欄數、列數或儲存格數量)</li>
<li><code>expression.Item(RowIndex, ColumnIndex)</code> 代表相對於指定之範圍某個位移距離的範圍。</li>
<li><code>expression.value</code> 傳回或設定物件的值</li>
<li><code>expression.Formula</code> 傳回或設定物件的公式,代表 A1 樣式註解以及巨集語言中的物件公式。<br />
範例:<code>Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"</code><br />
</li>
<li><code>expression.FormulaR1C1</code> 傳回或設定物件的公式,並以巨集語言中的 R1C1 樣式標記法表示<br />
範例:<code>Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"</code><br />
</li>
<li><code>expression.Text</code> 傳回或設定物件的文字<br />
範例:<pre class="vb:nogutter:nocontrols" name="code">Set c = Worksheets("Sheet1").Range("B14")
c.Value = 1198.3
c.NumberFormat = "$#,##0_);($#,##0)"
MsgBox c.Value
MsgBox c.Text
</pre></li>
</ul><br />
<br />
<hr /><strong> 常用方法:</strong><br />
<ul><li><code>Range.Select</code>方法/<code>Selection</code>屬性 設定目前選取的範圍/使用目前所選取的範圍<br />
範例:<pre class="vb:nogutter:nocontrols" name="code">Sub Macro1()
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Address"
Range("A1:B1").Select
Selection.Font.Bold = True
End Sub
</pre></li>
<li><code>expression.Copy</code> 將目前所選取的物件復製至剪貼簿</li>
<li><code>expression.Cut</code> 將目前所選取的物件剪下</li>
<li><code>expression.Delete</code> 將目前所選取的物件刪除</li>
<li><code>expression.Paste</code> 將剪貼簿的內容貼上<br />
範例:<pre class="vb:nogutter:nocontrols" name="code">Sub CopyRow()
Worksheets("Sheet1").Rows(1).Copy
Worksheets("Sheet2").Select
Worksheets("Sheet2").Rows(1).Select
Worksheets("Sheet2").Paste
End Sub
</pre></li>
<li><code>expression.RasteSpecial(Paste,Operation, SkipBlanks, Transpose)</code><br />
範例:<pre class="vb:nogutter:nocontrols" name="code">With Worksheets("Sheet1")
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial _
Operation:=xlPasteSpecialOperationAdd
End With
</pre></li>
<li><code>Range.Activate</code> 目前的儲存格</li>
<li><code>Range.Clear</code> 清除資料</li>
<li><code>Range.ClearContents</code> 清除資料內容</li>
<li><code>Range.ClearFormats</code> 清除資料格式</li>
<li><code>Range.ClearComments</code> 清除註解</li>
<li><code>expression.AutoFit</code> 自動調整列高和欄寬</li>
<li><code>Range.FillDown、Range.FillUp、Range.FillLeft、Range.FillRight</code> 填滿</li>
<li><code>Range.Offset(RowOffset, ColumnOffset)</code> 指定區域的位移列與行<br />
範例:<pre class="vb:nogutter:nocontrols" name="code">Sub MoveActive()
Worksheets("Sheet1").Activate
Range("A1:D10").Select
ActiveCell.Value = "Monthly Totals"
ActiveCell.Offset(0, 1).Activate
End Sub
</pre></li>
</ul><br />
<br />
<hr /><strong>程式語法:</strong><br />
<ul><li><br />
<dl><dt>Dim 陳述式(變數)</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">Dim varname [ As [New] type]
type 包括 Byte、Boolean、Integer、Long、Single、Double、Date、String、Object等</pre></dd>
<dt>Set 陳述式(物件)</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">Set objectvar = {[New] objectexpression | Nothing}
例:Set RangeA = Range("A1:B2")</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub Random()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:D5")
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
</pre></dd>
<dt>With 多種屬性設定</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">With 物件
.屬性1 = 設定值
.屬性2 = 設定值
....
End With</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = "All Sales"
.Subject = "Sales"
.SaveAs Filename:="Allsales.xls"
End With
End Sub
</pre></dd>
<dt>Array 陣列</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">Array(Range1, Range2, ....)</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub Several()
Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
End Sub
</pre></dd>
<dt>InputBox 函數</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">InputBox("文字說明",[,title][,default][,xpos][,ypos][,helpfile, context])</pre></dd>
<dt>MsgBox 函數</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">MsgBox "文字說明"</pre></dd>
<dt>Union 將多個範圍合併成單一Range物件</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">Union(Range1, Range2, ...)</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub MultipleRange()
Dim r1, r2, myMultipleRange As Range
Set r1 = Sheets("Sheet1").Range("A1:B2")
Set r2 = Sheets("Sheet1").Range("C3:D4")
Set myMultipleRange = Union(r1, r2)
myMultipleRange.Font.Bold = True
End Sub
</pre></dd>
<dt>For... Next 陳述式</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">For counter = start to end [ step stepvalue]
[statements]
[Exit For]
[statements]
Next [counter]</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub CycleThrough()
Dim Counter As Integer
For Counter = 1 To 20
Worksheets("Sheet1").Cells(Counter, 3).Value = Counter
Next Counter
End Sub
</pre></dd>
<dt>For Each... Next 陳述式</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">For Each element In group
[statements]
[Exit For]
[statements]
Next [element]</pre>範例:<pre class="vb:nogutter:nocontrols" name="code">Sub ApplyColor()
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
c.Interior.ColorIndex = 27
End If
Next c
End Sub
</pre></dd>
<dt>Do ... Loop 陳述式</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop</pre>或</dd><dd><pre class="vb:nogutter:nocontrols" name="code">Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]</pre></dd>
<dt>If ... Then ... Else ... 陳述式</dt>
<dd><pre class="vb:nogutter:nocontrols" name="code">If condition Then [statements][Else elsestatements]</pre>或
<pre class="vb:nogutter:nocontrols" name="code">If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements]...
[Else
[elsestatements]]
End If</pre></dd></dl></li><br />
</ul><br />
<br />
<hr /><strong>範例:(VBA程式範例)</strong><br />
<pre class="vb" name="code">Sub pmt_title()
Dim rate As Single
Dim nper, i As Integer
Dim pv, totali, totalp As Double
Dim start As Date
Dim color1 As Variant
start = Range("C2").Value
pv = Range("C3").Value
rate = Range("C4").Value
nper = Range("C6").Value
'清除所有有明細表
Range("A11:E65536").Clear
With Cells(11, 1)
.Value = 0
.HorizontalAlignment = xlCenter
.Interior.Color = RGB(255, 255, 255)
End With
With Cells(11, 2)
.Value = start
.HorizontalAlignment = xlCenter
.NumberFormat = "ge年mm月dd日"
End With
Cells(11, 5) = pv
pv1 = pv
For i = 1 To nper
If i Mod 2 = 1 Then
color1 = RGB(255, 255, 150)
Else
color1 = RGB(255, 255, 255)
End If
With Cells(11 + i, 1)
.Value = i
.HorizontalAlignment = xlCenter
.Interior.Color = color1
End With
With Cells(11 + i, 2)
.Value = DateAdd("m", i, start)
.HorizontalAlignment = xlCenter
.Interior.Color = color1
.NumberFormatLocal = "ge年mm月dd日"
End With
With Cells(11 + i, 3)
.Value = -IPmt(rate / 12, i, nper, pv)
.Interior.Color = color1
.NumberFormat = "_-$* #,##0.00_-"
End With
totali = totali + Cells(11 + i, 3)
With Cells(11 + i, 4)
.Value = -PPmt(rate / 12, i, nper, pv)
.Interior.Color = color1
.NumberFormat = "_-$* #,##0.00_-"
End With
totalp = totalp + Cells(11 + i, 4)
With Cells(11 + i, 5)
.Value = pv - totalp
.Interior.Color = color1
.NumberFormat = "_-$* #,##0.00_-"
End With
Next i
With Range(Cells(10, 1), Cells(11 + nper, 5)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(0, 0, 0)
End With
Cells(12 + nper, 1) = "合計"
With Range(Cells(12 + nper, 1), Cells(12 + nper, 2))
.MergeCells = True
.HorizontalAlignment = xlCenter
.Interior.Color = RGB(255, 200, 255)
End With
With Cells(12 + nper, 3)
.Value = totali
.Interior.Color = RGB(255, 200, 255)
.NumberFormat = "_-$* #,##0.00_-"
End With
With Cells(12 + nper, 4)
.Value = totalp
.Interior.Color = RGB(255, 200, 255)
.NumberFormat = "_-$* #,##0.00_-"
End With
With Range(Cells(12 + nper, 1), Cells(12 + nper, 4)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(0, 0, 0)
End With
End Sub
'===================================================================
Sub clearall()
Range("A11:E65536").Clear
End Sub
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com1tag:blogger.com,1999:blog-5946530704742130970.post-29125291276075632512009-03-26T22:29:00.001+08:002009-04-11T00:37:22.989+08:00Excel 圖片隨著單元儲存格排序Excel 真的是一個很好用的文書工具,這幾天為了圖片排序的問題,扒了不少文章,順便做一下心得紀錄。<br /><br /><a href="http://picasaweb.google.com/lh/photo/fW3O6BUPP7AAXhAjEwW98w?feat=embedwebsite"><img alt="Excel 插入圖片" src="http://lh3.ggpht.com/_b8lN_UbLoEc/Scu_JHXj5EI/AAAAAAAAD-4/SZMKWzgZs74/s400/excel-01.png" /></a><br />選擇從檔案插入圖片。<br /><br /><a href="http://picasaweb.google.com/lh/photo/KqPT8oByIAINOveJgJi1vA?feat=embedwebsite"><img alt="Excel 插入圖片" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZXPHPArnatHapS9qT1l-XnqV5xAVmVj1bV7jKyQ2XbiDQ-uEsnVmMiT4QiQlnXqfDsJjB-8RCIpxE9yMusRRaD6MzHa_PbLCN1GxIGxsV50J7cnJ3eCPWIU9gGf5wBTw5Rh1ELV52AMsV/s400/excel-02.png" /></a><br />選擇需要的圖片全部插入。<br /><br /><a href="http://picasaweb.google.com/lh/photo/45joeORp3KPc8mIY-xgx-g?feat=embedwebsite"><img alt="Excel 選取全部的圖片" src="http://lh4.ggpht.com/_b8lN_UbLoEc/Scu_KbzDdoI/AAAAAAAAD_M/GKM0cHONQgU/s400/excel-03.png" /></a><br />按下[<span style="color: rgb(255, 0, 0);">Ctrl</span>]鍵+<span style="color: rgb(255, 0, 0);">滑鼠</span>選取全部的圖片。<br /><br /><a href="http://picasaweb.google.com/lh/photo/LEPBuRcZ2GoRXukyiHttog?feat=embedwebsite"><img alt="Excel 設定圖片格式" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNIEjNkdFiIZXtXM46cBACp9G9_v3jEA79ZFYrtAVljNYrgEchjeGiAN3V_9nTdXWmUT8NwfwIaSJzLJZ9TvNNPq1hLRTff7jQ4uyoc7OiLzU8bNeYqqd_52lZ3ff13TrJ98AmEpfh0Lks/s400/excel-04.png" /></a><br />設定圖片格式。<br /><br /><a href="http://picasaweb.google.com/lh/photo/RzqY5T8N2JOxlQIMxhJ-Ng?feat=embedwebsite"><img alt="Excel 圖片大小設定" src="http://lh5.ggpht.com/_b8lN_UbLoEc/Scu_LAwtSLI/AAAAAAAAD_c/CUBlZhQ8SYY/s400/excel-05.png" /></a><br />在[<span style="color: rgb(255, 0, 0);">大小</span>]的頁籤中,建議先將圖片縮小到預定大小的 3/2,在拖移時會比較方便操作。<br />如果要將<span style="color: rgb(255, 0, 0);">圖片填滿整個單元儲存格</span>,建議將[<span style="color: rgb(255, 0, 0);">鎖定長寬比</span>]取消。<br /><br /><a href="http://picasaweb.google.com/lh/photo/qR8Lo8vAjzd_d2SJztSr6A?feat=embedwebsite"><img alt="Excel 圖片隨著單元儲存格排序" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeH7h8TkzkdNmc5kCYOrQXuw82haQ8PSuNPGFbTEJ2RvBPCwh_kDJQN8FaLrS3V5WHpX6RmflmSZQecKT9zastSj6XJebE8niAEgBHDM71d37_Jm-AQfd1ph0THdR5iXGHijU5oUqUR0Hm/s400/excel-06.png" /></a><br />在[<span style="color: rgb(255, 0, 0);">摘要資訊</span>]的頁籤中決定圖片的定位方式,建議選擇第一項[大小位置隨儲存格而變],因為<strong style="color: rgb(255, 0, 0);">儲存格必須完全包含整張圖片</strong>,如果<strong style="color: rgb(255, 0, 0);">超過單一範圍的儲存格都會讓排序失效</strong>,所以建議將圖片填滿整個儲存格,並且隨儲存格變動,避免圖片超過儲存格的意外。<br /><br /><a href="http://picasaweb.google.com/lh/photo/L9W0HUb0g0xUdF-pp0IMwQ?feat=embedwebsite"><img alt="Excel 設定列高" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHyP13_VhO26Cn0myvtPFaFNxj0Nc6NbSelXh1v89huRsodxxjFl-NocvPjOgJOJuM5ahERR0G1laT_5UOkFOblZllA20bxjadzAF5DDiAxhpoNB9hCL6yL97JErjXC4TQw4K91d9c7BDJ/s400/excel-07.png" /></a><br /><br /><a href="http://picasaweb.google.com/lh/photo/MCJQKOqXv29MXQSR8gk8eg?feat=embedwebsite"><img alt="Excel 設定列高" src="http://lh4.ggpht.com/_b8lN_UbLoEc/Scu_UBSItLI/AAAAAAAAD_0/OjXj5i5qkCE/s400/excel-08.png" /></a><br />先將[<span style="color: rgb(255, 0, 0);">列高</span>]及[<span style="color: rgb(255, 0, 0);">欄寬</span>]調整到所需要的大小。<br /><br /><a href="http://picasaweb.google.com/lh/photo/OlXWskWlNOjXoRP8_ULWtA?feat=embedwebsite"><img alt="Excel 滑鼠拖移及縮放鎖定" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2caiaBPCErJy-Cr1syX09JdiAUsESFDQJ9WBz6m9y9f8E87lFTcHnmWbjlbEn5RabHkAdAgbBfCVImEUQGOF0A8kYWBCyFDavkYfLscRSd0SFV54LUezkzmz35Voo5sl8UlIdq_3lFkoJ/s400/excel-09.png" /></a><br />按下[<span style="color: rgb(255, 0, 0);">Alt</span>]鍵+<span style="color: rgb(255, 0, 0);">滑鼠</span>拖移圖片至儲存格。<br /><strong style="color: rgb(255, 0, 0);">[Alt]鍵具有格線鎖定的功能,會將滑鼠拖移及縮放鎖定在格線上,可以精確的將圖片填滿整個儲存格。</strong><br /><br /><a href="http://picasaweb.google.com/lh/photo/mtc_UloGy5g3GT6pa4xslQ?feat=embedwebsite"><img alt="Excel 選擇排序範圍" src="http://lh3.ggpht.com/_b8lN_UbLoEc/Scu_Ux9EB-I/AAAAAAAAEAE/OxYR_xLCIgw/s400/excel-10.png" /></a><br />選擇需要排序的範圍。<br /><br /><a href="http://picasaweb.google.com/lh/photo/4X3nLMFv_mPMzoODVwHIeQ?feat=embedwebsite"><img alt="Excel 選擇排序方式" src="http://lh6.ggpht.com/_b8lN_UbLoEc/Scu_VAMeTjI/AAAAAAAAEAM/2ZrcNBJGqa0/s400/excel-11.png" /></a><br />選擇排序方式。<br /><br /><a href="http://picasaweb.google.com/lh/photo/MIGPboT9gYPkx7Y59ieLqA?feat=embedwebsite"><img alt="Excel 圖片隨著單元儲存格排序" src="http://lh5.ggpht.com/_b8lN_UbLoEc/Scu_VvI_u8I/AAAAAAAAEAU/ick72ChbUOc/s400/excel-12.png" /></a><br />呈現的結果。Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com7tag:blogger.com,1999:blog-5946530704742130970.post-44851385138428487142007-09-22T14:40:00.007+08:002009-04-24T22:45:41.369+08:00[PHP] 輸出資料至 Excel經由設定 header 的文件格式達到輸出至 Excel 檔<br />這個方法我之前有用過,可惜他不支援 UTF-8 的編碼方式<br />有嘗試過使用 BIG5 的編碼方式,可以正常輸出文字<br /><pre class="php" name="code"><br /><?php<br />/* 設定文件格式 */<br />header("Content-type:application/vnd.ms-excel");<br />/* 設定文件名稱 */<br />header("Content-Disposition:filename=to_excel.xls");<br /><br />/* 輸出文件內容 */<br />for($i=1; $i<10; $i++){<br /> /* 每個項目以( \t )分隔 */<br /> echo "number".$i."\t";<br /> echo "name".$i."\t";<br /> echo "date".$i."\t";<br /> echo "text".$i."\t";<br /><br /> /* 每一筆資料以( \n )分隔 */<br /> echo "\n";<br />}<br />?><br /></pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0