九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用Excel必學(xué)VBA,不學(xué)絕對(duì)后悔

原創(chuàng)2022-07-01 18:20·WarAndPeace

VBA有其自身的優(yōu)勢(shì),什么python取代VBA,根本不是那回事,只能說(shuō)各有特點(diǎn),各有各的長(zhǎng)處,在工作中完全可以互相取長(zhǎng)補(bǔ)短,各取所需,學(xué)會(huì)了VBA,絕對(duì)讓你有一種相見(jiàn)恨晚的感覺(jué),經(jīng)常使用Excel,卻不學(xué)VBA,絕對(duì)后悔。

一、VBA在我的Excel工作中的應(yīng)用

下圖是我的Excel工作簿,里面的成品出庫(kù)工作表已錄入一些數(shù)據(jù)明細(xì)。右邊的發(fā)貨單是由VBA一鍵生成的。

圖1成品出庫(kù)

圖2發(fā)貨單

圖3

二、實(shí)現(xiàn)方法

1、先看簡(jiǎn)單的打印預(yù)覽模塊的實(shí)現(xiàn)方法

全部代碼

Option Explicit

Sub 打印預(yù)覽()

Dim n As Integer

Dim sh As Worksheet

Set sh = Sheets("發(fā)貨單")

n = sh.Range("C65536").End(xlUp).Row

sh.PageSetup.PrintArea = "$C$1:$K$12"

sh.PrintPreview

End Sub

強(qiáng)制聲明變更

Option Explicit

作用:在模塊級(jí)別中使用,強(qiáng)制顯示聲明模塊中的所有變量,所有變量只有聲明后才能使用。這樣可以避免變量因名稱拼寫(xiě)等錯(cuò)誤帶來(lái)的結(jié)果錯(cuò)誤,并且“Option Explicit”可以加快程序的運(yùn)行速度,它節(jié)省了在程序運(yùn)行時(shí)動(dòng)態(tài)分配變量存儲(chǔ)空間的時(shí)間。

模塊結(jié)構(gòu)

sub sub_name()

End Sub

sub_name 可以自己命名,中英均可,簡(jiǎn)單明了最好,但個(gè)人認(rèn)為英文比較方便,推薦用駝峰命名法命名,但名字不能與其他模塊重復(fù)。

定義變量及賦值

Dim n As Integer

Dim sh As Worksheet

Set sh = Sheets("發(fā)貨單")

n = sh.Range("C65536").End(xlUp).Row

這里需要說(shuō)明一下的是對(duì)于對(duì)象的賦值前面要寫(xiě)上Set,例如,Set sh = Sheets("發(fā)貨單")。

n = sh.Range("C65536").End(xlUp).Row

這句話表示C列最后一行的行號(hào)

sh.PageSetup.PrintArea = "$C$1:$K$12"

sh.PrintPreview

這句話就是設(shè)置要打印的區(qū)域,上面代碼表示C1:K12的區(qū)域。

效果如下圖:

圖4打印區(qū)域

圖5預(yù)覽圖

2、另存為PDF模塊實(shí)現(xiàn)方法

先看代碼:

Option Explicit

Sub SaveasPDF()

'發(fā)貨單

Dim name1 As String

Dim name2 As String

Dim paths As String

Dim date1 As Date

Dim sh As Worksheet

Set sh = Sheets("發(fā)貨單")

name1 = Range("G2").Value

name2 = Range("J2").Value

paths = "D:\Documents\"

date1 = Date

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

sh.PageSetup.PrintArea = "$C$1:$K$12"

sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=paths & name1 & "-" & name2 & Format(date1, "mm-dd-yyyy"), openafterpublish:=True

Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

set sh=Nothing

End Sub

上面的代碼大致分為五部分:

定義變量

Dim name1 As String

Dim name2 As String

Dim paths As String

Dim date1 As Date

Dim sh As Worksheet

變量賦值

Set sh = Sheets("發(fā)貨單")

name1 = Range("G2").Value

name2 = Range("J2").Value

paths = "D:\Documents\"

date1 = Date

關(guān)閉屏幕刷新和自動(dòng)計(jì)算

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

'模塊代碼放在其中以提高運(yùn)行速度

