2009年12月6日 星期日

越來越忙

到公司快兩個月了
工作越來越忙 不過我還是一知半解
大絕招還是叫救命
這樣不行阿
話說回來 現在又來了三位新人
我這下不能以新人自居了
要更加專業才行喔

2009年11月21日 星期六

工作滿一個月了

工作不知不覺過了一個月
大致上工作算是很順利
可是我有點擔心
到現在還是沒交到好朋友
這是常態嗎??
一個人在宿舍有點空虛就會胡思亂想
明天去上個假日班
跨跨機驗驗卡度過無聊的日子吧

2009年11月3日 星期二

熱血

從新公司報到至今 己經在第四周了
看樣子還是不能完全融入阿
而且工作也還不能獨立作業
還有系統也不能用
心情弄的很差

今天晚上看了熱血的電影
沒錯 就算不知道險阻能不能突破
也要用熱血去完成
我是為彌補心中缺憾而來
努力達到沒遺憾吧

2009年10月21日 星期三

想要寫提昇工作效率的程式

在工作中看到wafer的測試資料是xml的檔案
想要寫個介面方便我修改資料
其實xml應該有更好的使用方式
可是我還是只會用最原始的寫法
將它當成原始的文字檔來處理

2009年10月16日 星期五

重新塑造新人格

今天和老闆聊了一下天
聊到工作態度還有要求
有很多地方跟我原本的個性有抵觸阿
看樣子我想完成我的熱情
還是得有所犧牲
當初因為被lay off非常不甘心
我一定要在原地爬起來
現在有機會了
我必須努力才行
要轉變個性我也認了
變成超強的工作機器吧

2009年10月13日 星期二

上工第二天

昨天打電話給爸爸媽媽
抱怨以後一定會很慘
還有現在沒人理我

今天第2天上工 比較有事情做了
老闆請了一位工程師教我基本的系統使用
京元的系統比矽品的完備多了
可是測的東西似乎以國內產品比較多
以前的主要是國外產品

老闆還有給我操作手冊
還有測試界的聖經==我在spil看了一個月 所以馬上唉出聲來了
在這裡似乎上班時間是隨自己意思阿
下班也嘿....嘿...看客戶摟
反正由助理統一回報==+
不過這也證明拿不到加班費拉

今天有跟不少工程師聊天
得到八卦 ==不少人想離開了
有一位還想去我的前公司面試
有可能是我的缺==
看地點和名稱.........我想應該是吧




持續努力

2009年10月12日 星期一

初步看完的心得

大略看完這兩本眾人推荐的perl好書
我只能說大家的評價真的太中肯了
如果一開始就看創始者寫的駱駝書
八成會看不懂 文章風格充滿作者的獨特構思
講述這種語言 還事先按步就班先騎駱馬
先將駱駝當故事書
步步加強對這語言的熟悉性吧

第1天上班

暌違一年 現在又重新當新人了
新的公司文化和工作方式真的都不一樣阿
真是長了見識
新人報到時 有自己學校同系的學妹
另外就是認識好多工工人 這些人都是生管工程師
連我的室友也是工工系的學弟

和主管去廁所 居然沒有擦手的紙巾==
close-down太兇了
網路沒有騙人

同事和主管對我不錯
可是似乎沒太多時間理我
一來我的東西還不齊
二來大家還有工作
所以我看了半天的書
不過我還室友問了一些前公司沒有的處理方式
例如這邊會將travel card用折一角代表hold
折兩角代表已通知客戶
對折代表release
還有不同顏色的防塵袋代表緊急性
黃色特急件
藍色急件
紅色普通件
還有輪班工程師有自己的一個課
這些都跟前公司不一樣阿
後來想想 這是因為前公司專長是封裝
測試真的是小部門
現在待的是專業的測試廠
所以會更制度化
今天主管有稍微上個簡單的課
介紹基本流程
大致跟前公司差不多
但有些微差異還有用語也略有不同
還有他們的系統似乎也比前公司強還有完備

最後我仔細看了公司的工作文化
有一點很糟阿
似乎大家都待到很晚
工作雖然看起來不是非常忙
似乎都是穩穩的做
還可以休息去串個門子
可是待到8.9點似乎是常態
以前的公司除非是特殊狀況
可能要忙到半夜
但是大致上都準時 頂多晚一小時或是換班
看樣子我以前真的是過太爽了

2009年10月9日 星期五

小小世界

今天去竹南拿宿舍鑰匙
看看房間規格確定我需要帶什麼去宿舍

搭車到新竹後租車騎到竹南
因為早到了
所以順道在附近逛了一下
基本上到市區還算方便
從公司到新竹就像從豐原到台中一樣
新竹風有點大
難怪叫作風城

要回家途中看到以前的同事
他跟我同時間被lay off
不過人家是高級工程師
現在待在聯測
我們聊了不少
還有八卦一下 = =

今天行程滿檔
做了好多事
一早跑郵局領提款卡
還有到英醫院拿體檢報告
晚上還跑郵務局領包裹
所有的事情全部都去破壞人家的流程
因為我趕著要阿

體檢結果
駝背 血色素過低 膽固醇過高

最後我還是買了

新工作找到了
犒賞自己一下
我出手買了perl的駱駝和駱馬
還是紙本好
盯著螢幕看電子書實在很累
希望在這兩本書的加持下
能夠突飛猛進

2009年10月2日 星期五

12日就要上工拉

京元的任用確定過了
工作是產品工程師
理論上應該跟我在矽品時
工作的環境內容差不多
不過這次是常日班的

上了之後新的煩惱來了
我...............行不行阿

記得當初很想朝這個名稱的工程師努力
那時還很認真的在被解僱後
順道的學vba
甚至花了小小的時間認識perl
雖然不見得用得到
而且程度應該很鳥

總之不要想太多先幹看看再說
先準備好上工要用的東西
還有永遠自強不息的心

2009年10月1日 星期四

終於有公司要了

去面試的時候課長有禮遇我
面試的感覺很好
他讓我迷你多益考了兩次
一次28再考一次變41==
這樣還有準度可言嗎 所以我以前考不好是運氣太差

前天有打電話來說有上
但是薪水好少
不過我也沒本錢再縮下去了
準備等人資的offer正式下來
認真上工吧

2009年9月25日 星期五

久違半個月的面試

因為隨手亂投到了一間做自動化控制 又小又新的公司

來面試的課長超級年輕68年次的
工作要求主要是要會VC++
物件之類的東東
跟我所學及第一份工作完全是不一樣的
原以為會有些考試
不過似乎只有稍微聊聊而已
工作有可能要出差 還有問會不會開車
有可能到大陸出差

昨天 應該是前天晚上
大學同學勳哥除然傳MSN來
聊到他現在在南科做tsmc的擴散eq
看樣子我要多加油阿

2009年9月21日 星期一

文件管理系統

最近一直在excel home閒逛
看到了人家分享的文件管理系統
想起我之前在研究treeview物件
人家用一般的vba功能就寫出來了
我來試著改成中文版
還有一並用treeview物件寫同樣功能來看一下吧

浪費了一個假日

這次的假日 突然想把系統升級成windows7
結果因為windows7剛出沒多久
破解技術還很不完全 很多產品序號都被鎖了
看到那個使用盜版的訊息實在很不爽
最後還是換回xp
但是心有不甘 所以下載了 window 7 remix這種佈景主題
至少將畫面升成像windows7
大致上很順利
可是歡迎畫面卻是亂碼 所以還是被我打槍
結果還是要重灌
等我全部弄的跟之前一樣的時候
一天已經過去了

2009年9月20日 星期日

NO_PUBKEY? for apt-get update

重灌ubuntu 每次都會遇到匯入金鑰的問題
有時是親自到/etc/apt/source.list去處理
有時用別人寫好的腳本
既然常要處理
把作法記下來
==================
加入 launchpad 或者其他的軟體來源(/etc/apt/source.list)後要是沒匯入金鑰,使用 apt-get update 手動更新時就會有以下的錯誤訊息出現。

jonny@ubuntu:~$ sudo apt-get update
...
...
W: GPG error: http://ppa.launchpad.net hardy Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY 6AF0E1940624A220
W: 您也許得執行 apt-get update 以修正這些問題


下載公鑰

jonny@ubuntu:~$ sudo gpg --keyserver keyserver.ubuntu.com --recv 0624A220
# 0624A220 為 key 的後八碼。


匯入公鑰

jonny@ubuntu:~$ sudo gpg --export --armor 0624A220 | sudo apt-key add -



之後再怎麼更新都 ok 啦。

2009年9月19日 星期六

檔案分類

今天在excel home看到了人家問 關於檔案歸類的問題
她的寫法其實是用很傳統的迴圈處理方式去判斷新增資料夾還有分類檔案處理
Sub MoveFiles()
'
' MoveFiles Macro
Dim i As Integer
Dim s As String
Dim FilPath As String
Dim aaa As String
Dim bbb As String
Dim MyFile As Object
With Sheet1
For i = 1 To .Range("a65536").End(xlUp).Row
FilPath = ThisWorkbook.Path & "\" & .Cells(i, 1).Text & ".doc"
aaa = ThisWorkbook.Path & "\" & Sheet1.Range("b" & i).Value & "\" & .Cells(i, 1).Text & ".doc"
bbb = ThisWorkbook.Path & "\" & Sheet1.Range("b" & i).Value & ""
If Dir(bbb, vbDirectory) <> "" Then
If Dir(FilPath) <> "" Then
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.MoveFile FilPath, aaa
Set MyFile = Nothing
Else
s = s & Chr(10) & .Cells(i, 1).Text
End If
Else
MkDir (bbb)
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.MoveFile FilPath, aaa
Set MyFile = Nothing
End If
Next
End With
If s <> "" Then
MsgBox s & Chr(10) & "無以上文件!"
End If
End Sub
====================
上面的做法是將檔名寫在a列 分類寫在b類
最後用迴圈分類 移動檔案跟產生資料夾
他還用了FileSystemObject
不過只拿來做資料的移動
有點殺雞用牛刀的感覺
之後有比較厲害的人
寫了下面的語法
Sub MoveFiles()
On Error Resume Next
For Each c In Range([a1], [a65536].End(3))
Name ThisWorkbook.Path & "\" & c.Value & ".doc" As ThisWorkbook.Path & "\" & c(1, 2).Value & "\" & c.Value & ".doc"
Next
End Sub
==================================
這個就高明很多
利用Name陳述式(重新命名一個檔案、目錄、或檔案夾)
Name陳述式可以做到更改檔名,並將檔案搬移至另一個目錄中語法如下
Name OldName As NewName
不過這個做法有個條件
就是預定要移入的資料夾必須先存在

