第一篇:實(shí)用的EXCEL VBA編程大全總結(jié)
實(shí)用的EXCEL VBA編程小結(jié):
最近單位內(nèi)部的項(xiàng)目里要用到些報(bào)表EXCEL的生成,雖說JAVA 的POI可以有這能力,但覺得還是可能比較麻煩,因此還是轉(zhuǎn)用.net來搞,用Visual Studio2003配合office 2003,用到了一些VBA,因此小結(jié)并歸納之,選了些資料歸納在這里,以備今后查考
首先創(chuàng)建 Excel 對(duì)象,使用ComObj:
Dim ExcelID as Excel.Application
Set ExcelID as new Excel.Application
1)顯示當(dāng)前窗口:
ExcelID.Visible := True;
2)更改 Excel 標(biāo)題欄:
ExcelID.Caption := '應(yīng)用程序調(diào)用 Microsoft Excel';
3)添加新工作簿:
ExcelID.WorkBooks.Add;
4)打開已存在的工作簿:
ExcelID.WorkBooks.Open('C:¥Excel¥Demo.xls');
5)設(shè)置第2個(gè)工作表為活動(dòng)工作表:
ExcelID.WorkSheets[2].Activate;
或 ExcelID.WorkSheets[ 'Sheet2' ].Activate;
6)給單元格賦值:
ExcelID.Cells[1,4].Value := '第一行第四列';
7)設(shè)置指定列的寬度(單位:字符個(gè)數(shù)),以第一列為例:
ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;
8)設(shè)置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例:
ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035;// 1厘米
9)在第8行之前插入分頁符:
ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;
10)在第8列之前刪除分頁符:
ExcelID.ActiveSheet.Columns[4].PageBreak := 0;
11)指定邊框線寬度:
ExcelID.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-頂 4-底 5-斜(¥)6-斜(/)
12)清除第一行第四列單元格公式:
ExcelID.ActiveSheet.Cells[1,4].ClearContents;
13)設(shè)置第一行字體屬性:
ExcelID.ActiveSheet.Rows[1].Font.Name := '隸書';
ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelID.ActiveSheet.Rows[1].Font.Bold := True;
ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;
14)進(jìn)行頁面設(shè)置:
a.頁眉:
ExcelID.ActiveSheet.PageSetup.CenterHeader := '報(bào)表演示';b.頁腳:
ExcelID.ActiveSheet.PageSetup.CenterFooter := '第&P頁';
c.頁眉到頂端邊距2cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.頁腳到底端邊距3cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.頂邊距2cm:
ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底邊距2cm:
ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左邊距2cm:
ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右邊距2cm:
ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.頁面水平居中:
ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.頁面垂直居中:
ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印單元格網(wǎng)線:
ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;
15)拷貝操作:
a.拷貝整個(gè)工作表:
ExcelID.ActiveSheet.Used.Range.Copy;
b.拷貝指定區(qū)域:
ExcelID.ActiveSheet.Range[ 'A1:E2' ].Copy;
c.從A1位置開始粘貼:
ExcelID.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
d.從文件尾部開始粘貼:
ExcelID.ActiveSheet.Range.PasteSpecial;
16)插入一行或一列:
a.ExcelID.ActiveSheet.Rows[2].Insert;
b.ExcelID.ActiveSheet.Columns[1].Insert;
17)刪除一行或一列:
a.ExcelID.ActiveSheet.Rows[2].Delete;
b.ExcelID.ActiveSheet.Columns[1].Delete;
18)打印預(yù)覽工作表:
ExcelID.ActiveSheet.PrintPreview;
19)打印輸出工作表:
ExcelID.ActiveSheet.PrintOut;
20)工作表保存:
If not ExcelID.ActiveWorkBook.Saved then
ExcelID.ActiveSheet.PrintPreview End if
21)工作表另存為:
ExcelID.SaveAs('C:¥Excel¥Demo1.xls');
22)放棄存盤:
ExcelID.ActiveWorkBook.Saved := True;
23)關(guān)閉工作簿:
ExcelID.WorkBooks.Close;
24)退出 Excel:
ExcelID.Quit;
25)設(shè)置工作表密碼:
ExcelID.ActiveSheet.Protect “123”, DrawingObjects:=True, Contents:=True, Scenarios:=True
26)EXCEL的顯示方式為最大化
ExcelID.Application.WindowState = xlMaximized
27)工作薄顯示方式為最大化
ExcelID.ActiveWindow.WindowState = xlMaximized
28)設(shè)置打開默認(rèn)工作薄數(shù)量
ExcelID.SheetsInNewWorkbook = 3
29)'關(guān)閉時(shí)是否提示保存(true 保存;false 不保存)
ExcelID.DisplayAlerts = False
30)設(shè)置拆分窗口,及固定行位置
ExcelID.ActiveWindow.SplitRow = 1
ExcelID.ActiveWindow.FreezePanes = True
31)設(shè)置打印時(shí)固定打印內(nèi)容
ExcelID.ActiveSheet.PageSetup.PrintTitleRows = “$1:$1”
32)設(shè)置打印標(biāo)題
ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = “"
33)設(shè)置顯示方式(分頁方式顯示)
ExcelID.ActiveWindow.View = xlPageBreakPreview
34)設(shè)置顯示比例
ExcelID.ActiveWindow.Zoom = 100
35)讓Excel 響應(yīng) DDE 請(qǐng)求
Ex.Application.IgnoreRemoteRequests = False
用VB操作EXCEL
Private Sub Command3_Click()
On Error GoTo err1
Dim i As Long
Dim j As Long
Dim objExl As Excel.Application '聲明對(duì)象變量
Me.MousePointer = 11 '改變鼠標(biāo)樣式
Set objExl = New Excel.Application '初始化對(duì)象變量
objExl.SheetsInNewWorkbook = 1 '將新建的工作薄數(shù)量設(shè)為1
objExl.Workbooks.Add '增加一個(gè)工作薄
objExl.Sheets(objExl.Sheets.Count).Name = ”book1“ '修改工作薄名稱
objExl.Sheets.Add , objExl.Sheets(”book1“)‘增加第二個(gè)工作薄在第一個(gè)之后
objExl.Sheets(objExl.Sheets.Count).Name = ”book2“
objExl.Sheets.Add , objExl.Sheets(”book2“)‘增加第三個(gè)工作薄在第二個(gè)之后
objExl.Sheets(objExl.Sheets.Count).Name = ”book3“
objExl.Sheets(”book1“).Select '選中工作薄
For i = 1 To 50 '循環(huán)寫入數(shù)據(jù)
For j = 1 To 5
If i = 1 Then
objExl.Selection.NumberFormatLocal = ”@“ '設(shè)置格式為文本
objExl.Cells(i, j)= ” E “ & i & j Else
objExl.Cells(i, j)= i & j End If Next Next
objExl.Rows(”1:1“).Select '選中第一行
objExl.Selection.Font.Bold = True '設(shè)為粗體
objExl.Selection.Font.Size = 24 '設(shè)置字體大小
objExl.Cells.EntireColumn.AutoFit '自動(dòng)調(diào)整列寬
objExl.ActiveWindow.SplitRow = 1 '拆分第一行
objExl.ActiveWindow.SplitColumn = 0 '拆分列
objExl.ActiveWindow.FreezePanes = True '固定拆分 objExl.ActiveSheet.PageSetup.PrintTitleRows = ”$1:$1“ '設(shè)置打印固定行
objExl.ActiveSheet.PageSetup.PrintTitleColumns
=
”“
'objExl.ActiveSheet.PageSetup.RightFooter = ”打印時(shí)間: “ & _
Format(Now, ”yyyy年mm月dd日 hh:MM:ss“)
objExl.ActiveWindow.View = xlPageBreakPreview '設(shè)置顯示方式
objExl.ActiveWindow.Zoom = 100 '設(shè)置顯示大小
'給工作表加密碼
objExl.ActiveSheet.Protect ”123", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
objExl.Application.IgnoreRemoteRequests = False
objExl.Visible = True '使EXCEL可見
objExl.Application.WindowState = xlMaximized 'EXCEL的顯示方式為最大化
objExl.ActiveWindow.WindowState = xlMaximized '工作薄顯示方式為最大化
objExl.SheetsInNewWorkbook = 3 '將默認(rèn)新工作薄數(shù)量改回3個(gè)
Set objExl = Nothing '清除對(duì)象
Me.MousePointer = 0 '修改鼠標(biāo)
打
印
標(biāo)
題 Exit Sub err1:
objExl.SheetsInNewWorkbook = 3
objExl.DisplayAlerts = False '關(guān)閉時(shí)不提示保存
objExl.Quit '關(guān)閉EXCEL
objExl.DisplayAlerts = True '關(guān)閉時(shí)提示保存
Set objExl = Nothing
Me.MousePointer = 0 End Sub
第二篇:刀具和編程總結(jié)
① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價(jià)格便宜,但切削壽命短、吃刀量小、進(jìn)給速度低、加工效率低,在數(shù)控加工中較少使用。
② 飛刀(即鑲嵌式刀具)主要為機(jī)夾式可轉(zhuǎn)位刀具,這種刀具剛性好、切削速度高,在數(shù)控加工中應(yīng)用非常廣泛,用于模胚的開粗、平面和曲面粗精加工效果均很好。
③ 合金刀(通常指的是整體式硬質(zhì)合金刀具)精度高、切削速度高,但價(jià)格昂貴,一般用于精加工。
數(shù)控刀具與普通機(jī)床上所用的刀具相比,有以下不同的要求。
(1)剛性好(尤其是粗加工刀具)、精度高、抗振及熱變形小。
(2)互換性好,便于快速換刀。
(3)壽命高,切削性能穩(wěn)定、可靠。
(4)刀具的尺寸便于調(diào)整,以減少換刀調(diào)整時(shí)間。
(5)刀具應(yīng)能可靠地?cái)嘈蓟蚓硇?,以利于切屑的排除。?)系列化、標(biāo)準(zhǔn)化,以利于編程和刀具管理。
① 刀具直徑越大,轉(zhuǎn)速越慢;同一類型的刀具,刀桿越長(zhǎng),吃刀量就要減小,否則容易彈刀而產(chǎn)生過切。
② 白鋼刀轉(zhuǎn)速不可過快,進(jìn)給速度不可過大。
③ 白鋼刀容易磨損,開粗時(shí)少用白鋼刀。
① 以上的飛刀參數(shù)只能作為參考,因?yàn)椴煌娘w刀材料其參數(shù)值也不相同,不同的刀具廠生產(chǎn)的飛刀其長(zhǎng)度也略有不同。另外,刀具的參數(shù)值也因數(shù)控銑床或加工中心的性能和加工材料的不同而不同,所以刀具的參數(shù)一定要根據(jù)工廠的實(shí)際情況來設(shè)定。
② 飛刀的剛性好,吃刀量大,最適合模胚的開粗。另外,飛刀精加工陡峭面的質(zhì)量也非常好。③ 飛刀主要是鑲刀粒的,沒有側(cè)刃,① 合金刀剛性好,不易產(chǎn)生彈刀,用于精加工模具的效果最好。
② 合金刀和白鋼刀一樣有側(cè)刃,精銑銅公直壁時(shí)往往使用其側(cè)刃。
① 刀具的名稱一般根據(jù)刀具的直徑和圓角半徑來定義,例如,直徑為30,圓角半徑為5的飛刀,其名稱定義為D30R5;直徑為12的平底刀,其名稱定義為D12;半徑為5的球刀,其名稱定義為R5。
② 輸入刀具名稱時(shí),只需要輸入小寫字母即可,系統(tǒng)會(huì)自動(dòng)將字母轉(zhuǎn)為大寫狀態(tài)。③ 設(shè)置刀具參數(shù)時(shí),只需要設(shè)置刀具的直徑和底圓角半徑即可,其他參數(shù)按默認(rèn)即可。加工時(shí),編程人員還需要編寫加工工藝說明卡,注明刀具的類型和實(shí)際長(zhǎng)度。
機(jī)床坐標(biāo)一般在工件頂面的中心位置,所以創(chuàng)建機(jī)床坐標(biāo)時(shí),最好先設(shè)置好當(dāng)前坐標(biāo),然后在〖CSYS〗對(duì)話框中設(shè)置“參考”為WCS。
加工模具時(shí),其開粗余量多設(shè)為0.5,但如果是加工銅公余量就不一樣了,因?yàn)殂~公(銅公是火花機(jī)放電加工用的電極)最后的結(jié)果是要留負(fù)余量的。
模具加工要求越高時(shí),其對(duì)應(yīng)的公差值就應(yīng)該越小。
進(jìn)行實(shí)體模擬驗(yàn)證前,必須設(shè)置加工工件和毛坯,否則無法進(jìn)行實(shí)體模擬。
第三篇:編程題總結(jié)
C作業(yè)匯總
1.short a,b=32767;/*short類型在內(nèi)存中占2B*/ a=b+1;問:a的值是多少?并分析原因。
2.有一4位數(shù)整數(shù),假設(shè)用abcd表示,請(qǐng)把這個(gè)4位數(shù)的每個(gè)數(shù)位用表達(dá)式表示出來。3.從鍵盤輸入圓的半徑r,計(jì)算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號(hào)常量;面積s保留2位小數(shù))#define PI 3.14159 #include
4.輸入m>=3的正整數(shù),判斷m是否素?cái)?shù)。畫出算法流程圖及NS圖
5.有一函數(shù):
x?1 ?x ?y??2x?1 1?x?10
?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。
要求x,y聲明為float類型,y保留2位小數(shù)。#include
if(x<1)
y=x;else
if(x<10)
y=2*x-1;
else
y=3*x-11;
}
printf(“y=%.2fn”,y);
x3x5x7x9?????,6.課后習(xí)題4.17(P159)利用泰勒級(jí)數(shù)sinx?x?計(jì)算sinx的3!5!7!9!值。要求最后一項(xiàng)的絕對(duì)值小于10,并統(tǒng)計(jì)出此時(shí)累加了多少項(xiàng)。#include
/*記錄每個(gè)項(xiàng)數(shù)*/ int n=1,count=0;/*count記錄累加了多少項(xiàng)*/
printf(“請(qǐng)輸入x值(弧度):n”);scanf(“%f”,&x);
term=x/n;while(fabs(term)>1e-5)
/* while循環(huán)*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}
/* do
/*do while循環(huán)*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);
*/
printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項(xiàng)。n”,count);}
7.用牛頓迭代法求下面方程在1.5附近的根:
2x?4x?3x?6?0 32?5
牛頓迭代公式:
x1?x0?f(x0)f?(x0)
#include
/*y1記錄f(x0),y2記錄f(x0)的導(dǎo)數(shù)*/
do {
x0=x1;
y1=2*x0*x0*x0-4*x0*x0+3*x0-6;
y2=6*x0*x0-8*x0+3;
x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);
printf(“the root is:%.2fn”,x1);}
8.寫一函數(shù),輸入一個(gè)16進(jìn)制整數(shù),輸出相應(yīng)的10進(jìn)制數(shù)。例:從鍵盤輸入2a,輸出結(jié)果是42。
要求:若輸入數(shù)據(jù)不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進(jìn)制數(shù)不合法!”。
#include
printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);
while((c=getchar())!='n'){
if(c>='0' && c<='9')
sum=sum*16+c-'0';
else
if(c>='a' && c<='f')
sum=sum*16+c-87;
else
if(c>='A' && c<='F')
sum=sum*16+c-55;
else
{
printf(“您輸入的16進(jìn)制不合法.n”);
exit(0);
} }
printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法2:用字符串處理的方式 #include
printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(str);
for(i=0;str[i];i++){
if(str[i]>='0' && str[i]<='9')
sum=sum*16+str[i]-'0';
else
if(str[i]>='a' && str[i]<='f')
sum=sum*16+str[i]-87;
else
if(str[i]>='A' && str[i]<='F')
sum=sum*16+str[i]-55;
else
{
printf(“您輸入的16進(jìn)制不合法.n”);
exit(0);
} }
printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法3:用字符數(shù)組及指針處理的方式 #include
{ char str[20],*p=str;int sum=0;
printf(“請(qǐng)輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(p);
while(*p){
if(*p>='0' && *p<='9')
sum=sum*16+*p-'0';
else
if(*p>='a' && *p<='f')
sum=sum*16+*p-87;
else
if(*p>='A' && *p<='F')
sum=sum*16+*p-55;
else
{
printf(“您輸入的16進(jìn)制不合法.n”);
exit(0);
}
p++;}
printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 9.編寫一個(gè)小函數(shù),其功能是計(jì)算兩個(gè)整數(shù)的平均值,該函數(shù)要在主函數(shù)中調(diào)用。
#include
avg=average(x,y);
printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}
float average(int x,int y)
{ return(x+y)/2.0;}
10.有N(N用宏定義為符號(hào)常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,將這個(gè)整型數(shù)組中的值逆序存放。例如,原來5個(gè)元素的順序?yàn)?、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include
printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數(shù)組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); for(i=0;i t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;} printf(“n逆序之后數(shù)組的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n”);} 11.有N(N用宏定義為符號(hào)常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,對(duì)該數(shù)組元素進(jìn)行由小到大排序(要求,該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素值。最后,從鍵盤隨機(jī)輸入一個(gè)整數(shù),并把該整數(shù)插入上述數(shù)組中(該功能用函數(shù)實(shí)現(xiàn)),使得插入該整數(shù)后的數(shù)組仍然有序,輸出數(shù)組中各元素的值。#define N 5 #include int i,x;void sort(int array[],int n);void insert(int array[],int n,int x); printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); sort(a,N); /*調(diào)用sort對(duì)數(shù)組進(jìn)行排序*/ printf(“n升序排序之后數(shù)組的值是:n”);for(i=0;i printf(“%d ”,a[i]); printf(“n輸入一個(gè)x值插入到數(shù)組中:n”);scanf(“%d”,&x); insert(a,N,x); printf(“n插入%d之后數(shù)組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”);} void sort(int array[],int n)/*用選擇法對(duì)數(shù)組array升序排序*/ { int i,j,t,min; for(i=0;i min=i; for(j=i+1;j if(array[j] min=j; if(min!=i) { t=array[i]; array[i]=array[min]; array[min]=t; } } } void insert(int array[],int n,int x){ int i,pos; for(i=0;i pos=i; for(i=n-1;i>=pos;i--) array[i+1]=array[i]; array[pos]=x;} 12.有一整型數(shù)組,N(N用宏定義為符號(hào)常量)個(gè)元素,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。從鍵盤隨機(jī)輸入一個(gè)整數(shù)x,刪除該數(shù)組中值與x相同的所有元素(該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素的值。#define N 5 #include printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數(shù)組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n請(qǐng)輸入要?jiǎng)h除的值x:n”);scanf(“%d”,&x); n=delet(a,N,x); /*n值是刪除與x相同的元素后,數(shù)組剩余元素的個(gè)數(shù)。*/ printf(“刪除%d之后數(shù)組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”); } int delet(int a[],int n,int x){ int i,j; for(i=0,j=0;i if(a[i]!=x) a[j++]=a[i]; return j;} 13.從鍵盤隨機(jī)輸入一字符串,將所有ASCII值為偶數(shù)的字符輸出。例如:輸入abc123,輸出結(jié)果是b2(因?yàn)閎的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數(shù)) #include printf(“輸入字符串:n”);gets(str); printf(“ASCII碼是偶數(shù)的字符有:”);for(i=0;str[i];i++) if(str[i]%2==0)putchar(str[i]); printf(“n”);} 14.從鍵盤輸入兩個(gè)字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數(shù) #include printf(“輸入兩個(gè)字符串,輸入回車鍵結(jié)束:n”);gets(str1);gets(str2); mystrcat(str1,str2); printf(“連接在一起的字符串是:n”);puts(str1); } void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2) *p1++=*p2++;*p1='