關(guān)鍵代碼

sh.PageSetup.PrintArea = "$C$1:$K$12"

sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=paths & name1 & "-" & name2 & Format(date1, "mm-dd-yyyy"), openafterpublish:=True

其中,Type:=xlTypePDF 表示輸出文檔的類型,這里是PDF格式。

Filename:=paths & name1 & "-" & name2 & Format(date1, "mm-dd-yyyy") 表示設(shè)置文檔另存為的路徑。變量與字符串之間用&號(hào)連接。

openafterpublish:=True表示是否打開(kāi)文檔,True表示打開(kāi),F(xiàn)alse表示不打開(kāi)。

代碼結(jié)尾

set sh=Nothing

設(shè)置的對(duì)象最后記得這樣設(shè)置一下,以釋放內(nèi)存。

Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

前面關(guān)閉了屏幕刷新和自動(dòng)計(jì)算,最后記得打開(kāi)喲!

3、一鍵生成發(fā)貨單——發(fā)貨單模塊

Option Explicit

Sub 發(fā)貨單()

Dim i As Integer

Dim k As Integer

Dim irow As Integer

Dim sh1 As Worksheet

Dim sh2 As Worksheet

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

Set sh1 = Sheets("成品出庫(kù)")

Set sh2 = Sheets("發(fā)貨單")

If sh2.Range("B13").Value = "" Then

MsgBox "Please input customer Order NO."

sh2.Range("A2:K12").ClearContents

Exit Sub

End If

irow = sh1.Range("B65536").End(xlUp).Row

sh2.Range("A2:K12").ClearContents

sh2.Cells(2, "C").Value = "ORDER NO."

sh2.Cells(2, "E").Value = "CUSTOMER"

sh2.Range("A3:k3").Value = Array("description", "NO.", "product", "description", "規(guī)格", "件數(shù)", "QTY", "UNIT", "U/P", "貨款", "remark")

k = 4

For i = 2 To irow

If sh1.Range("B" & i).Value = sh2.Range("B13").Value Then

sh2.Cells(k, "B") = k - 3

sh2.Cells(2, "D").Value = Format(Date, "yymmdd") & Format(sh2.Range("B13"), "000")

sh2.Cells(2, "F").Value = sh1.Range("B" & i).Offset(0, 5)

sh2.Cells(2, "G").Value = sh1.Range("B" & i).Offset(0, 1)

sh2.Cells(2, "K").Value = Date

sh2.Cells(2, "H").Value = sh1.Range("B" & i).Offset(0, 2)

sh2.Range("A" & k).Value = sh1.Range("B" & i).Offset(0, 8).Value

sh2.Range("C" & k).Value = sh1.Range("I" & i).Value

sh2.Range("D" & k).Value = sh1.Range("B" & i).Offset(0, 9).Value

sh2.Range("E" & k).Value = sh1.Range("B" & i).Offset(0, 10).Value

sh2.Range("F" & k).Value = sh1.Range("N" & i).Value

sh2.Range("G" & k).Value = sh1.Range("B" & i).Offset(0, 13).Value

sh2.Range("H" & k).Value = sh1.Range("T" & i)

sh2.Range("I" & k).Value = sh1.Range("U" & i)

sh2.Range("J" & k).Value = sh2.Range("G" & k) * sh2.Range("I" & k)

sh2.Range("K" & k).Value = sh1.Range("Y" & i)

sh2.Cells(10, "B") = "TOTAL"

sh2.Cells(10, "C") = "合計(jì)"

sh2.Cells(10, "F") = Application.WorksheetFunction.Sum(Range("F4:F9"))

sh2.Cells(10, "G") = Application.WorksheetFunction.Sum(Range("G4:G9"))

sh2.Cells(10, "J") = Application.WorksheetFunction.Sum(Range("J4:J9"))

sh2.Cells(11, "C") = "PREPARED BY"

sh2.Cells(11, "D") = "WangYongjie"

sh2.Cells(12, "C") = "運(yùn)輸費(fèi)"

sh2.Cells(12, "D") = sh1.Range("W" & i)

sh2.Cells(12, "I") = "司機(jī)簽字DRIVER SIGNATURE"