2009年9月18日 星期五

匯入資料

今天耗在excel home好長的時間
記得之前寫過匯入資料的程式
在論壇中還是有很多人問類似的問題
本來想試著幫忙寫寫看
結果版主板友回得很快
而且程式碼又簡潔又迅速
相對的我寫的就差多了
Sub DAORU()
Dim s() As String, f As String, i As Long, b() As Byte
f = Dir(ThisWorkbook.Path & "\*.TXT")
While f > ""
Open ThisWorkbook.Path & "\" & f For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
[a1].Offset(, i).Resize(UBound(s) + 1) = WorksheetFunction.Transpose(s)
i = i + 1
f = Dir()
Wend
MsgBox "OK"
End Sub
上面這個副程式 可以將所在資料夾內的文件檔分別輸出在各列
Sub m()
Dim f As String, s() As String, i As Long, j As Long, arr(10000, 255)
f = Dir(ThisWorkbook.Path & "\*.txt")
While f > ""
Open ThisWorkbook.Path & "\" & f For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
arr(0, j) = Split(f, ".")(0)
For i = 0 To UBound(s)
arr(i + 1, j) = Split(s(i), vbTab)(0)
arr(i + 1, j + 1) = Split(s(i), vbTab)(1)
Next
j = j + 2
f = Dir
Wend
[a1].Resize(10001, j + 2) = arr
End Sub
另外這個是進階版 每個文件內每行有兩筆資料
不但在第一行輸出檔案名稱 也成功的把每筆資料對應的輸出到儲存格
從這次看到的程式碼裡
我學到除了用input,line input加上迴圈來處理讀檔外
其實有更快的方式讀檔
從網路上找到以下的讀檔方式
這次使用的程式也是用這種方法
--------------------------------------------------------------------------------

使用 TextBox 顯示文字檔內容,通常對應設計的程式片段是
 

txtContent.Text = "" '清除內容

Open sFile$ For Input As #1 '開啟文字檔

While Not EOF(1) '未到檔案尾端

Line Input #1, a$ '逐行讀取

txtContent.Text = txtContent.Text & a$ & vbCrLf '逐行加入txtContent及換行符號

Wend '反覆執行

Close #1 '關閉檔案


若是將 TextBox(txtContent) 顯示內容 的處理敘述略作變更,將可加快處理速度

 

txtContent.Text = "" '清除內容

Open sFile$ For Input As #1 '開啟文字檔

While Not EOF(1) '未到檔案尾端

Line Input #1, a$ '逐行讀取

txtContent.SelText = a$ & vbCrLf '逐行加入txtContent及換行符號

Wend '反覆執行

Close #1 '關閉檔案


其中的道理是:
因為 txtContent.Text = txtContent.Text & a$ & vbCrLf 會安排一個記憶體位置儲存等式右側的運算結果,再清除 txtContent 原有內容,以此一運算結果取代之,其間包含許多的動作;而 txtContent.SelText = a$ & vbCrLf 是直接把右側的運算結果放入 txtContent 裡,少了很多不必要的的動作,所以比較快。

此外,以單一敘述一次讀入整個檔案更可加快完成

 

txtContent.Text = "" '清除內容

Open sFile$ For Input As #1 '開啟文字檔

