2009年3月3日

Excel 取得目前工作表名稱 by 程式

紀錄取得目前正在工作中工作表名稱 VBA 語法。
ActiveSheet.Name

ThisWorkbook.ActiveSheet.Name

2009年2月26日

AutoCad 利用 MVSETUP 設定出圖比例

已經很久不用AutoCad,最近工作需要,重新使用AutoCad,目前使用2007的版本跟以前R13、R14差蠻多。

為一張圖面需使用不同比例出圖傷腦筋。公司的同事教我一個以前未曾學過的指令 mvsetup。經過測試,認為下列步驟可以很容易設定多比例的圖面,然後繪製圖面都是1:1繪製,不需考慮比例問題。
  1. 在模型空間(model space)繪製1:1的圖面。
  2. 在配置空間(paper space)建立不同紙張大小的配置。然後在配置裏的頁面設定(page setup manager)設繪圖比例為1:1,使用公制,單位就設mm,使用英制,單位就設inch。並在配置裏建立浮動視埠,選取你需要出圖的圖面。
  3. 利用mvsetup設定浮動視埠比例。設定方式: paper space unit一律設為1,model space unit 就根據出圖比例設圖。如果出圖比例是1:1,model space unit就設1;出圖比例1:10,model space就設10。建築製圖單位常使用cm,如果出圖比例為1:10,model space unit就設1;出圖比例是1:20,model space unit就設2。

在 model space 裏有單位但沒指定此單位為cm或者mm,真正指定1個單位為實際長度單位是在paper space的頁面設定。因為我們在 paper space 的頁面設定已經指定比例1:1與單位mm,所以指令 mvsetup 設定 paper space unit 為1,model space unit 為1,實際繪製的長度為 1mm。如果在 paper space 的頁面設定已經指定比例1:1與單位 cm,實際繪製的長度為 1cm。但目前於 paper space 的頁面設定只能設定實際長度單位為 mm 與 inch 兩種。

2009年2月14日

SQLite

微軟釋放可以免費使用的 SQL Express 2008,對個人使用者來講是一大德政。但是對於個人單機使用上我還是覺得太複雜。最近不小心在 Internet 上發現有 SQLite 的 ADO.NET 2.0 Provider,讓我回頭再檢視 SQLite 的特性。它有下列特性:
  • 支援ACID (Atomic, Consistent, Isolated, Durable) transaction。
  • 支援大部分 92 SQL語法。
  • 不需要管理者,以及額外的設定。
  • 一個資料庫為單一檔案。
  • 支援 TCL,也支援很多其他語言。
  • 是一個自由軟體的關聯式資料庫。
  • 佔用記憶體小。
  • 誇平台。

由於它的簡單很適合開發崁入式與個人單機的程式。從文字內容看似簡單,也要試試才知道是否可以拿來開發程式使用。於是按照官方網站(http://www.sqlite.org/)的文件,測試看看是否OK。下面記錄 command-line 的模式下的語法與結果。

sqlite3 test.db
SQLite version 3.6.10
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!10
goodbye20
sqlite>

經簡單測試,覺的真的很容易使用。但是靠 command-line 模式,覺得也不是挺方便。後來發現它的讚助者 Mozilla 在 FireFox 有個 add-on 元件提供一個 GUI 的管理程式。讓你很容易可以管理SQLite 的資料庫,可讓建立 Database 與 Table 更輕鬆。


下面是 SQLite 的 ADO.NET 2.0 Provider 的參考網站 http://sqlite.phxsoftware.com/。先記錄此網站。等待以後在 Visaul Express 2008 測試是否可以使用。

2009年1月13日

VB 字串函數

最近用c#在寫 code,已經有一段時間沒有寫 VB Code,最近寫一些 VBA 程式連一些很基本字串函數快要忘光或搞混掉。順便作一下筆記整理整理,以便以後不時之需。

計算字串長度
Len(string)--------->return 整數值

範例
Dim x As String
Dim i As Integer
i = Len("string")---------> i=6

轉換英文字母大小寫
UCase(string)---------->將字串的小寫英文字母轉換成大寫
LCase(string)---------->將字串的大寫英文字母轉換成小寫

範例
UCase("Abc")--------->return ABC
LCase("Abc")--------->return abc

取字串
Left(string,n)-------->從字串左邊取出n個字元
Right(string,n)------->從字串右邊取出n個字元
Mid(string,n)--------->從字串第n個字元開始,取出所有字元
Mid(string,n,m)------->從字串第n個字元開始,取出m個字元

範例
Left("123456",3)-------->return 123
Right("123456")--------->return 456
Mid("123456",3)--------->return 3456
Mid("123456",3,3)------->return 345

字串取代
Replace(字串,被取代的字串, 取代的字串)--------->將字串中某些字串取代成別的字串

範例
Replace("AA_BB_CC","_","-")--------->return "AA-BB-CC"

尋找字串
InStr(字串,尋找的字串)------------>從前面尋找字串第一次出現的位置
InStrRev(字串,尋找的字串)-------->從後面尋找字串第一次出現的位置

範例
InStr("AA_BB_CC", "_")-------->return 3
InStrRev("AA_BB_CC", "_")---->return 6

反轉字串
StrReverse(字串)------------->將字串反轉

範例
StrReverse("AA_BB_CC")------>return CC_BB_AA

產生空白字串
Space(n)---------->產生n個字元空白字串

範例
x= "AA" + Space(2) + "BB"--------->return AA BB