sh2.Cells(11, "F") = "CHECKED BY"

sh2.Cells(11, "I") = "APROVED BY"

sh2.Cells(11, "J") = sh1.Range("B" & i).Offset(0, 6).Value

k = k + 1

End If

Next i

If sh2.Range("D2").Value = "" Then

sh2.Range("F7").Value = "Nothing was found"

End If

Set sh1 = Nothing

Set sh2 = Nothing

Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

End Sub

上面代碼主要使用了if判斷語(yǔ)句和for循環(huán)語(yǔ)句,學(xué)過(guò)C語(yǔ)言入門(mén)的都能明白,這里不在詳細(xì)解釋,其他語(yǔ)句前面的模塊中已經(jīng)進(jìn)行了說(shuō)明,也不用再說(shuō)明。

代碼已經(jīng)寫(xiě)好,剩下的就是插入按鈕,并設(shè)置運(yùn)行的模塊,點(diǎn)擊即可執(zhí)行。這里想說(shuō)明一點(diǎn)的是我的工作表中并沒(méi)有一鍵生成發(fā)貨單的按鈕,那么我是如何一鍵生成發(fā)貨單的呢?

請(qǐng)看下圖的設(shè)置:

圖6 change事件

這里使用了worksheet的change事件,這個(gè)事件的意思是當(dāng)worksheet發(fā)生變化的時(shí)候,執(zhí)行其中的代碼。這里的代碼表示shee9(發(fā)貨單)的B13單元格發(fā)生變化時(shí),調(diào)用發(fā)貨單模塊。

好了,本期就講到這里,如有不妥或不明白之處,歡迎留言、評(píng)論,當(dāng)然也歡迎大家點(diǎn)贊、收藏、轉(zhuǎn)發(fā),讓更多的人領(lǐng)略Excel VBA數(shù)據(jù)處理的快樂(lè)。


活到老學(xué)到老之VBA 入門(mén)一定要懂

原創(chuàng)2022-06-29 14:27·WarAndPeace

在職場(chǎng)上經(jīng)常要求能夠熟練使用Excel處理數(shù)據(jù),對(duì)于經(jīng)常處理數(shù)據(jù)的人來(lái)說(shuō),這三種語(yǔ)言一定要學(xué),而且入門(mén)很簡(jiǎn)單,根本沒(méi)有你想象的那么難,關(guān)鍵是要認(rèn)真地邁步第一步。

本教程所使用的系統(tǒng)環(huán)境:

win7

Excel2007

1、啟用開(kāi)發(fā)工具 打開(kāi)一個(gè)Excel文件,點(diǎn)擊下圖紅框所示按鈕。

2、勾選如下圖紅框所示的選項(xiàng),確定

3、點(diǎn)擊確定后,工具欄中會(huì)出現(xiàn)如下圖所示的開(kāi)發(fā)工具選項(xiàng)。

4、按下圖所示點(diǎn)擊打開(kāi) Visual Basic 編輯器

5、再依次點(diǎn)擊插入-模塊,如下圖所示

6、第一個(gè)代碼-Hello world!

在A1單元格輸出:Hello world!

代碼如下圖:

寫(xiě)好后按F5運(yùn)行,或點(diǎn)擊如圖所示按鈕

運(yùn)行后效果:

上面的效果也可以這樣寫(xiě):

Cells(1, 1).Value = "Hello world !"

這是兩種單元格賦值的方法。

7、代碼注釋

用英文單引號(hào)或rem開(kāi)頭。

到此,你已經(jīng)進(jìn)入了VBA高效處理Excel的大門(mén),祝你入門(mén)順利,歡迎點(diǎn)贊、關(guān)注、收藏、轉(zhuǎn)發(fā)和評(píng)論,讓我們一起領(lǐng)略VBA的風(fēng)采。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Access,word,excel之間的數(shù)據(jù)傳遞
如何利用VBA自動(dòng)生成PPT報(bào)告
Excel 如何使用VBA實(shí)現(xiàn)
Excel找出兩列相同值的VBA宏代碼
自學(xué)資料(Excel VBA)[收集整理15]
搜集各種Excel VBA的命令供參考!
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服