txtContent.Text = StrConv(InputB(LOF(F), #1), vbUnicode) '一次讀入整個檔案

Close #1 '關閉檔案

2009年9月17日 星期四

沉迷於聊天室

沒想到我居然做了這種事
居然花很多時間在聊天室上
在那種只有安安幾歲多重 或是age/sex/location
的地方耗一整天
我真是太無聊了

弟弟的電腦壞了
要不要貢獻一點資金呢

2009年9月14日 星期一

treeview參考資料

这里我要向您推荐一组高级的ActiveX控件—Common家族。这一家子共有八个兄弟。他们习性相似,却各有不同的本领。利用他们可以为您的应用程序添加漂亮的界面,强大实用的功能。比如,带有图标的快捷工具条、进度指示器等。而这并不复杂,您只需看完下文,一切立即搞定。

一、图像资料中心----ImageList

  ImageList控件是一个向其它控件提供图像的资料中心,它包含了一组ListImage对象即一组图像的集合,该集合中的每个对象都可以通过其索引或关键字被其他控件所引用,但控件本身并不能单独使用。
ImageList控件可以和任何具有Picture属性的控件一起使用,如PictureBox、ListView、ToolBar、TabStrip和TreeView等控件。
  ImageList控件的主要属性有ImageHeight属性,ImageWidth属性,MaskColor属性和UseMaskColor属性。
ImageHeight属性和ImageWidth属性
  这两个属性返回或设置ImageList控件中ListImage对象的高度和宽度。可以在添加第一个ListImage对象之前预先设置ImageHeight和ImageWidth属性。如果没有预先设置,则第一个添加到集合中的ListImage对象保持原图大小,其后添加的所有ListImage对象都被强制与第一个ListImage对象大小相同。

MaskColor属性
  该属性返回或设置在ImageList控件的图形操作中透明的颜色。具体地讲,就是设置一种颜色,使ImageList控件的图形中的此种颜色变为透明。

UseMaskColor属性
  该属性决定是否能在ImageList控件中使用MaskColor属性。

Add方法
  要给ImageList控件添加图像,在设计时,可以用“ImageList控件属性”对话框图1;在运行时,可以用Add方法。
Add方法的语法如下:
  Add(index,key,picture)
  Index是可选的参数。它是一个整数,指定了要插入的ListImage对象的位置。如果没有指定index,ListImage对象将被添加到ListImages集合的末尾。
  Key也是可选的参数。它是用来标识ListImage对象的唯一字符串。ImageList控件用该值来检索某个特定的ListImage对象。
  Picture是必需的参数。它指定了欲添加到集合中的图片。
  Add方法的具体用法如下例:
  Dim imgX As ListImage
  Set imgX=ImageList1.ListImages.Add_
  (,,LoadPicture("filename"))
  Set imgX=ImageList1.ListImages.Add(,,Picture1.Picture)

Overlay方法
  除了存储Picture对象外,ImageList控件还可以在把图像赋值给其它控件前,对它们执行图形操作。例如,Overlay方法可以从两个不同的图像出发创建一个复合图像。该方法从一个ListImages集合绘制一幅图像,叠加在另一幅上面,并返回结果。它的语法如下:
  Overlay(index1,index2)
  index1参数是必需的。它是一个整数(Index属性)或唯一的字符串(Key属性),指定了将被叠加的图像。
  index2参数也是必需的。它指定了将被绘制在由index1指定的对象上的图像。该图像中与MaskColor属性相匹配的颜色被设置成透明的。如果没有任何颜色与之匹配,该图像将不透明地绘制在其它图像上。

  下面,我们介绍一个具体的例子。
  先在窗体上放置一个ImageList控件和一个Image框,然后添加如下代码:

Private Sub Form_Load()
  Dim imgX As ListImage
  '加载位图
  SetimgX=ImageList1.ListImages.Add(,"No",_
  LoadPicture("graphics\bitmaps\assorted\Intl_No.bmp"))
  SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\smokes.bmp"))
  SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\beany.bmp"))
  ScaleMode=vbPixels
  '设置MaskColor属性
  ImageList1.MaskColor=vbGreen
  '设置窗体的BackColor为白色
  Form1.BackColor=vbWhite
 End Sub

Private Sub Form_Click()
  '静态变量,用于图像计数。
  Static int Count As Integer
  '如果变量超过ListImages.Count的值则重置变量为2
  If intCount>ImageList1.ListImages.Count
    Or intCount<1 Then
    intCount=2
  End If
  '把ListImage(1)叠加在ListImages2-3之上
  Image1.Picture=ImageList1.Overlay(intCount,1)
  intCount=intCount+1
  '创建变量来保存ImageList.ImageWidth的值
  Dim intW
  intW=ImageList1.ImageWidth
  '为了引用方便把图像绘制到窗体上,
  '用ImageWidth值来间隔图像
  ImageList1.ListImages(1).DrawForm1.hDC,0,0,imlNormal
  ImageList1.ListImages(2).DrawForm1.hDC,0,intW,imlNormal
  ImageList1.ListImages(3).DrawForm1.hDC,0,intW*2,imlNormal
 End Sub

  在本例中,图片Intl_No.bmp的背景色原来是绿色,由于MaskColor也设置为绿色,所以图片的背景色变为了透明。
  为了节约系统资源,可以把一个或多个ImageList控件与其它的Windows95公共控件关联。这些公共控件包括ListView、ToolBar、TabStrip和TreeView控件。为了关联在一起,对于ListView控件来说,必须将Icons和SmallIcons属性设置为ImageList控件;对于TreeView、TabStrip和Toolbar控件来说,必须将ImageList属性设置为ImageList控件。
  一旦ImageList与某个控件相关联,就可以在过程中用Index属性或Key属性的值来引用ListImage对象了。

二、多彩工具条----Toolbar

  在大多数应用程序中都有工具栏。工具栏包含有一些按钮,这些按钮与应用程序菜单中各项的按钮对应,为用户访问应用程序的最常用功能和命令提供了图形界面。在VB5.0中,可以用Toolbar控件来实现这一功能。
  Toolbar控件包含一个按钮(Button对象)集合,可以通过将Button对象添加到Buttons集合中的方法来创建工具栏。在设计时可用Toolbar控件的属性页中的“按钮”选项卡上的“插入按钮”和“删除按钮”来插入和删除按钮,并设置按钮的索引、标题、关键字、样式、标记、工具提示文本和图像属性;当然,也可以在运行时用语句指定这些属性。

样式(Style)属性
  该属性决定Toolbar控件中每个按钮的外观和状态。
  使用时请注意必须将具有ButtonGroup样式的按钮分组。为区分组,应该将所有具有相同样式(ButtonGroup)的Button对象放置在两个有分隔符样式的Button对象之间。
  Button对象为占位符样式时,可以将其它的控件放置在工具栏上。例如,为了在设计时将下拉组合框放在工具栏上,可添加一个具有占位符样式的Button对象,并把它调整到ComboBox控件的大小。然后将ComboBox放置在占位符处。
  每个Button对象都可有文本或图像,或者兼而有之。图像是由相关联的ImageList控件提供的,可以用Image属性为每个Button对象添加一幅图像;文本则是通过设置每个按钮的Caption属性来显示的。
ImageList属性
  该属性返回或设置与控件相关的ImageList控件。控件要使用该属性,必须先将ImageList控件放在窗体上,然后在设计时可在相关控件的“属性页”对话框中设置ImageList属性。在运行时可以用以下语句来设置:
  Set ToolBar1.ImageList=ImageList1

ShowTips属性
  该属性决定是否允许显示每个按钮的帮助提示。

Wrappable属性
  该属性决定当重新设置窗口的大小时,Toolbar控件按钮是否自动换行。

Customize方法
  该方法调用“自定义工具栏”对话框,该对话框允许用户在Toolbar控件上重新安排或隐藏Button对象。
  当Toolbar控件的AllowCustomize属性为True时,双击工具栏后就会调用Customize方法显示出对话框。
我们可以限制用户自定义工具栏的权限。例如,下列代码仅在用户给出密码字时才允许自定义工具栏:

Private Sub Command1_Click()
  If InputBox("Password:")="WYT" Then
    Toolbar1.Customize
  '调用Customize方法。
  End If
 End Sub

SaveToolbar方法和RestoreToolbar方法
  这两个方法的作用分别是把用Toolbar控件创建的工具栏的状态保存在注册表中和将工具栏恢复到原先保存的状态。它们的语法为:
  Toolbar1.SaveToolbar(keyAsString,subkeyAsString,valueAsString)
  Toolbar1.RestoreToolbar(keyAsString,subkeyAsString,valueAsString)
  这三个参数都是必选参数。其中key是一个字符串表达式,指定了保存的信息在注册表中的关键字;subkey也是一个字符串表达式,指定了在注册表中key参数下的一个子键;value同样是一个字符串表达式,指定了保存在subkey中的Toolbar信息。
  下列代码将Toolbar1的状态信息保存在HKEY_USERS\.DEFAULT关键字下的WYT子关键字中:
  Toolbar1.SaveToolbar"","WYT","Toolbar1"
  如果指定的子关键字不存在,该语句将在注册表中创建新的子关键字。因为在自定义工具栏之后要发生Toolbar控件的Change事件,所以在大多数情况下,可将上述代码放置在工具栏的Change事件中。
下列代码为当前用户恢复Toolbar控件的设置值,不过要确定先前已经用SaveToolbar方法将它们保存起来了。
  Toolbar1.RestoreToolbar"","WYT","Toolbar1"
注意当使用RestoreToolbar方法时,任何不包含ImageListListImage对象的工具栏按钮都将消失。用户可再次使用自定义工具栏对话框上的复位按钮使它们可见。
  为了在运行时添加和删除按钮,可以用Add方法,Clear方法和Remove方法。

Add方法
  该方法将Button对象添加到Buttons集合中,并返回对新创建对象的引用。
  下面给出一个简单的程序代码,具体介绍一下如何在运行中添加按钮和图像以及对Click事件作出反应。
Private SubForm1_Load()
  '为ImageList创建对象变量
  Dim imgX As ListImage
  '将图片加载到ImageList控件中
  Set imgX=ImageList1.ListImages.Add(,"open",_
  LoadPicture("Graphics\bitmaps\tlbr_w95\open.bmp"))
  Set imgX=ImageList1.ListImages.Add(,"save",_LoadPicture("Graphics\bitmaps\tlbr_w95\save.bmp"))
  Toolbar1.ImageList=ImageList1
  '为Button创建对象变量
  Dim btnX As Button
  '以下代码是用Add方法将按钮对象添加到Buttons集合中。创建每个按钮后,设置Description和

ToolTipText属性。
  Toolbar1.Buttons.Add,,,tbrSeparator
  Set btnX=Toolbar1.Buttons.Add_(,"open",,tbrDefault,"open")
  btnX.ToolTipText="OpenFile"
  btnX.Description=btnX.ToolTipText
  Set btnX=Toolbar1.Buttons.Add_(,"save",,tbrDefault,"save")
  btnX.ToolTipText="SaveFile"
  btnX.Description=btnX.ToolTipText
  Set btnX=Toolbar1.Buttons.Add(,,,tbrSeparator)
 End Sub

Private Sub toolbar1_ButtonClick(ByValButton As Button)
  '用Key属性和SelectCase语句来指定一个动作。
  Select Case Button.Key
   Case Is="open"'打开文件。
   MsgBox"Addcodetoopenfilehere!"
   Case Is="save"'保存文件。
   MsgBox"Addcodetosavefilehere!"
  End Select
 End Sub

三、精美卡片盒---Tabsterip

  TabStrip控件象笔记本的书签或者一组文件夹的标签,通过使用TabStrip控件,可以在应用程序中为某个窗口或者对话框的相同区域定义多个页面,如图。其具体使用方法与Toolbar控件相似,限于篇幅,在这里就不再多说了。

四、实时状态条----StatusBar

  StatusBar控件代表性地显示有关在窗体上查看的对象、对象组件的信息或关系到对象操作的上下文的信息。StatusBar控件与其它控件如Toolbar控件一起,提供建立界面的工具,该界面既经济又含有丰富的信息。
  StatusBar控件提供了一个窗体,通过这一窗体,应用程序能显示各种状态数据。每个窗体由窗格(Panel对象)组成,每一个Panel对象能包含文本或图片。StatusBar最多能被分成16个Panel对象,这些对象组成Panels集合。
  在设计时,可以通过StatusBar控件的属性页的“窗格”选项卡来添加和删除窗格并设置每个窗格的各种属性。在这里,我们对其中比较重要的属性作一些介绍。
斜面(Belvel)属性
  该属性返回或设置窗格的斜面样式。

自动调整大小(AutoSize)属性
  该属性在调整了StatusBar控件的大小以后,返回或设置窗格对象宽度的值。
含有目录样式的窗格优先于含有弹回样式的窗格。这就意味着如果含有目录样式的窗格需要空间,则将缩短弹回样式的窗格。
  宽度(Width)属性和最小宽度(MinWidth)属性
宽度属性返回或设置窗格的当前宽度,最小宽度属性则返回或设置窗格的最小宽度。当AutoSize属性被设置为目录或弹回时,使用MinWidth属性可以防止面板因自动调整大小被调整到太小的宽度。当AutoSize属性被设置为None时,MinWidth属性总是被设定为与Width属性相同的值。
  下例用StatusBar控件的缺省面板显示当前时间。设置MinWidth属性以便在单击面板时清除时间但保留面板的大小不变。

Private Sub Form_Load()
  StatusBar1.Panels(1).AutoSize=sbrContents
  StatusBar1.Panels(1).Text="NowTimeis:"&Str(Time)
  StatusBar1.Panels(1).MinWidth=StatusBar1.Panels(1).Width
  '将最小宽度设置为面板的当前大小。
 End Sub

Private Sub StatusBar1_PanelClick(ByValPanel As ComctlLib.Panel)
  '清除时间但保持大小在最小宽度。
  Panel.Text="NowTimeis:"
 End Sub

StatusBar控件的重要属性有Style属性和SimpleText属性。

Style属性
  该属性返回或设置StatusBar控件的样式。当它为sbrNormal时,StatusBar控件显示所有的Panel对象;当它为sbrSimple时,控件仅显示一个大面板。当设置Style属性为sbrSimple时,用SimpleText属性设置要显示的字符串的文本。
  注意当设置Style属性为Simple时,StatusBar控件显示大面板(控件的宽度),该面板不能通过面板集合来控制。

SimpleText属性
  该属性是当StatusBar控件的Style属性为Simple时,返回或设置显示文本。
为了在运行中添加和删除窗格,可以用Add方法,Clear方法和Remove方法。其中Clear方法和Remove方法与前面讲的控件一样,这里不再赘述。(图5)

Add方法
  该方法将Panel对象添加到Panels集合中并返回对新建立的Panel对象的引用。它的语法如下:
StatusBar1.Add(index,key,text,style,picture)

  下面的代码将两个Panel对象添加到具有Normal样式的StatusBar控件中,然后添加字符串(用SimpleText属性),该字符串在设置Style属性为Simple时才出现。该控件在Simple和Normal样式之间切换。

Private Sub Form_Load()
  Dim I As Integer
  For I=1 to 2
    StatusBar1.Panels.Add
    '添加两个Panel对象。
    Next I
  With StatusBar1.Panels.Item(1).Style=sbrNum'Number锁定.Item(2).Style=sbrCaps'Caps锁定
.Item(3).Style=sbrScrl'Scroll锁定
  End With
 End Sub

Private Sub StatusBar1_Click()
  '在简单和正常样式之间切换。
  With StatusBar1
    If .Style=0 Then
    '当StatusBar是用Simple样式时,显示该文本。
      .SimpleText="DateandTime:"&Now.Style=sbrSimple'Simple样式。
     Else
      .Style=sbrNormal'Normal样式。
    End If
  End With
 End Sub

五、资源管理树---TreeView

  TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录或能被有效地分层显示的其它各种信息。类似于Win95的资源管理器的界面就可以用该控件来实现。
  在设计时可以通过TreeView控件的属性页来指定控件的部分属性。在TreeView控件的属性中,比较重要的有如下属性:

样式(Style)属性
  该属性返回或设置Node对象的图形类型(图像、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本类型。

行样式(LineStyle)属性
  这个属性返回或设置在Node对象之间显示的线的样式。
  注意:若Style属性设置为包含直线的值,则LineStyle属性就确定了直线的外观。如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。

Sort属性
  该属性返回或设置一布尔值,此值确定Node对象的子节点和TreeView控件的根层节点是否按字母顺序排序。
  Sorted属性有两种用法:第一,在TreeView控件的根(顶)层排列Node对象;第二,对任何单个Node对象的立即子节点(即第一层子接点)排序。例如,下面的代码是对TreeView控件的根节点排序:
TreeView1.Sorted=True。而代码Node1.Sorted=True则是对当前选中的Node对象的立即子节点排序。

  注意:当设置Sorted属性为True时,仅对当前Nodes集合排序;在TreeView控件中添加新的Node对象时,必须再次设置Sorted属性为True,以便对添加的Node对象排序。

FullPath属性
  这个属性返回在TreeView控件中引用的Node对象的完整限定路径。通常完整限定路径是引用的Node对象的Text属性中的文本与它的所有前辈的Text属性值的连接。

Root、Parent、Child、FirstSibling、LastSibling、Previous和Next属性
  这些属性分别返回对Node对象的根节点,父节点,子节点,同层的第一个节点和最后一个节点,同层的前一个相邻节点和后一个相邻节点的引用。
  同前面所讲的控件一样,TreeView控件也使用由ImageList属性指定的ImageList控件,来存储显示于Node对象的位图和图标。任何时刻,TreeView控件只能使用一个ImageList。这意味着,当TreeView控件的Style属性被设置成显示图像的样式时,TreeView控件中每一项的旁边都有一个同样大小的图像。为了使被选中的Node对象显示不同的图像,需要使用SelectedImage属性。

SelectedImage属性
  该属性返回或设置当Node对象被选中时显示的图像。如果它为Null,则使用由ImageList属性指定的图像的屏蔽图像。
  TreeView控件与前几个控件一样,用Add方法,Clear方法和Remove方法来添加Node对象,但它不能在设计时利用属性页来进行添加和删除。
  TreeView控件的Clear方法和Remove方法与前面所讲的控件基本一致,这里主要讲Add方法。

Add方法
  该方法在TreeView控件的Nodes集合中添加一个Node对象,语法如下:
TreeView1.Add(relative,relationship,key,text,
image,selectedimage)
  在这些参数中,只有text参数是必需的,其它的参数都是可选的。relative参数是已存在的Node对象的索引号或键值。Relationship指定了Node对象的相对位置,如后表所述。Key是唯一的字符串,可用于检索Node对象。Text是在Node中出现的字符串。Image是在关联的ImageList控件中的图像的索引。Selectedimage是在关联的ImageList控件中的图像的索引,在Node被选中时显示。

CreateDragImage方法
  这个方法使用Node对象的关联图像的抖动形式来创建拖动图像。这种图像一般用于拖放操作。该方法一般用于在拖放操作开始时给DragIcon属性赋值一个图像(图6)。

EnsureVisible方法
  这个方法确保指定的ListItem或Node对象是可视的。如果需要,这个方法可展开Node对象并滚动TreeView控件下列代码创建一棵树,并可以演示拖动操作(由于篇幅所限,这段代码并未真正实现拖动)。

Dim indrag As Boolean
'指示拖放操作的标志。
Dim nodX As Object
'被拖动的项。
Private Sub Form_Load()
'在Imagelist控件中加载一个位图。
Dim imgX As ListImage
Dim BitmapPath As String
BitmapPath="graphics\icons\mail\mail01a.ico"
Set imgX=ImageList1.ListImages.Add_
(,,LoadPicture(BitmapPath))
'初始化TreeView控件并创建几个节点。
TreeView1.ImageList=ImageList1
Dim nodX As Node'创建一棵树。
Set nodX=TreeView1.Nodes.Add(,,,"Parent1",1)
Set nodX=TreeView1.Nodes.Add(,,,"Parent2",1)
Set nodX=TreeView1.Nodes.Add(1,tvwChild,,
"Child1",1)
Set nodX=TreeView1.Nodes.Add(1,tvwChild,,"Child2",1)
Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child3",1)
Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child4",1)
Set nodX=TreeView1.Nodes.Add(3,tvwChild,,"Child5",1)
nodX.EnsureVisible'展开树显示全部节点。
End Sub

Private Sub TreeView1_MouseDown_
(Button As Integer,Shift As Integer,x As Single,y As Single)
Set nodX=TreeView1.SelectedItem
'设置要拖动的项。
End Sub

Private Sub TreeView1_MouseMove(Button As Integer,
Shift As Integer,x As Single,y As Single)
If Button=vbLeftButton Then
'指示拖动操作。
indrag=True
'设置标志为true。
'用CreateDragImage方法设置拖动图标。
TreeView1.DragIcon=TreeView1.SelectedItem.CreateDragImage
TreeView1.DragvbBeginDrag'拖动操作。
End If
End Sub

六、图片式文件夹---ListView

  ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。(图7)
  ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以:
  ▲单击对象触发ColumnClick事件并根据数据项目将项目排序。
  ▲拖动对象的右边框来调整列宽度。
  ▲在报表视图中隐藏ColumnHeader对象。
  ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。

ColumnHeader对象的SubItemIndex属性
  该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。
  在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。

ColumnHeader对象的Add方法
  该方法的使用与前面那些控件基本相似,就不再介绍了。
  ListView1.ColumnHeader.Add(index,key,text,width,alignment)
  ListItem对象是指控件中的一行(不包含标头行)的所有内容。它也可包含文本和图片,但是要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。

ListItem对象的SubItems属性
  返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。
  ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。

ListItem对象的Add方法 
  该方法添加ListItem对象到ListView控件的ListItems集合中并返回对新创建对象的引用。
它的语法如下:

  ListItem1.Add(index,key,text,icon,smallIcon)

ListView控件的View属性
  ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。该属性返回或设置ListView控件中ListItem对象的外观。
  ListView控件的SortOrder,SortKey和Sorted属性
  控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。
SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。
  SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。
  Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。
  下面的代码说明了如何创建ColumnHeaders和ListItem对象,SubItemIndex和SubItem属性的使用方法以及如何排序。

Private Sub Form_load()
 '确保ListView控件的view属性为报表视图。
  ListView1.View=lvwReport
 '添加三列。
  ListView1.ColumnHeaders.Add,"Name","姓名"
  ListView1.ColumnHeaders.Add,"Sex","性别"
  ListView1.ColumnHeaders.Add,"Age","年龄"
  '向控件添加ListItem对象。
  Dim itmX As ListItem
  '添加column1的名称。
  Set itmX=ListView1.ListItems.Add(1,"ZL","张力")
  '使用SubItemIndex将SubItem与正确的ColumnHeader关联。使用关键字("Sex")指定正确的ColumnHeader。
  itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
  '使用ColumnHeader关键字将SubItems字符串与
'正确的ColumnHeader关联。
  itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"
  Set itmX=ListView1.ListItems.Add(1,"LF","李芳")
  itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
  itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"
  Set itmX=ListView1.ListItems.Add(1,"WW","王伟")
  itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
  itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"
 End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)
  Select Case ColumnHeader.Key
   Case "Sex":ListView1.SortKey=1
    ListView1.SortOrder=lvwAscending
    ListView1.Sorted=True
   Case "Age":ListView1.SortKey=2
    ListView1.SortOrder=lvwAscending
    ListView1.Sorted=True
  End Select
 End Sub

七、带刻度滑块---Slider

  Slider控件是一个包含滑块和可选择性刻度标记的窗口,可以通过拖动滑块,用鼠标单击滑块的任意一侧或者使用键盘移动滑块来选择一个值。
  在选择离散数值或某个范围内的一组连续数值时,Slider控件十分有用。例如,无需键入数字,通过将滑块移动到刻度标记处,可以用Slider控件来输入数值。
  Silder控件的大多数基本属性比较简单,我们这里重点介绍一些较有用而又常易忽略的属性。
TickStyle属性
  该属性返回或设置Slider控件上显示的刻度标记的样式。
SelectRange,SelStart和SelLength属性
  Slider控件可以选择某个范围内的数值,这就要用到SelectRange,SelStart和SelLength属性。
  SelectRange属性决定Slider控件是否可以选择一个范围。如果SelectRange属性为True,SelStart为选定范围的起始值,SelLength为选定范围的长度。
  如果SelectRange属性为False,则SelStart属性的设置值与Value属性的设置值相同,SelLength属性无效。
  下列代码允许在按住SHIFT键时,用鼠标拖动或单击Slider控件以选择一个范围。
Private Sub Form_Load()
'设置slider控件的设置值
Slider1.Max=20
End Sub

Private Sub Slider1_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)
If Shift=1 Then '如果按住Shift键,则Slider1.SelectRange=True '打开SelectRange。
Slider1.SelStart=Slider1.Value'设置SelStart数值
Slider1.SelLength=0'设置先前的SelLength(如存在)为0。
End If
End Sub

Private Sub Slider1_MouseUp(Button As Integer,Shift As Integer,x As Single,y As Single)
  if Shift=1 Then
  '如果在一点决定返回上一步,将发生错误。
   On Error Resume Next
   '否则使用SelStart和当前数值设置SelLength。
  Slider1.SelLength=Slider1.Value-Slider1.SelStart
  Else
   Slider1.SelectRange=False'如果松开SHIFT键。
  End If
 End Sub
  在程序中,常用Slider控件来代替键盘输入数字,如下面的例子。
  该例通过Slider控件来显示不同的长度。
Private Sub Form_Load()
 Slider1.Min=0
 Slider1.Max=50
 Slider1.SmallChange=1
 Slider1.LargeChange=10
 Slider1.TickFrequency=5
 End Sub
 Private Sub Slider1_Change()
 Label1.Caption="长度是"&Format(Slider1.Value/5,"#.00")&"厘米"
End Sub

八、ProgressBar控件
  最后,我们来看一下ProgressBar。在应用程序中,当进行一个较长的操作比如安装或载入程序 时,通常会用一个进度指示器来表示进度。在VB中,这个工作可以由ProgressBar控件来完成。ProgressBar控件通过从左到右用一些方块填充矩形来表示一个较长操作的进度。
  在运行时,ProgressBar控件监视着操作完成的进度。控件有一个行程和一个当前位置。行程代表该操作的整个持续时间。当前位置则代表应用程序在完成该操作过程时的进度。其使用方法与Slider控件相似。
好了,到这里我们把Common家族都介绍完了,各位VB同道,若您把他们兄弟几个调教好了,保管您的应用程序界面具有专业水准。如果您在工具箱里找不到他们的话,可以用右键单击工具箱,选择“部件”,然后选中MicrosoftWindowsCommonControls5.0,最后单击“确定”就行了。


引用自http://www.mypcera.com/softxue/vb/new/m57.htm

研究treeview物件2

從excel home中找到不錯的教學
順便把註解修成繁體中文
還有了解語法功能
把所學整理到這裡
====================
Private Sub UserForm_Initialize()
'初始化ImageList物件,添加圖片
Dim img As New ImageList

img.ListImages.Add 1, "book1", LoadPicture(ThisWorkbook.Path & "\book1.gif")
img.ListImages.Add 2, "book2", LoadPicture(ThisWorkbook.Path & "\book2.gif")
img.ListImages.Add 3, "book3", LoadPicture(ThisWorkbook.Path & "\book3.gif")

Set TreeView1.ImageList = img

'設置顯示節點路徑時的分隔符
TreeView1.PathSeparator = "\"
End Sub

Private Sub CommandButton1_Click()
'添加節點
Dim NodeX As Node

TreeView1.Nodes.Clear

Set NodeX = TreeView1.Nodes.Add(, , "課程科目", "課程科目", "book3")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "語文", "語文", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "數學", "數學", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "外語", "外語", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "政治", "政治", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "物理", "物理", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "化學", "化學", "book1")
Set NodeX = TreeView1.Nodes.Add("課程科目", tvwChild, "生物", "生物", "book1")
End Sub

Private Sub CommandButton2_Click()
'設置複選框顯示
TreeView1.CheckBoxes = True
End Sub

Private Sub CommandButton3_Click()
'清除節點
TreeView1.Nodes.Clear
End Sub

Private Sub CommandButton4_Click()
'去掉複選框顯示
TreeView1.CheckBoxes = False
End Sub

Private Sub CommandButton5_Click()
'開啟熱跟蹤功能
TreeView1.HotTracking = True
End Sub

Private Sub CommandButton6_Click()
'編輯節點
TreeView1.StartLabelEdit
End Sub

Private Sub CommandButton7_Click()
'顯示根節點連線
TreeView1.LineStyle = tvwRootLines
End Sub

Private Sub CommandButton8_Click()
'隱藏根節點連線
TreeView1.LineStyle = tvwTreeLines
End Sub

Private Sub CommandButton9_Click()
'移除所選節點
'若為根節點,則將其子節點一並移除
TreeView1.Nodes.Remove TreeView1.SelectedItem.Index
End Sub

Private Sub CommandButton10_Click()
'統計節點個數
Label1.Caption = "TreeView物件中節點對象的個數?:" & TreeView1.Nodes.Count & "個."
End Sub

Private Sub CommandButton11_Click()
'將所選節點變為粗體
TreeView1.SelectedItem.Bold = True
End Sub

Private Sub CommandButton12_Click()
Dim i As Long
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Expanded = True '展開所有節點
Next i
End Sub

Private Sub CommandButton13_Click()
Dim i As Long
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Expanded = False '折疊所有節點
Next i
End Sub

Private Sub OptionButton1_Click()
'節點僅顯示文字
TreeView1.Style = tvwTextOnly
End Sub

Private Sub OptionButton2_Click()
'節點顯示圖像
TreeView1.Style = tvwPictureText
End Sub

Private Sub OptionButton3_Click()
'清除節點
TreeView1.Style = tvwPlusMinusText
End Sub

Private Sub OptionButton4_Click()
'節點間顯示虛線
TreeView1.Style = tvwTreelinesText
End Sub

Private Sub OptionButton5_Click()
'節點顯示恢複正常
TreeView1.Style = tvwTreelinesPlusMinusPictureText
End Sub

Private Sub Treeview1_Nodeclick(ByVal Node As MSComctlLib.Node)
'返回對象路徑
Label3.Caption = Node.FullPath
End Sub

Private Sub Treeview1_NodeCheck(ByVal Node As MSComctlLib.Node)
'複選框事件
Label5.Caption = "當前選擇的節點是:" & TreeView1.SelectedItem.Text
End Sub

研究treeview物件1

離上次發文隔了半個月
去excel home找了些許資料
也下載了別人的範例
有一些可以執行
接下來詳細看看 研究一下物件怎麼用
順便想想可以用這種物件幹嘛

寫程式還是要以目的為出發點
去構築拼湊想要的功能

2009年9月9日 星期三

發呆了好幾天

連續窩在電腦前面好幾天了
重複做著消耗時間沒有意義的事
逛PTT 在facebook種田 看漫畫
除了吃飯睡覺大便
剩下的時間全耗在這上面
開始出現枯燥感
應該換個消耗時間的方式

去念念英文好了

面試京元

前幾天京元某主管打電話來請我去面試
於是昨天去了
四個月前我有去面試過
很可惜的 從此沒有下文
不過我記得面試的人資大哥很帥
這次去還跟他打了聲招呼

這次去面試是課長自己約的
對我有禮遇阿
英文考不好
還讓我考第二次
成績高很多
頓時有種聽牌的感覺
說不定真的有機會肯收

話說回來
福利變好低喔
14個月的年薪都取消了
只剩12個月正常薪水了
三節禮金生日禮金等福利都還要視情況發放


希望公司真的願意用

2009年9月4日 星期五

說不定真的可以把系統改成ubuntu

幫妹妹買了筆電
這下電腦變成一人一台了
也許我能夠真的將linux系統當成主系統
而不用再藉著虛擬機玩那種被閹割般的運算速度所限制的系統了
試著打造個完美的系統吧

大破財

我的存款終於只剩十萬元了
幫妹妹買了筆電花了兩萬多
又幫爸爸付了第四台的錢
現在頭好大阿
不知道我還能撐多久

2009年8月29日 星期六

研究treeview物件

我記得treeview物件好像還蠻常用在選取資料的工作上
而且很適合用在找尋分類資料上很方便
在excel home有看到相關的教學說明關於treeview
接下來就以此為主題做細部學習

excel vba 獲取儲存格資訊的秘技函數

蠻實用又簡潔的語法 節錄下來方便使用
====================================================
一些EXCEL 97的巨集函數已經受人遺忘,因此這些有用的函數就成為密技。這個GET.CELL就是其中之一。

語法

GET.CELL(type_num, reference)

Type_num 指定要獲取儲存格資訊的號碼, 內容如下:

Type_num

1 參照儲存格的絕對位址
2 參照儲存格的列號
3 參照儲存格的欄號
4 類似 TYPE 函數
5 參照位址的內容
6 文字顯示參照位址的公式
7 參照位址的格式,文字顯示
8 文字顯示參照位址的格式
9 傳回儲存格外框左方樣式,數位顯示
10 傳回儲存格外框右方樣式,數位顯示
11 傳回儲存格外框方上樣式,數位顯示
12 如果儲存格被設定 locked傳回 True
15 如果公式處於隱藏狀態傳回 True
16 傳回儲存格寬度
17 以點為單位傳回儲存格高度
18 字型名稱
19 以點為單位傳回字型大小
20 如果儲存格所有或第一個字元為加粗傳回 True
21 如果儲存格所有或第一個字元為斜體傳回 True
22 如果儲存格所有或第一個字元為單底線傳回True
23 如果儲存格所有或第一個字元字型中間加了一條水平線傳回 True
24 傳回儲存格第一個字元色彩數位, 1 至 56。如果設定為自動,傳回 0
25 MS Excel不支援大綱格式
26 MS Excel不支援陰影格式
27 數位顯示手動插入的分頁線設定
28 大綱的列層次
29 大綱的欄層次
30 如果範圍為大綱的摘要列則為 True
31 如果範圍為大綱的摘要欄則為 True
32 顯示活頁簿和工作表名稱
33 如果儲存格格式為多行文字則為 True
34 傳回儲存格外框左方色彩,數位顯示。如果設定為自動,傳回 0
35 傳回儲存格外框右方色彩,數位顯示。如果設定為自動,傳回 0
36 傳回儲存格外框上方色彩,數位顯示。如果設定為自動,傳回 0
37 傳回儲存格外框下方色彩,數位顯示。如果設定為自動,傳回 0
38 傳回儲存格前景陰影色彩,數位顯示。如果設定為自動,傳回 0
39 傳回儲存格背影陰影色彩,數位顯示。如果設定為自動,傳回 0
40 文字顯示儲存格樣式
41 傳回參照地址的原始公式
42 以點為單位傳回使用中視窗左方至儲存格左方水平距離
43 以點為單位傳回使用中視窗上方至儲存格上方垂直距離
44 以點為單位傳回使用中視窗左方至儲存格右方水平距離
45 以點為單位傳回使用中視窗上方至儲存格下方垂直距離
46 如果儲存格有插入批註傳回 True
47 如果儲存格有插入聲音提示傳回 True
48 如果儲存格有插入公式傳回 True
49 如果儲存格是陣列公式的範圍傳回 True
50 傳回儲存格垂直對齊,數位顯示
51 傳回儲存格垂直方向,數位顯示
52 傳回儲存格首碼字元
53 文字顯示傳回儲存格顯示內容
54 傳回儲存格樞紐分析表名稱
55 傳回儲存格在樞紐分析表的位置
56 樞紐分析
57 如果儲存格所有或第一個字元為上標傳回True
58 文字顯示傳回儲存格所有或第一個字元字型樣式
59 傳回儲存格底線樣式,數位顯示
60 如果儲存格所有或第一個字元為下標傳回True
61 樞紐分析
62 顯示活頁簿和工作表名稱
63 傳回儲存格的填滿色彩
64 傳回圖樣前景色彩
65 樞紐分析
66 顯示活頁簿名稱

Reference 一個儲存格或範圍,若省略則為activecell。

相關的討論請訪問http://www.officefans.net/cdb/viewthread.php?tid=16313。

請訪問http://support.microsoft.com/kb/q143466/
下載Excel 97 巨集函數說明文件XLMACR8.HLP。

或訪問http://support.microsoft.com/default.aspx?scid=kb;en-us;128185
下載Macrofun.hlp - the complete Macro Function help file of Microsoft Excel 4.0

2009年8月26日 星期三

啊 這款的幹意

今天去新豐正X科技面試
雖然人資的服務還不錯
等待時間還會準備書給你看
消磨等待的時間
可是面試的時候 主管跟我說的一些條件
也許是我誤會了 他沒這個意思
這麼大一間公司
大學生補助專案的實習這麼雞巴
公司的補貼這麼少
責任制
上了之後一年後還預定要砍一半人
去他奶奶的
這麼大一間公司
也這樣搞
這樣哪裡是企業經營之道
肏..............
最近的企業越來越無良
上次面試做震盪器的那家
薪水只有28K 禮拜六不休息 責任制
更之前的相機工廠28K
也沒這麼過份阿

2009年8月24日 星期一

跑到台中一趟

今天心血來潮帶妹妹去看筆電
在豐原看完覺得不夠
於是殺到台中的nova
好熱
大太陽下騎車
還帶妹妹去吃瑪露蓮還有買了日式三明治
回家時下大雨
雨男不是當假的
淋個落湯雞

後天要去正文科技面試
大後天要去泰林
明天來準備一下面試的東西吧

2009年8月23日 星期日

大富翁3

看樣子給自己定的目標過高了
思路卡死了
而且暑假期間必須跟弟弟妹妹分用電腦
只好暫停這個project

幹!!好熱

這幾天我一直覺得很熱
熱到快受不了了
之前高溫到35 36度時
其他人熱到快要掛掉的時候
我還告訴人家我有在練冰心訣
不怕熱
可是這幾天氣溫最高也才32
我卻熱
超不舒服

by the way
弟弟說明天他要去面試
哈!!他似乎有點緊張阿
給他加油 我也加油~~

2009年8月21日 星期五

又是一股空虛感

半夜睡不著
不過這次跟平常不一樣
以前是心事重重所以很煩睡不著
這次心中卻異常平靜
就是覺得很空虛
而且不知道要幹什麼
不會是孤枕難眠吧!!! (@ @)a

2009年8月17日 星期一

去安碁科技面試

今天去安碁科技面試
好慘
英文考不好 此外
面試這麼久 第一次有人看我的專題
= =
破功了 一時忘記某長度單位
該死 我是學製程的
居然連基基本都不記得
還被刮刮了一下
好難過阿

2009年8月15日 星期六

聽豐管校友團演出

今天回去聽豐管校友團的演出
好多學長還有以前的戰友還有學弟有回去
超多人的啦

打擊是最強的

抓到老鼠

剛剛在看電視吃消夜的時候
那隻可物又貪吃的老鼠
一如往常從窗戶爬進來了
明明已經關了窗戶 塞了水孔
想不到牠太厲害了
光從窗戶那小小的縫隙也能鑽進來
不過牠掉到水盆中
被我聽到了
所以我就趁這個時候關了浴室門
變成了完全密室

一開始是用垃圾桶
可是它移動太迅速了
後來是用米袋
成功的抓到了
只是最後我要放到老鼠籠的時候
牠還是衝出來了........

老鼠是很聰明的生物
繼黏鼠板讓他逃脫後
這次又讓他逃脫
不知道下次要用什麼方法才好

2009年8月13日 星期四

真失敗

今天翠華姊姊打電話來給我
告訴我佳能有在缺人
需不需要幫忙找人引見

哈~~
我早在上周就已經去面試了
其實我也不是沒有認真找阿
無奈人家不用我而已
現在才真的覺得自己是個爛貨

也許該去找個墊檔的工作做
或是換條路走了..........

不知道人家在背後是怎麼說我的

2009年8月6日 星期四

大富翁2

已經實作出骰子 還有控制棋子移動的效果了
超高興的拉!!!!
剛開始卡在如何引用變數
還有也不太懂得什麼是ByVal 還有ByRef
其實這個本來就應該要會的
就是傳址和傳値而已
剩下的功能慢慢再研究
關於讀入讀出未開啟EXCEL文件的方法
目前看起來還是只能用ADO 或是ODBC的方式了
萬一真的不想用
就直接將各項資料當成變數存起來
應該也可以吧


半夜寫程式
聽到樓下老鼠在咬家具的聲音
颱風呼呼的吹
補充到這裡

2009年8月5日 星期三

佳能的面試

前天佳能打電話來要我去面試
是人力就業方案的 就是所謂22K
雖然說公司會補貼一部分薪資
可是感覺上新水還是很低
但這不是重點
今天去面試時迷路了一下
@@明明就在矽品旁邊
真是瞎了眼

還有冷氣好冷 我都快冰起來了
結果簡單的智力測驗都寫不完
其實題目不難的
大多都是比於比值還有二元方程式問題而已
很可惜 沒寫完就是沒寫完

2009年8月2日 星期日

幹~~!!好熱

最近真是太熱拉
聽說新竹還高溫到39度
這兩天連電風扇吹出來的都是熱風
要不斷補充水分 還有不斷洗冷水澡
不知道還要熱幾天
話說回來 這個時間
天氣似乎難得變陰陰的
趕快下雨吧!!!
快缺水了

初步richman想法與可能要解決的問題

天氣熱睡不著 用來思考程式的寫法最好
大致上的流程如下
初始設定 設定棋盤 棋子 各項資料初始化
骰子程式還有控制選單
取得資料庫中棋子的位置
移動
啟動事件
處理事件(將資料存入資料庫)
改變控制權

原本是想直接在原本的程式中用各項常數變數矩陣來做資料存取就好
不過對各副程式或是函式如何引入自己設的變數有點麻煩
後來想到無論是哪個副程式或是函式 都可以直接取用放在工作表中的資料
不如將各種需要的資料存放在工作表中
將工作表當成資料庫
這樣只要專心研究流程控制就好
還可以順便研究一下資料庫處理

初步考量到會遇到的問題有
1.已找到讀取未開啟excel某格內容的方法了(技巧196)還要找寫入的方法
2.控制選單的設計(技巧187)
3.如何讓視窗置中移至棋子附近(技巧169)
4.資料庫(做清單)
就先朝這幾個方面找資料還有研究吧!!

2009年7月30日 星期四

大富翁1

想完成這個遊戲程式
要先想想需要哪些功能
目前想到的是表格
棋子
棋子怎麼移動

看了書之後
找到了建立圖形的方法 如下
Set 矩形 = ActiveSheet.Shapes.AddShape(17, 180, 70, 80, 45)
第一個參數是形狀代號 後面四個參數是座標

至於移動棋子圖形的部分
還沒找到可以直接移動物件的方法
但找到了可以複製物件並傳回新複製物件參照 的方法
然後增減物件的位址
最後用Delete方法殺掉原始物件

目前這樣的想法是可行的
不過有些問題還要解決跟釐清
因為不斷複製新物件還有刪除物件
似乎程式會自動設定物件名稱
例如起始生成笑臉1 可是經過複製 移動新物件
就會生成笑臉2......移動越多 名稱編號越高
初步想到的是 應該可以加一個更改圖形命名的語法
將名稱固定為一個

另外就是移動的部分
IncrementLeft方法 明明就指水平移動
可是我在移動時發現會有誤差
似乎會有向下偏移的跡象
勉強用IncrementTop方法修正回來
可是為什麼會這樣 並不知道原因
還要再查一下

可是我覺得應該有直接移動原始圖形物件的方法

2009年7月28日 星期二

一個小想法

半夜睡覺突然在想
不知道能不能用VBA設計大富翁遊戲來玩
既然有想到
感覺上好像很難
不過我想應該可以做得出來
先慢慢研究看看好了

2009年7月27日 星期一

面試之後

每次面試之後 都換來無限空虛
昨天才再跟面試人員抱怨最近很多公司連感謝函都懶得寄了
這樣說完 今天一收信UMC就寄信來說謝謝再聯絡
也有幾家連面試都沒有 直接再見的 = =

回歸正題 昨天在火車上
我一直覺得其實我的專業考得不錯
不過英文看樣子還是非常不好

根據以前經驗跟現在比對
我真的覺得 一定是我的英文影響非常非常大
這麼多年來 報應果然一一的反撲到我身上了
這一關如果我沒有突破
以後還是會不斷遇到
看樣子需要準備買本書回來K

最近逐漸覺得老是玩玩的態度
似乎不太好
要玩就要玩真的

那這次 就玩真的吧

2009年7月26日 星期日

分點好運給我吧!!

我總覺得今年是運氣很差的一年
過年後被公司火掉了
面個試會被烏秋追殺
往年出門常下雨 今年還是一樣
拖到現在還沒找到工作(我可是個人才阿)
抱怨到此停止

雖然說是這樣 前天靖宜卻告訴我考上了沙鹿的特教師甄試了
之前他打電話要我幫忙送面試資料
因為審查地點離家裡很近
所以隨口就答應他了
沒想到送資料當天 = =
我馬上把她的照片遺失了
害我還得殺到大雅再拿一次照片
不但如此
那天 我見識到了什麼叫做流浪教師
根本不比流浪工程師差麻 = =
現場一堆擁有教師 幼教師 特教師資格的人擠滿了禮堂
光排隊就不知道要排幾個小時
中途還下大雨
我心裡只有一個感想(超.........級...不划算 我只是義務幫忙的阿)

不過 沒想到靖宜居然考上了
真是厲害又強運阿

事後有請我吃飯
不過我比較希望她能分一點好運氣給我

阿!!!又要面試了

睽違已久的面試又要到了
投了這麼多封終於有回應了
之前面試這麼多家
最後都沒有下文
超難過的!!!!!

最近更慘 投了履歷
不是完全沒有回應就是沒有缺
結果這時候德洲儀器居然打電話要我去面試
忽然讓我想起了全世界的第一塊IC
還有以前在課堂上老師介紹的TI-89計算機(根本是台掌上型電腦= =)

在這兩個影像閃過腦袋後
接著是想到這不是美商公司嗎??
我記得外商很多連開我的履歷都沒開
居然要我去面試
不過在台北
想到就有點沒力...........好遠阿

不管怎樣 明天面試加油!!!!

2009年7月22日 星期三

perl的學習中斷了嗎??

之前想說要學perl
因為我覺得正規表示法似乎很好用
而且去面試時 還有主管想找會這種語言的人
不過想要好好學這們語言還是應該要買本聖經來啃
在此之前還是先把VBA弄熟一點還有存錢買書再說

從這個主題第一篇文章發出到現在
其實我還是有找相關的書在看
不過似乎在很多功能上搞不清楚用途
至於在概念方面讀到模組之後就沒辦法在下一步理解了
而且除了拿來當成script語法用之外
我也沒有進一步的用途 最後就跟之前想學MFC的狀況一樣了
卡死 然後放棄

在這段期間其實也不是完全沒有收穫
在做VBA的學習時 也順便的看了一些VB的書
再查資料的這段期間
有些觀念逐漸被打通了

像是物件導向
以前實在是搞不清楚C++所謂的OO概念
為什麼有物件這種東西 其實也就是perl說的模組
有了物件還要繼承
繼承之間又有一大堆細節
C++書上寫的說法實在不好懂
卻在VB的書上找到很好的解釋
這些所謂的物件其實可以當作比較專業一點的程式設計師
設計好對某個主題的應用了 然後再將程式和程式碼的資訊隱藏
讓其他程設人員透過介面使用就好
使用時只要懂得透過屬性 事件 方法
去控制物件
就不需要再重頭設計
"聞道有先後 術業有專攻"
讓擅長某個領域的人去開發那個領域的物件
其他人用寫好的元件就好
所以教基本程設的書 很少說明物件的使用
因為介紹不完嘛 需要某種用途去找合適的類別
不同的應用用不同的類別
所以學完基本的程式語法後 還需要學習如何使用別人所寫的類別

還有在用VB時 雖然很方便
比起VC可以不用在意很多細節
像是變數的宣告
可是當我在寫VB語法時
卻發現C語言有很多語法功能在VB是被隱藏起來
像是指標
常常寫程式寫到一半 發現用指標操控比較方便
但是用VB就必須換一種寫法 雖然我記得VB其實還是有替代指標的方法

在實際用不同語言寫過一些範例之後
逐漸覺得C語言雖然嚴謹複雜
卻也是自由度最高的語言了
擁有最豐富的表達方式
等到VBA更熟悉一點
再回去研究MFC還有perl好了

精神又萎靡掉了

最近不知道為什麼 身體變得好重
一點都提不起精神 連吃飯也只剩下一天一餐就飽了
老媽似乎很擔心 只好跑跑步提振一點精神
消耗一點能量才能吃得下
也許這是抑鬱成疾的毛病吧
說起來 最近常有些心態怪怪的想法
應該是因為老是縮在家裡造成的後遺症
不過我真的好煩
已經足六個月沒工作了
去應徵工作依然沒有下文
下一步路該怎麼走 我一點想法也沒有
仔細想想 我這種個性越來越像
老媽口中的老爸 缺少行動的勇氣
雖然不是什麼非常不好的個性
不過一直駐足不前 死守的僅有的資源
做最小的消耗
缺乏放手一搏的勇氣
在消磨的日子裡 不斷的放眼前的機會流失
明明知道這樣子下去是不行的
不過我還是不斷的在消耗自己的人生

其實我有好多想做的事
但我卻拿不起勇氣義無反顧的投入
越長大越懦弱 越來越輸不起
於是很多東西很多事
都在稍微接觸後便放棄而沒有認真投入
說穿了就是我捨不得做投資
因為我不知道未來下一步這樣走會有什麼結果
結局會是好的嗎
萬一我的決定是錯的呢??
一這樣想 我便遲遲無法跨出去
不知道什麼時候 我能突破眼前這一步
重新再站起來
或是找到讓我前進的動力


加油阿~~~!!加油

2009年7月17日 星期五

有點突破了

在買了博碩文化引進的office即戰力系列 "經理人提升工作自動化效率的excel VBA活用技巧"這本書後,當中有很多實用的技巧和程式碼 一般的書大多以介紹語法和觀念為主 常常有一堆不知道用途的函式 ,屬性或是方法 這個系列以實用為出發 也很淺顯易懂
需要一個"active按鈕"啟動click事件
檔案系統控制
啟動檔案IO功能
字串處理
使用excel儲存格

這四個項目的要求都達到了
出乎意料的是寫出來程式碼非常的短阿
雖然還有一些需要修改或是增加的功能
不過雛形出來了 已經很接近當初看到的功能
Private Sub 載入_Click()
Dim d(30)
For num = 1 To 10
root1 = ActiveWorkbook.Path & "\" & "try" & num & ".txt"
Open root1 For Input As #1
Do Until EOF(1)
For n = 1 To 30
Input #1, d(n)
Cells(num + 5, n + 1).Value = d(n)
Next
Loop
Close #1
Next
End Sub

大致上程式的架構就是這樣
按鈕->取得要處理資料夾路徑->載入文字檔案資料
過程中還寫了一個亂數生成10個內含30筆資料檔案副程式
提供實驗
接下來只要再做細部修改就完成拉

2009年7月16日 星期四

關於CSV檔

CSV檔是很普遍的Grid式資料匯出格式,而很多人也都知道Excel可以直接將CSV檔開啟成試算表。不過稱作Comma Separated Value的CSV,除了"用逗號將值隔開"之外,還有一些進階的花式技巧。例如:
1. 如果是內含逗號的字串值,可以用雙引號將字串包起來,例如: 886,"Taipei, Taiwan"
2. 如果在雙引號中的字串中又包含了雙引號,則可以遵循VB/VBScript的慣例,用兩個雙引號代替。例如: "12'30"""-->12'30"
3. 用Excel開啟CSV時,Excel會自動判斷值的性質,進行資料轉換。比較煩的是,明明編號是007,就算用了雙引號包夾成"007",Excel還是會將它轉換成7,即使在Excel中重新調整它的儲存格式為字串,也無法還原回007。

所以,我們可以用="007"的宣告方式,強制指定字串值,Excel就不會雞婆將它轉成數字。而這個技巧還可以再延伸,甚至可以用=SUM(B2:B5)的寫法,指定儲存格的運算式。
此外Excel只接受ANSI/BIG5編碼的CSV檔,如果將CSV檔存成Unicode編碼,Excel就無法識別出逗號,而會將整列資料視為同一個值。
----------------------------------------------
另外…Excel不默認支持UTF8的CSV文件

因此excel打開utf-8中文的csv百分百會發生問題。

有兩種解決辦法:
1. 可以先用notepad打開csv,另存為ANSI編碼,再用Excel打開
2. 先打開空的Excel,然後在資料->取得外部資料->從文字檔→選擇csv文件,在導入資料對話框中選好UTF-8的編碼(你會發現默認是ANSI),就可以了。

2009年7月13日 星期一

柯南真的是越來越豪洨了

前天和朋友還有學弟妹們去看柯南"漆黑的追跡者"
雖然有不少笑點 例如
警察們開會後的閒聊 白鳥警官和千葉警官的身材變了
還有那對很壯的警官雙胞胎重悟和參悟 名字的諧音叫做三五十五
還有那位菜鳥警官居然有如此強大的運氣 靠柯南破的案子居然升官了
實在是.............(果然做人只要強運 做什麼都會往好的方向發展)
真是令人羨慕
柯南跟服部平次手機通話讓我覺得有點BL的感覺 想不到柯南也往這個領域發展了
元太頭上的圓形禿還在 讓我覺得電影版跟電視版關聯性很夠 不像其他卡通都只能當成架空的世界來看


回歸這次最令人在意的最讓人無法接受的劇情
(= =)a 黑暗組織要銷毀的記憶卡 最後居然沒交代 就讓它掉在天文台好嗎??
黑暗組織開武裝直升機大搖大擺出現在天文台 下方全是警車
哪個國家允許武裝直升機隨便在都市開火 這世界還有王法嗎
黑暗組織也太明目張膽了 如果黑暗組織這麼招搖
柯南幹嘛追查的這麼辛苦

最後補上阿笠博士的發明 實在是太神奇了>"<
柯南這次居然用博士發明的伸縮吊帶打爆武裝直升機
我要充分的懷疑其實博士是秘密組織的成員
他給柯南的那些裝備拿到軍事用途一定無可限量

2009年7月9日 星期四

讀取文字檔內容

找到了讀取文字檔內容 並且輸出到excel表格中的程式碼
Sub test1()
Open "C:\Documents and Settings\Administrator\桌面\test.txt" For Input As #1
i = 0
Do Until EOF(1)
Line Input #1, indata ' 讀入一行資料並將之指定給變數。
i = i + 1
bpos = 1 '字元指標
epos = 1
j = 0
Do
j = j + 1

epos = InStr(bpos, indata, Chr(32), vbTextCompare) '找空白字元的位址
If epos = 0 Then Exit Do
slen = epos - bpos '字串長度
Cells(i, j) = Mid(indata, bpos, slen) '從indata字串傳回特定數量字元所構成的Variant (String)。
bpos = epos + 1
Loop
Loop
Close #1
End Sub
此外,另外一種也不錯
Sub test2()
Dim Filename As String
Dim epos As Variant
ChDir "C:\Documents and Settings\Administrator\桌面"
LogFileName = Application.GetOpenFilename(FileFilter:="文字檔(*.txt),*.txt", Title:="請選取檔案")
If TypeName(LogFileName) = "Boolean" Then Exit Sub '按取消時
Open LogFileName For Input As #1
i = 0

Do Until EOF(1)
Line Input #1, indata
i = i + 1
epos = Split(indata, Chr(32), , vbTextCompare) '取得字串至空白
rCount = UBound(epos) '取得陣列維度最大值
Cells(i, 1).Resize(, rCount) = epos
Loop
Close #1
End Sub

test2載入資料時似乎全部資料都會判斷為字串
還要再查一下原因
補充:將chr(32)改為chr(9)則 資料間格無論為 tab 或空格均可讀取資料

2009年6月30日 星期二

輸入與輸出

利用輸入與輸出關鍵字可以找到
關於檔案輸入輸出的控制函式
目前關心的是如何開檔 讀檔 及寫入檔案這三個動作
===========================================
Open 陳述式
+++++++++++++++++++++++++++++++++++++++++++
Open 陳述式提供三種檔案存取型態
循序存取(Input、Output 以及 Append 模式)被用來寫入文字檔,比如錯誤登入以及報告。

隨機存取 (Random 模式)被用來讀取與寫入資料到檔案並且沒有關閉檔案。隨機存取會資料保留在記錄中,如此可輕易的找出資訊所在。

二進位存取(Binary 模式)被用來讀取或寫入資料到檔案中任何的位元組位置,例如儲存或顯示一個點陣圖。
============================================
讀檔 及寫入檔案
++++++++++++++++++++++++++++++++++++++++++++
存取型態 寫入資料 讀取資料
循序 Print #, Write # Input #
隨機 Put Get
二進位 Put Get
============================================
不過這時候遇到了點問題
因為不是很了解檔案存取型態對文件的影響
所以必須親自試試看差異

2009年6月29日 星期一

取得檔案路徑

一開始找到了檔案系統控制的函數 傳回目前路徑CurDir
不過似乎只能得到預設的路徑 一般是得到使用者路徑
而不是我要得到的當前路徑
我希望我的程式能抓excel範本所在的路徑資料
結果查了一下資料 取得當前路徑可以從物件的path屬性得到

Debug.Print Application.AltStartupPath '傳回取代啟動資料夾的名稱

Debug.Print ActiveWorkbook.Path '傳回目前工作簿的路徑(檔案未存檔時傳回空字串) "這個符合要求"

Debug.Print ActiveWorkbook.FullName '現用目前工作簿的路徑及檔案名稱(檔案未存檔時只傳回暫存檔名)

Debug.Print Application.NetworkTemplatesPath '傳回儲存範本所在的網路路徑,如果指定的網路路徑不存在,本屬性將傳回一空字串

Debug.Print Application.TemplatesPath '傳回儲存範本所在的區域路徑

Debug.Print Application.Path '傳回Excel程式完整路徑

Debug.Print Application.DefaultFilePath '傳回或者設定 Microsoft Excel 開啟檔案時使用的預設路徑

Debug.Print Application.StartupPath '傳回啟動資料夾的完整路徑

Debug.Print Application.LibraryPath '傳回程式庫資料夾的路徑

Debug.Print Application.UserLibraryPath '傳回使用者電腦上 COM 增益集安裝位置的路徑(2000以上)

Debug.Print Application.PathSeparator '傳回路徑分隔符號

Debug.Print CurDir '傳回目前的路徑(開啟舊檔時線市的路徑)

For a = 1 To 27


Cells(a, 1) = Environ(a)

Next


End Sub

能夠得到當前路徑 就可以讓這個excel放在需要載入資料的目錄下
就能正常執行了

2009年6月25日 星期四

VBA學習紀錄1

當初看到的程式 是在excel工作表中有一個按鈕
按下去後會載入含有測試資料的檔案
然後將資料列在excel的表格中

初步預測
需要一個"active按鈕"啟動click事件
檔案系統控制
啟動檔案IO功能
字串處理
使用excel儲存格

啟動click事件已經OK了
開啟檔案IO功能還在摸索
在摸索檔案IO時 發現檔案系統控制也很重要
這兩個項目找個時間研究一下

VBA for excel

以前在公司工作的時候 有看到產品owner用excel開發的小程式
(更屌的程式應該是有人寫整套的測試系統可以載入不同的測試項)
用來載入每片晶圓測試的結果
方便比對bin別的數量
後來有位跟我同期進公司的工程師(不過人家幹6年了)
覺得不夠方便 就又寫了個介面 讓程式更方便使用了

這一個多月看了一些VBA的書
突然想試看看 能不能做到跟人家開發的程式類似的功能
邊看資料實作看看
順便把製作的過程紀錄一下

2009年6月17日 星期三

我是來面試的 不是來搶地盤

今天跑去聯電面試產品工程師
為了節省經費 加上以前就熟悉這條路線
所以交通就決定這樣 機車==>火車==>公車==>步行==>園區公車
在從園區入口走往科技生活館時,看到樹上有隻烏秋
於是隨口吹起哨子跟著他叫
沒想到似乎引來牠的不滿
一路追殺我50公尺..........

回程也一樣 不過烏秋變成兩隻了 依然追殺著我

至於面試過程................唉!!
八成不符要求了.........

不過也多少更認識產品工程師要什麼樣的技能
想要朝這條路玩下去 看樣子還要不斷努力
目前實力嚴重不足..........
也許該挑門檻比較低的工作了
然後趁那段時間得到足夠的能力

話說回來 兩個禮拜前欣詮的面試結果不知道如何
那個是跟以前工作內容一樣的工作阿!!!!
希望能上

2009年5月28日 星期四

學perl計劃開始

第1份工作 雖然只有短短的五個月
不過其實見習到很多有趣的東西,unix基本的操作
還有很多工程師會各種不同的程式語言
有的會VBA,有的會C shell,VC,有的會PHP,
反正想的到的程式都有人會......
雖然不是必備要求,沒有要懂很深
不過似乎都能為現實的工作中提高很大的便利性
至少寫個簡單合用的控制介面
縮減繁複的動作

其實從很久以前,我就想好好的學習一下
如何寫程式
也曾經一時衝動買過了教VC++ MFC的書籍
不過相關的背景知識不足 野心又太大
這麼久以來還是沒能弄清楚程式的語法,架構
所以決定回歸原始,重頭開始學起
從簡單的程式開始學 從命令模式程式開始

perl很擅長做文字比對 做報表
語法觀念又能跟很多程式相近
最重要的是他的可攜性高,而且是Free
所以我決定用它當開始

不過我不見得會照一般書本的教法開始看
一邊挑有興趣的章節看
一邊挑以前沒注意到沒學到的觀念看
並在這裡做個學習紀錄
才不會又像以前一樣中途而廢

2009年5月21日 星期四

我到底在做什麼

當失業勞工到現在已經一季了
從來沒想到日子會這麼難熬
還記得剛退伍時候也有類似心情
但是那時可是有不少面試機會
而現在已經沒消沒息好久了
以前很慶幸我比別得同學早入伍
可以有較多安排時間
沒想到這些時間最後還是被我浪費掉了

看著朋友們碩士也快出來了
當初抱著他們在學校練功
我在業界打滾
結果大部分的時間我都在遊蕩中過活

看著部份朋友現在過的很好
實在有點吃味
感覺上立足點相同
結果到頭來我卻混的不好

遊晃了這麼長的時間....
自己一點成長都沒有
又不敢試著改變自己的生活

現在的心境實在很像白居易當江州司馬的時候
失意阿~~~~!!!

2009年5月20日 星期三

煩了

弟弟灌了" 夢幻龍族傳說" 因為畫風挺可愛的
所以我接著自己也申請了帳號
連續數天沉溺於網路遊戲之中 直到剛剛
我這麼多年來都不碰網路遊戲 真沒想到會在這幾天破戒


不過連玩三天後 我覺得有點膩了
網路遊戲還是不適合我
也許是我年紀大了吧
網路遊戲卻少豐富的故事性
而我也沒有在遊戲中交到朋友
一直殺怪解任務 自己一個人刷副本
有點空虛
還是再找別的事來做吧~~~!!

老大升官了

回想我的軍旅生涯 其實蠻豐富的 綜合起來想想 大部份都是快樂的日子


前天崎賢老大請唱歌 慶祝他升官
這次唱歌的沒有一個比較強的幫忙唱
很多歌都唱的很慘
唱快完的時候 郭伯難得打電話來
也剛好在逢甲 於是又續攤喝茶
一直聊天聊到一點 店關門了
站在門口繼續聊..............
聊些交女友 軍中的祕辛
不小心大家都啟動了八卦本能
結果聊個沒完.........

結論是當兵是男孩子一輩子聊不完的話題

2009年5月12日 星期二

泉哥的孩子出來了

預計5月底要去台北聽音樂會,為清說反正要去台北一趟
不如去邀泉哥出來吃飯,他利用mail跟泉哥祝賀生日
結果泉哥聊到近況,生了個男寶寶
這時候我才驚覺,原來離高中已經過了這麼多年了
那時泉哥也只是高中實習老師而已....
現在已經是一個孩子的爸了

2009年5月9日 星期六

加速firefox(火狐)網頁瀏覽的方法

突然覺得Firefox開啟網頁有點慢
想到也許可以跟IE一樣做個調整提升開啟速度
網路上搜到這篇作法

===================================================================
除了IE上網之外

很多人都會使用Firefox來當作網路瀏覽器
而我就是Firefox的愛用者

因為現今用IE7上網很不穩定
雖然有很多的人性化的工具列讓你可以輕鬆點閱
但是也此拖慢打開網頁的時間
光是開啟yahoo首頁的時間就要花好幾分鐘或是死當
相較之下Firefox的瀏覽速度比較令我滿意
每當我電腦重灌後就要再一次從新爬文如何再修改增進Firefox瀏覽速度的方法
因此我在此匯集一些大家熟知的方法供各位以及我日後之用

(一)改變火狐瀏覽參數值


1. 在 Firefox的網址欄裡面鍵入 "about:config"。尋找以下幾個欄位:

2. 把 network.http.pipelining和 network.http.proxy.pipelining這兩個欄位的值從 "false" 改成 "true" (直接用滑鼠在這兩行上面連續按兩下即可)。

3. 把 network.http.pipelining.maxrequests這個欄位的值改成大一點的值,例如 "30"。

4. 最後在 "about:config"這個畫面上的任何一個地方按一下滑鼠的右鍵。這個時候會出現一個小選單;選擇 "新增"這個項目,然後選擇 "整數"這個選項。在接下來出現的對話盒當中輸入 "nglayout.initialpaint.delay",按下 "OK"鍵之後會出現另外一個對話盒要求你輸入這個新參數的值。此時請輸入 "0",然後按 "OK"鍵。

完全關閉FireFox後退出,再重新打開FireFox,你將會有不一樣的速度體驗,會有2—3倍的速度提升。


(二) 讓Firefox減少記憶體使用量

其實只要在Firefox設定裡面多加一行文字,之後只要把它縮小到到工作列上,Firefox的記憶體用量就會爆減,最多能讓Firefox的記憶體使用量降低到10MB以下喔。

1.在操作前將Firefox開了七八個分頁,按下「Ctrl」+「Alt」+「Del」三鍵叫出工作管理員,可以看到Firefox用掉了161,988 K的巨量記憶體。

2.接下來切換到Firefox視窗,在網址列輸入「about:config」,就會看到詳細設定清單,在清單上按下滑鼠右鍵叫出選單,選擇【新增】→【真假(Boolean)值】。

3.在「新增真假值設定值」對話盒空格內,輸入「config.trim_on_minimize」後按下確定,下一步選擇「true」後按下確定,之後關閉Firefox並重新啟動。

一般的情況下瀏覽器一次只會向網頁伺服器提出一個連線要求。
如果做了上面這些設定,你的 Firefox將會一次向網頁伺服器提出十個連線要求,
因此連線速度就會大幅增加,在重開 Firefox 後,當你把 Firefox 縮工作列,
就會釋放記憶體了。

基本上藉由上述兩種方法稍做參數的修改即可以使你的Firefox上網速度加快了
通常經過這樣子的修飾後就足以大幅度改善Firefox的瀏覽速度了~~
====================================================================
我的版本是3.0.10
試著修改了一下 暫時還沒去查 修改這些參數的意義
寫在網頁上做個紀錄
順便看一下開啟有沒有真的變快
結論是 感覺上有差'一點點'拉
果然開啟的慢是因為在虛擬機內操作的關係

2009年5月6日 星期三

慘了!!要怎樣收尾

最近心裡煩,已經邁入4個多月的失業狀態。
昨晚跑去和爸媽說不如去準備公營事業考試好了
結果剛剛在PTT看到文章[新聞] 今年高普考報考人數破12萬 創10年新高
看了之後我又沒力了........
還是另外再想想出路好了

2009年5月4日 星期一

igoogle

自從前幾天把ubuntu9.04成功的裝到VMware上後
突然興起不如改用igooge當成我的登入首頁,
於是花了點時間設置了首頁,平常使用yahoo傳統首頁慣了
換成新的首頁畫面,使用上少了點熟悉的親切感

可以看到蘋果的正妹圖,可以馬上查字典
還可以看到台中的天氣
預設的主題風格本來是龍貓的
不知道為什麼變成了風之谷
最後變成了貓的報恩........
不過,基本上都還是我喜歡的綠色
暫時就先設這樣,
等到我品味提升,再修改成更漂亮的佈景主題

Hem's home開張了

每次看到朋友用網誌,或是相簿來紀錄生活點滴 都覺得對方好有心 願意花時間紀錄自己的生活
雖然我自己也曾經申請過好幾個blog 不過從沒有認真在經營 直到帳號自然失效
因為我是個懶人 常常會提不起勁做事阿
不過最近晚上偶然開始回想過去 腦中卻是一片空白
平白的讓好多回憶自然流逝了
又興起了紀錄自己生活點滴的念頭
記得好像有個朋友的網誌開頭說過
"文章是寫給自己看的~或許文筆很爛~但這就是我的生活"
雖然我覺得現在的生活非常枯燥
而且非常不如意 說不定也沒紀念回憶的價值
但是也許在一段時間後 我能透過自己的點滴紀錄
抒發自己的心情 還有了解自己的成長


-枯燥煩雜的歷史,卻聯接著過去與未來,從點滴的紀錄中,也許能看出有趣的事-