色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

VBA編程中Nothing、Empty、Null與Error的深度解析與實(shí)戰(zhàn)應(yīng)用

VBA編程中Nothing、Empty、Null與Error的深度解析與實(shí)戰(zhàn)應(yīng)用 1. 項(xiàng)目概述為什么VBA里的“空”這么讓人頭疼干了這么多年VBA開發(fā)我敢說至少有30%的調(diào)試時(shí)間都花在和“空值”較勁上。新手寫代碼最怕的就是彈出一個(gè)“運(yùn)行時(shí)錯(cuò)誤‘91’對(duì)象變量或With塊變量未設(shè)置”或者明明看著單元格是空的用If Range(“A1”) “”判斷卻死活不對(duì)。這背后就是VBA里那幾個(gè)看似簡單實(shí)則各有各的“脾氣”的空值關(guān)鍵字在作祟Nothing、Empty、Null還有那個(gè)經(jīng)常被誤會(huì)的Error。這些東西官方文檔講得比較分散和理論化而實(shí)際開發(fā)中它們的區(qū)別直接關(guān)系到程序是穩(wěn)定運(yùn)行還是瞬間崩潰。比如你用Set了一個(gè)對(duì)象后來想釋放它是該用Set obj Nothing還是Set obj Empty從數(shù)據(jù)庫里讀出一個(gè)字段值是Null你直接把它賦值給一個(gè)變量后續(xù)計(jì)算會(huì)不會(huì)報(bào)錯(cuò)一個(gè)函數(shù)可能因?yàn)楦鞣N原因失敗你是返回一個(gè)特定的Error值還是干脆讓程序彈窗報(bào)錯(cuò)這些選擇每一天都在考驗(yàn)著VBA開發(fā)者的基本功。今天我就結(jié)合自己踩過的無數(shù)個(gè)坑把這幾個(gè)概念掰開揉碎了講清楚。這不是語法教科書而是一份來自一線的“避坑指南”。無論你是剛接觸VBA想弄明白If rs.EOF Then和If rs Is Nothing Then到底有什么區(qū)別還是已經(jīng)寫了幾年代碼想更優(yōu)雅地處理各種邊界情況這篇文章里的內(nèi)容都能讓你少走彎路。我們會(huì)從它們最本質(zhì)的定義出發(fā)用大量實(shí)際的代碼片段和場景模擬讓你不僅知道每個(gè)關(guān)鍵字是什么更明白在什么情況下該用誰以及用錯(cuò)了會(huì)怎么樣。2. 核心概念深度辨析四種“空”的本質(zhì)與差異理解這幾個(gè)關(guān)鍵字絕對(duì)不能死記硬背。你必須把它們放到VBA這個(gè)特定的“生態(tài)系統(tǒng)”里看它們各自扮演什么角色。我們可以從兩個(gè)最根本的維度來區(qū)分它們數(shù)據(jù)類型和適用場景。Nothing是給對(duì)象Object準(zhǔn)備的“空”Empty是給變體Variant變量在未賦值時(shí)的默認(rèn)狀態(tài)Null是一個(gè)特殊的Variant子類型專門表示“未知數(shù)據(jù)”或“不含有效數(shù)據(jù)”而Error則是Variant的另一個(gè)子類型但它包裹的是一個(gè)錯(cuò)誤號(hào)用于錯(cuò)誤處理流程。2.1 Nothing對(duì)象的“身份證注銷”Nothing這個(gè)關(guān)鍵字是VBA中對(duì)象引用的專屬“空值”。你可以把它理解為一個(gè)對(duì)象變量的“復(fù)位鍵”。當(dāng)一個(gè)對(duì)象變量被聲明后例如Dim ws As Worksheet它實(shí)際上還沒有指向任何具體的對(duì)象這時(shí)它的值是Nothing。當(dāng)你用Set關(guān)鍵字讓它指向一個(gè)實(shí)際對(duì)象如Set ws ThisWorkbook.Worksheets(“Sheet1”)后它就不再是Nothing了。最后當(dāng)你不再需要這個(gè)對(duì)象或者想釋放它時(shí)你就用Set ws Nothing來切斷這個(gè)引用。注意Set ws Nothing并不意味著銷毀了那個(gè)Worksheet對(duì)象本身Excel還開著Sheet1當(dāng)然還在。它只是銷毀了ws這個(gè)變量對(duì)那個(gè)對(duì)象的“引用鏈接”。如果這是指向那個(gè)對(duì)象的最后一個(gè)引用VBA的垃圾回收機(jī)制會(huì)在后續(xù)某個(gè)時(shí)間點(diǎn)清理該對(duì)象占用的內(nèi)存。但對(duì)于Excel這類宿主應(yīng)用程序的對(duì)象其生命周期主要由宿主管理。核心判斷方法使用Is運(yùn)算符。這是唯一正確判斷一個(gè)對(duì)象變量是否為Nothing的方法。Dim coll As Collection If coll Is Nothing Then MsgBox “變量coll尚未被Set為一個(gè)具體的Collection對(duì)象?!?End If Set coll New Collection ‘ 此時(shí) coll Is Nothing 為 False Set coll Nothing ‘ 此時(shí) coll Is Nothing 又變回 True最常見的坑試圖使用一個(gè)為Nothing的對(duì)象變量。這會(huì)導(dǎo)致“運(yùn)行時(shí)錯(cuò)誤‘91’”。Dim ws As Worksheet ‘ ... 假設(shè)忘記執(zhí)行 Set ws ... ws.Name “Test” ‘ 錯(cuò)誤ws是Nothing沒有具體的對(duì)象可以操作。2.2 Empty變體變量的“出廠設(shè)置”Empty是變體Variant數(shù)據(jù)類型變量在聲明后、首次賦值前的默認(rèn)值。它是一種特殊的Variant子類型vbEmpty。關(guān)鍵點(diǎn)在于Empty是一個(gè)值它表示“尚未初始化”而不是“沒有值”或“錯(cuò)誤的值”。一旦你給一個(gè)Variant變量賦了任何值哪怕是0、空字符串””或Null它的Empty狀態(tài)就消失了。核心特性在數(shù)值上下文中為0在字符串上下文中為空字符串””。這是Empty最“狡猾”的地方它會(huì)在參與運(yùn)算時(shí)自動(dòng)進(jìn)行類型轉(zhuǎn)換。Dim varValue As Variant ‘ 聲明后varValue 為 Empty Debug.Print varValue ‘ 立即窗口顯示“”空 Debug.Print varValue 10 ‘ 輸出 10 (Empty被當(dāng)作0) Debug.Print “Value: “ varValue ‘ 輸出 “Value: “ (Empty被當(dāng)作””) varValue “Hello” ‘ 現(xiàn)在 varValue 是字符串子類型vbString不再是Empty。如何判斷Empty使用IsEmpty()函數(shù)。Dim varTest As Variant If IsEmpty(varTest) Then ‘ 返回 True Debug.Print “變量是Empty” End If varTest Null If IsEmpty(varTest) Then ‘ 返回 FalseNull不是Empty。 Debug.Print “這行不會(huì)執(zhí)行” End If與空字符串””的區(qū)別這是另一個(gè)高頻混淆點(diǎn)。一個(gè)單元格被手動(dòng)清空內(nèi)容按Delete鍵后其.Value屬性通常是Empty對(duì)于Variant類型Range.Value。而如果一個(gè)單元格輸入了一個(gè)等號(hào)公式但公式返回空字符串””那么其.Value就是空字符串””而不是Empty。用IsEmpty()函數(shù)可以清晰地區(qū)分它們。2.3 Null數(shù)據(jù)庫世界的“未知數(shù)”Null是一個(gè)Variant子類型vbNull它表示未知的、不存在的或不適用的數(shù)據(jù)。這個(gè)概念在數(shù)據(jù)庫領(lǐng)域至關(guān)重要。在VBA中Null主要出現(xiàn)在與數(shù)據(jù)庫如ADO、DAO記錄集交互時(shí)或者某些可能返回Null的API函數(shù)中。核心特性任何涉及Null的表達(dá)式結(jié)果都是Null傳播性。這是Null最需要警惕的特性也被稱為“Null的傳播”。Dim varNum As Variant varNum Null Debug.Print varNum 5 ‘ 輸出 Null Debug.Print “Text: “ varNum ‘ 輸出 Null Debug.Print varNum Null ‘ 輸出 Null (注意不是True) Debug.Print varNum Null ‘ 輸出 Null (也不是False)看到了嗎最后兩行是巨坑你不能直接用等號(hào)或不等號(hào)來判斷一個(gè)值是否為Null因?yàn)楸容^的結(jié)果本身也是Null在If語句中Null被視作False但這會(huì)導(dǎo)致邏輯混亂。如何判斷Null必須使用IsNull()函數(shù)。Dim varData As Variant varData Null If IsNull(varData) Then ‘ 正確返回 True Debug.Print “變量是Null” End If If varData Null Then ‘ 錯(cuò)誤這個(gè)條件永遠(yuǎn)無法被滿足結(jié)果為Null即False。 Debug.Print “這行永遠(yuǎn)不會(huì)執(zhí)行” End If與Empty的對(duì)比Empty是VBA變量的初始狀態(tài)而Null通常表示從外部如數(shù)據(jù)庫獲取的、有意義的數(shù)據(jù)缺失狀態(tài)。IsEmpty(Null)返回FalseIsNull(Empty)也返回False它們是兩個(gè)完全不同的概念。2.4 Error不是錯(cuò)誤的“錯(cuò)誤值”Error是一個(gè)特殊的Variant子類型vbError它包含一個(gè)錯(cuò)誤號(hào)。它并不是一個(gè)運(yùn)行時(shí)錯(cuò)誤不會(huì)中斷代碼執(zhí)行而是一個(gè)可以像普通值一樣存儲(chǔ)、傳遞的“錯(cuò)誤標(biāo)識(shí)符”。它通常由某些函數(shù)在內(nèi)部出錯(cuò)時(shí)返回而不是通過Err.Raise拋出異常。最常見的來源CVErr()函數(shù)。你可以用它將一個(gè)錯(cuò)誤號(hào)轉(zhuǎn)換成一個(gè)Error值。Dim varResult As Variant varResult CVErr(11) ‘ 11 對(duì)應(yīng)錯(cuò)誤“被零除” If IsError(varResult) Then ‘ 使用IsError()函數(shù)判斷 Debug.Print “變量包含一個(gè)錯(cuò)誤值錯(cuò)誤號(hào)是” CLng(varResult) End If核心用途在自定義函數(shù)中當(dāng)遇到特定計(jì)算錯(cuò)誤如參數(shù)無效、除零時(shí)不直接彈出錯(cuò)誤中斷用戶而是返回一個(gè)Error值讓調(diào)用者自己決定如何處理。Function SafeDivide(num1 As Double, num2 As Double) As Variant If num2 0 Then SafeDivide CVErr(11) ‘ 返回“被零除”錯(cuò)誤值 Else SafeDivide num1 / num2 End If End Function Sub Test() Dim v As Variant v SafeDivide(10, 0) If IsError(v) Then MsgBox “計(jì)算出錯(cuò)無法進(jìn)行除法?!?Else MsgBox “結(jié)果是” v End If End Sub與運(yùn)行時(shí)錯(cuò)誤的區(qū)別Error值是一個(gè)“安靜”的錯(cuò)誤指示器。而Err對(duì)象如Err.Number是在運(yùn)行時(shí)錯(cuò)誤發(fā)生并被捕獲后用于獲取錯(cuò)誤信息的。你可以通過CVErr(Err.Number)將捕獲的錯(cuò)誤轉(zhuǎn)換為Error值進(jìn)行傳遞。3. 實(shí)戰(zhàn)場景與應(yīng)用技巧如何正確使用與判斷理論講完了我們進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。知道它們是什么只是第一步更重要的是在代碼里用對(duì)地方。下面我通過幾個(gè)最常見的開發(fā)場景展示如何精準(zhǔn)地使用和判斷這些關(guān)鍵字。3.1 場景一安全地操作對(duì)象處理Nothing當(dāng)你編寫一個(gè)函數(shù)需要接收一個(gè)工作表對(duì)象作為參數(shù)時(shí)防御性編程至關(guān)重要。Sub ProcessWorksheet(ByRef ws As Worksheet) ‘ 第一步永遠(yuǎn)先檢查對(duì)象是否為Nothing If ws Is Nothing Then MsgBox “未提供有效的工作表對(duì)象?!? vbExclamation Exit Sub End If ‘ 第二步進(jìn)一步檢查對(duì)象是否“存活”對(duì)于某些可能已被刪除的對(duì)象 On Error Resume Next Dim nameTest As String nameTest ws.Name ‘ 嘗試訪問一個(gè)屬性如果對(duì)象無效會(huì)出錯(cuò) If Err.Number 0 Then MsgBox “工作表對(duì)象可能已被刪除或無效?!? vbCritical Exit Sub End If On Error GoTo 0 ‘ 安全地使用對(duì)象 ws.Range(“A1”).Value “處理開始” ‘ … 其他操作 … End Sub ‘ 調(diào)用示例 Sub Caller() Dim mySheet As Worksheet ‘ 情況1忘記Set ProcessWorksheet mySheet ‘ 將觸發(fā)“未提供有效對(duì)象”的提示 ‘ 情況2正常Set Set mySheet ThisWorkbook.Worksheets(“Sheet1”) ProcessWorksheet mySheet ‘ 正常執(zhí)行 ‘ 情況3Set為Nothing后 Set mySheet Nothing ProcessWorksheet mySheet ‘ 將觸發(fā)“未提供有效對(duì)象”的提示 End Sub實(shí)操心得對(duì)于任何可能來自外部輸入或動(dòng)態(tài)生成的對(duì)象參數(shù)在函數(shù)內(nèi)部開頭進(jìn)行Is Nothing檢查是一個(gè)必須養(yǎng)成的好習(xí)慣。這能避免90%以上的“錯(cuò)誤91”。3.2 場景二處理單元格數(shù)據(jù)區(qū)分Empty、””、Null從Excel單元格讀取數(shù)據(jù)是VBA的日常。一個(gè)單元格可能包含多種“空”狀態(tài)。Sub CheckCellValue() Dim rng As Range Set rng ThisWorkbook.Worksheets(“Data”).Range(“A1”) Dim cellValue As Variant ‘ 必須用Variant接收因?yàn)?Value可能返回多種類型 cellValue rng.Value ‘ 判斷邏輯鏈順序很重要 If IsError(cellValue) Then ‘ 單元格是錯(cuò)誤值如#N/A, #DIV/0! MsgBox “單元格包含錯(cuò)誤” CStr(cellValue) ElseIf IsNull(cellValue) Then ‘ 通常來自數(shù)據(jù)庫查詢Excel單元格直接輸入Null的情況較少 MsgBox “單元格值為Null未知數(shù)據(jù)” ‘ 處理Null例如賦予默認(rèn)值 cellValue 0 ElseIf IsEmpty(cellValue) Then ‘ 單元格從未被輸入過內(nèi)容真正的“空”單元格 MsgBox “單元格為Empty未初始化” ‘ 可以將其視為0或空字符串處理 cellValue “” ElseIf cellValue “” Then ‘ 單元格內(nèi)容是一個(gè)空字符串例如公式 ”” MsgBox “單元格是空字符串”” ‘ 按空字符串處理 Else ‘ 單元格有實(shí)際內(nèi)容數(shù)字、文本、日期等 MsgBox “單元格值為” cellValue End If End Sub注意事項(xiàng)判斷順序有講究。IsError應(yīng)該放在最前面因?yàn)橐粋€(gè)Error值用IsNull或IsEmpty判斷也會(huì)返回False但它的本質(zhì)是錯(cuò)誤。其次判斷IsNull再判斷IsEmpty。最后判斷空字符串””。因?yàn)橐粋€(gè)Empty值在比較””時(shí)結(jié)果為TrueEmpty在字符串上下文中轉(zhuǎn)換為””所以如果你先判斷””就會(huì)把Empty也當(dāng)成空字符串從而無法區(qū)分兩者。3.3 場景三與數(shù)據(jù)庫交互Null的專項(xiàng)處理從ADO記錄集Recordset中讀取數(shù)據(jù)是Null出現(xiàn)的主戰(zhàn)場。Sub ReadFromDatabase() Dim conn As Object, rs As Object Dim employeeName As Variant, salary As Variant ‘ … 假設(shè)已建立連接并打開記錄集 … While Not rs.EOF ‘ 讀取字段值可能為Null employeeName rs.Fields(“Name”).Value salary rs.Fields(“Salary”).Value ‘ 處理可能為Null的字段 Dim displayName As String If IsNull(employeeName) Then displayName “[姓名未知]” Else displayName CStr(employeeName) End If Dim displaySalary As String If IsNull(salary) Then displaySalary “[薪資未錄入]” Else ‘ 注意即使不是Null也要小心類型可能數(shù)據(jù)庫中是DecimalVBA中最好用CDbl轉(zhuǎn)換 displaySalary Format(CDbl(salary), “#,##0.00”) End If Debug.Print displayName “: “ displaySalary rs.MoveNext Wend ‘ … 關(guān)閉記錄集和連接 … End Sub更安全的寫法使用Nz函數(shù)如果可用在Access VBA或某些庫中有一個(gè)非常方便的Nz()函數(shù)它可以將Null轉(zhuǎn)換為指定的默認(rèn)值。在純Excel VBA中我們可以自己實(shí)現(xiàn)一個(gè)Function Nz(ByVal Value As Variant, Optional ByVal ValueIfNull As Variant “”) As Variant ‘ 模擬Access的Nz函數(shù) If IsNull(Value) Then Nz ValueIfNull Else Nz Value End If End Function ‘ 使用方式 salary Nz(rs.Fields(“Salary”).Value, 0) ‘ 如果為Null則返回0這個(gè)自定義的Nz函數(shù)能極大簡化代碼避免到處都是If IsNull(...) Then的判斷。3.4 場景四構(gòu)建健壯的自定義函數(shù)利用Error假設(shè)我們要寫一個(gè)查找函數(shù)當(dāng)找不到時(shí)不返回0或空字符串這可能與有效數(shù)據(jù)沖突而是返回一個(gè)錯(cuò)誤值。Function VLookupSafe(lookupValue As Variant, tableRange As Range, colIndex As Long) As Variant ‘ 增強(qiáng)版的VLOOKUP找不到時(shí)返回錯(cuò)誤值#N/A而不是報(bào)錯(cuò) On Error Resume Next ‘ 屏蔽VLOOKUP本身的錯(cuò)誤 Dim result As Variant result Application.WorksheetFunction.VLookup(lookupValue, tableRange, colIndex, False) If Err.Number 0 Then ‘ 如果出錯(cuò)通常是找不到清除錯(cuò)誤返回CVErr(2042)對(duì)應(yīng)#N/A Err.Clear VLookupSafe CVErr(2042) Else VLookupSafe result End If On Error GoTo 0 End Function Sub TestLookup() Dim dataRange As Range Set dataRange ThisWorkbook.Worksheets(“LookupTable”).Range(“A:B”) Dim searchKey As String searchKey “SomeKey” Dim foundValue As Variant foundValue VLookupSafe(searchKey, dataRange, 2) If IsError(foundValue) Then If foundValue CVErr(2042) Then MsgBox “未找到關(guān)鍵字” searchKey Else MsgBox “查找過程中發(fā)生其他錯(cuò)誤。” End If Else MsgBox “找到的值為” foundValue End If End Sub技巧使用CVErr(2042)來模擬Excel內(nèi)置的#N/A錯(cuò)誤這樣你的函數(shù)返回值可以與Excel原生函數(shù)的行為保持一致調(diào)用者也可以用IsError()和IsNA()在VBA中是WorksheetFunction.IsNA來統(tǒng)一處理。4. 混合場景與高級(jí)陷阱當(dāng)它們同時(shí)出現(xiàn)時(shí)真實(shí)的代碼往往更復(fù)雜這些“空值”可能會(huì)在同一個(gè)邏輯流里交織出現(xiàn)。處理不當(dāng)就會(huì)掉進(jìn)深坑。4.1 陷阱一在集合或字典中查找可能為Null的鍵VBA的Scripting.Dictionary和Collection對(duì)象其鍵Key不能是Null。嘗試添加Null作為鍵會(huì)引發(fā)錯(cuò)誤。Sub DictionaryWithNullKey() Dim dict As Object Set dict CreateObject(“Scripting.Dictionary”) Dim keyValue As Variant keyValue Null On Error Resume Next dict.Add keyValue, “SomeData” ‘ 這里會(huì)出錯(cuò) If Err.Number 0 Then Debug.Print “錯(cuò)誤不能使用Null作為字典的鍵。” End If On Error GoTo 0 ‘ 解決方案在添加前轉(zhuǎn)換Null dict.Add Nz(keyValue, “[NULL]”), “SomeData” ‘ 使用之前定義的Nz函數(shù) End Sub教訓(xùn)任何要將值用作唯一標(biāo)識(shí)符如字典的鍵、集合的查找依據(jù)的場景都必須先對(duì)值進(jìn)行“清洗”將Null轉(zhuǎn)換為一個(gè)唯一的占位符如字符串”[NULL]”。4.2 陷阱二將對(duì)象、Empty、Null傳遞給可選參數(shù)VBA支持可選參數(shù)Optional并且可以指定默認(rèn)值。但這里有個(gè)細(xì)微差別。Sub TestOptionalParam(Optional ByVal param As Variant Empty) Debug.Print “參數(shù)類型” VarType(param) “, IsEmpty: “ IsEmpty(param) End Sub Sub Caller() TestOptionalParam ‘ 不傳參param將是真正的Empty TestOptionalParam Null ‘ 顯式傳入Nullparam將是Null不是Empty TestOptionalParam Nothing ‘ 傳入Nothingparam是一個(gè)包含Nothing的VariantVarType為9(vbObject) End Sub如果你在函數(shù)內(nèi)部期待一個(gè)Empty值作為“未提供參數(shù)”的標(biāo)志那么調(diào)用者顯式傳入Null就會(huì)破壞這個(gè)邏輯。更安全的做法是使用IsMissing關(guān)鍵字僅對(duì)Variant類型且未指定默認(rèn)值的參數(shù)有效或定義一個(gè)特殊常量來標(biāo)識(shí)“未提供”。Sub SaferOptional(Optional ByVal param As Variant) If IsMissing(param) Then Debug.Print “參數(shù)未提供” ElseIf IsNull(param) Then Debug.Print “參數(shù)被顯式指定為Null” Else Debug.Print “參數(shù)值為” param End If End Sub4.3 陷阱三在數(shù)組和用戶自定義類型Type中數(shù)組元素和用戶自定義類型的字段其“空”狀態(tài)取決于它們的數(shù)據(jù)類型。Variant數(shù)組每個(gè)元素初始為Empty。對(duì)象數(shù)組每個(gè)元素初始為Nothing。數(shù)值/字符串?dāng)?shù)組每個(gè)元素初始為該類型的默認(rèn)值0、””等。用戶自定義類型數(shù)值字段為0字符串字段為””對(duì)象字段為NothingVariant字段為Empty。這里沒有Null的默認(rèn)位置除非你顯式賦值。但當(dāng)你從數(shù)據(jù)庫讀取一整條記錄到一個(gè)Variant數(shù)組時(shí)數(shù)據(jù)庫中的Null值會(huì)被保留到數(shù)組的對(duì)應(yīng)元素中。Sub ArrayWithNull() Dim dataFromDB As Variant ‘ 假設(shè)rs.GetRows返回的記錄集中有Null dataFromDB rs.GetRows Dim i As Long For i LBound(dataFromDB, 2) To UBound(dataFromDB, 2) If IsNull(dataFromDB(0, i)) Then ‘ 檢查第一列是否為Null ‘ 處理Null值 dataFromDB(0, i) “[NULL]” End If Next i End Sub5. 調(diào)試與排查如何快速定位“空值”相關(guān)錯(cuò)誤當(dāng)程序因?yàn)榭罩祮栴}崩潰或行為異常時(shí)如何快速定位以下是我常用的調(diào)試流程和技巧。5.1 錯(cuò)誤“91”對(duì)象變量未設(shè)置這是最經(jīng)典的空值錯(cuò)誤。排查步驟定位出錯(cuò)行啟用“發(fā)生錯(cuò)誤則中斷”的調(diào)試模式VBE中工具 - 選項(xiàng) - 通用 - 錯(cuò)誤捕獲 - 遇到未處理的錯(cuò)誤時(shí)中斷。檢查對(duì)象變量將鼠標(biāo)懸停在出錯(cuò)行涉及的所有對(duì)象變量上查看提示是否為“Nothing”?;厮葙x值路徑檢查該對(duì)象變量在何處被Set。常見原因?qū)ο髣?chuàng)建失敗如Set ws Worksheets(“不存在的表”)。對(duì)象已被釋放或關(guān)閉如記錄集rs在調(diào)用.Close后未置為Nothing但后續(xù)又誤用。邏輯分支遺漏在If或Select Case的某個(gè)分支里忘記Set對(duì)象。使用立即窗口在中斷模式下在立即窗口輸入?objVar Is Nothing來快速驗(yàn)證。5.2 邏輯錯(cuò)誤判斷條件失效程序沒報(bào)錯(cuò)但結(jié)果不對(duì)往往是Null或Empty的判斷邏輯出了問題?!?有問題的代碼 If rs.Fields(“Amount”).Value 0 Then ‘ 如果Amount字段在數(shù)據(jù)庫中是Null這個(gè)條件會(huì)得到Null在If中相當(dāng)于False導(dǎo)致邏輯跳過。 ‘ 本意是想排除0值結(jié)果連Null也排除了。 End If ‘ 正確的代碼 Dim amountVal As Variant amountVal rs.Fields(“Amount”).Value If Not IsNull(amountVal) Then If amountVal 0 Then ‘ … 處理非零且非Null的值 … End If End If調(diào)試技巧在懷疑的判斷語句前使用Debug.Print輸出關(guān)鍵變量的值和類型。Debug.Print “amountVal: “; amountVal; “, Type: “; VarType(amountVal); “, IsNull: “; IsNull(amountVal)VarType函數(shù)會(huì)返回一個(gè)數(shù)字如0表示Empty1表示Null8表示字符串等等這是判斷變量當(dāng)前子類型最直接的方法。5.3 數(shù)據(jù)傳遞錯(cuò)誤函數(shù)返回值異常自定義函數(shù)返回了意想不到的Empty、Null或Error。檢查所有退出路徑確保函數(shù)在所有可能的邏輯分支包括If...Else、Select Case、錯(cuò)誤處理Exit Function中都對(duì)返回值進(jìn)行了賦值。初始化返回值在函數(shù)開頭將返回變量設(shè)為一個(gè)明確的初始值如0、””或Empty這是一個(gè)好習(xí)慣。使用類型更嚴(yán)格的返回值如果函數(shù)邏輯上不可能返回Null或Error考慮將返回類型聲明為具體的類型如Double、String而不是Variant。這樣VBA會(huì)在返回時(shí)進(jìn)行類型檢查有時(shí)能提前發(fā)現(xiàn)問題。但要注意如果函數(shù)內(nèi)部計(jì)算可能產(chǎn)生Null賦給一個(gè)String變量會(huì)導(dǎo)致類型不匹配錯(cuò)誤。6. 性能與最佳實(shí)踐寫出更健壯的代碼理解了概念避開了陷阱最后我們聊聊如何從代碼設(shè)計(jì)和習(xí)慣上根本性地減少空值帶來的煩惱。6.1 變量聲明與初始化策略對(duì)象變量聲明時(shí)即為Nothing。在使用前養(yǎng)成先判斷再使用的習(xí)慣。對(duì)于可能為Nothing的傳入?yún)?shù)在過程開頭進(jìn)行防御性檢查。Variant變量如果用于接收可能為Null或Empty的外部數(shù)據(jù)如單元格值、數(shù)據(jù)庫字段保持為Variant類型。如果用于內(nèi)部計(jì)算應(yīng)盡早轉(zhuǎn)換為具體類型并處理空值?!?好的做法 Dim rawInput As Variant rawInput Range(“A1”).Value Dim processedValue As Double If IsNumeric(rawInput) Then ‘ IsNumeric對(duì)Empty返回True視為0對(duì)Null返回False processedValue CDbl(rawInput) Else processedValue 0 ‘ 或根據(jù)業(yè)務(wù)邏輯處理 End If ‘ 后續(xù)計(jì)算全部使用processedValue它是確定性的Double類型。具體類型變量String, Long, Double等它們沒有Empty或Null狀態(tài)。如果你嘗試將Null賦給它們會(huì)得到“無效使用Null”的錯(cuò)誤。因此從可能為Null的源如數(shù)據(jù)庫賦值時(shí)必須用IsNull保護(hù)。6.2 函數(shù)與API設(shè)計(jì)建議明確契約在函數(shù)注釋中清晰說明參數(shù)是否可以接受Nothing/Null/Empty以及返回值在何種情況下會(huì)是這些特殊值。優(yōu)先返回具體類型如果可能讓函數(shù)返回具體類型而非Variant。調(diào)用者無需擔(dān)心Null或Error。如果確實(shí)需要表示“未找到”或“錯(cuò)誤”可以考慮其他模式返回一個(gè)布爾值表示成功/失敗并通過ByRef參數(shù)返回結(jié)果。返回一個(gè)自定義的包含狀態(tài)和結(jié)果的類實(shí)例。錯(cuò)誤處理對(duì)于不可恢復(fù)的錯(cuò)誤使用Err.Raise主動(dòng)拋出錯(cuò)誤。對(duì)于可預(yù)見的、作為正常業(yè)務(wù)邏輯一部分的“未找到”等情況返回一個(gè)特定的Error值如CVErr(2042)或一個(gè)特殊常量如vbNullString比返回Null或Empty更明確因?yàn)楹髢烧叩暮x可能模糊。6.3 代碼可讀性技巧使用有意義的常量或函數(shù)包裝不要到處寫If IsNull(...)??梢远x像之前Nz()那樣的工具函數(shù)或者定義模塊級(jí)常量。Public Const NOT_FOUND As String “#NOT_FOUND#” Function GetEmployeeName(ByVal id As Long) As String ‘ … 查找邏輯 … If Not Found Then GetEmployeeName NOT_FOUND Else GetEmployeeName nameFromDB End If End Function注釋說明特殊值對(duì)于可能返回Null或特定Error值的函數(shù)在函數(shù)頭部用注釋明確說明。‘ 函數(shù)CalculateBonus ‘ 參數(shù)sales – 銷售額Double類型 ‘ 返回值Variant。成功時(shí)返回獎(jiǎng)金數(shù)額(Double) ‘ 如果銷售額為負(fù)數(shù)返回CVErr(2023)自定義錯(cuò)誤表示無效輸入 ‘ 如果計(jì)算過程出現(xiàn)除零錯(cuò)誤返回CVErr(11)。處理Nothing、Empty、Null和Error本質(zhì)上是在處理程序的“邊界情況”和“異常狀態(tài)”。把這些情況考慮周全你的VBA代碼的健壯性和可維護(hù)性會(huì)提升一個(gè)巨大的檔次。剛開始可能會(huì)覺得繁瑣但一旦形成肌肉記憶寫出穩(wěn)定可靠的代碼就是水到渠成的事。最關(guān)鍵的是不要再只用If var “”來判斷所有“空”了根據(jù)場景該用Is Nothing、IsEmpty還是IsNull心里得有桿秤。下次再遇到詭異的bug不妨先想想是不是哪個(gè)“空”在跟你玩捉迷藏。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丝袜视频网国产90| 丰满美女一级毛片在线播放| 日本成人A片网站| 亚洲精品视频二区| 91伊人久| 蜜桃精品视频一区二区三区| 最近2018中文字幕在线高清第一页| 一区中文字幕二区日韩| 成人无码在线视频网站| 欧洲亚洲人人爽爽视频| 成人av动漫在线观看| 亚洲国产综合图区中文字幕| 久久五月综合| 人妻一区二区三区视频| 女人的天堂大香蕉网| A一区片| 欧美亚洲高清不卡| 欧美五区| 婷婷五月花| 五月丁香影视| 95精品在线| 欧美九九爱| 97视频观看| www四虎| 91黑人无码激情在线| 久久成人国产精品| 极品少妇久久久| 嗯啊啊啊轻点视频 | 超碰97色色| 99∨VTV| 91综合在线| 五月天婷婷综合| 欧美亚洲首页| 成人在线视频二区| 日韩免费中文字幕视频| 中文字幕一区二区三区蜜臀| 亚洲色欲天天人妻无码系列专区| 天天草天天日| 易易A毛视频| 97欧美色资源| 久久久久性熟视频| 99热超碰| www.99色| 久久久久人妻二区精品叶可怜| 日本青青草在线| 天天综合影院91| 天天操天天7| 一区不卡在线观看av| 美女AV一区二区| 亚洲 中文 欧美 日韩 在线| 中文乱码字幕观看| 国产区性爱在线视频秋霞豆| 欧亚综合一卡二卡中文字幕| 亚洲欧洲久久天堂| 大香蕉中文网| av天堂精品久久| 亚 欧 美 综合| 夜夜青青无码影院| 精品无码一区二区三区| 久久丁香五月婷婷| 日本道久久综合色色| 91丨九色丨东北熟女| 九九九九免费| 日本在线激情一区二区三区| A男人的天堂| 天天色综合影视网| 国产熟女完整版中字| 熟妇高潮一区二区免费视频| 在线视频免费观看午夜| 黄网站黄视频网站进入口| 91丝袜在线观看视频在线观看| 欧美亚洲高清| 在线天堂资源亚洲| 97色碰| 久久伊人青青草| 中文字幕aⅴ在线视频| 黄色av播放免不| 国产欧美美女免费观看视频| 黄页视频网站野外| 亚洲综合91| 精品九九九九九九九| 久久亚洲婷婷| 九九热久久99精品re| 久久宗合亚洲| 99蜜桃臀亚洲成人在线观看| 啊啊啊不要好疼视频| 人人 操人人 操人人| 欧美日韩亚洲少妇寂寞影院正在播放 | 99少妇| 精品十三区| 日韩av乱伦| 欧亚性爱在线视频| 插入逼91| 青青草大香蕉视频| 久久亚洲日韩国产欧| 91视频观看网站| 中文字幕一区日韩精| 亚洲精品乱码线路中文字幕| 亚洲黄色AV电影| 精品视频久久区| 国产一区96在线| 日本一区二区三区四区免费观看| 天堂v无码免费视频| 亚洲97网站| 久久熟女久| 久久国产精品一级二级三级| 国产综合操逼高清| 亚洲图片欧洲图片aⅴ| 女人与公拘交酡2020视频| 大香蕉人妻久久| 国产精品网站www| 国产高清1234区| 五月丁香激情综合网| 黄色片一区二区三区四区五区| 中文乱码字幕观看| 国产亚洲色婷婷久久99精品91 - 百度| 欧美精品系列| 久久亚洲一区女同性恋中文字幕| nuu12国产麻豆精品| 丝袜av一区二区三区| 久久精精区一区二区一蜜桃一区二区| 激情综合五月婷婷| 秋霞视频一区二区| 成人黑料社久久| 国产九九九九九九九九| 亚洲一区二区性爱电影| 国产精品视频精品一二| 青娱乐国产盛宴视频| 欧美性爱一区| 久久97资源 网| 亚洲无套久久嗯嗯| 久草精品热视| 91在线视频免费中出| 亚洲欧美激情另类色图| 综合日本女人伊人| 久久久艹艹艹| 伊人色综合超碰| 亚洲精品蜜桃久久久一区二区三区| 激情五月综合网| 日本午夜福利影院| 69AV女优男人的天堂| 精精夜夜| 精品久久久久9999| 日韩av三四区| 60秒免费小视频| 国产亚卅97| 美女毛片999| 91日产欧美| AV色五月| 人妻欧美| 伊人aaa| 超碰97首页| 色偷偷综合91久久噜噜| 中文久久| 人人操人人插人www| 国产精品视频麻豆入口| 久久XX| 91黑丝露脚| 精品久久久中文字幕不| 日韩av色图| 999九九九九国产动| 密臀在线视频| 最新三级网址| 91爱综合| 日日黄色三级网站| 97日韩欧美亚洲| 91中文字幕制服丝袜免费视频| 91欧美亚洲| 国产精品4p在线观看| 一起草日韩| 色五月大香蕉| 中文字幕一区二区三区人妻少妇在线| 蜜臀久久久| 五月天精品| TS人妖另类精品视频系列| 亚川综合视频| 婷婷五月成人| 国产夜夜艹| 欧美大战久久久伊人| 超碰吊日色| 久久在线观看免费视频| 亚洲最大网站av| 欧美在线官网| 老熟妇一区二区三区| 亚洲色图图片| 久精品无码av一区二免费国产在线观看| 色婷婷99| 91美女視頻| 清纯唯美亚洲综合| 岛国AB视频| 啊啊啊操一区| 91美女视频电影| 起碰97| 思思热影视| 懂色AV一区二区三区| 97碰碰日本乱偷人妻中文的| 一区二区影视| 99日精品欧美国产| 97视频900| 亚洲丝袜综合| 国产情侣自拍在线播放| 美骚妇av高清在线| 极品色| 午夜男女爽爽爽在线视频 | 91痴汉| 日韩中文字幕国产| 九九久久九九久久| 精品妇操一区二区三区| 精品亚洲成人免费在线| 国产天天骚| 欧美亚洲首页| 丝袜熟女一区二区三区| 后入式在线免费观看60秒| 色悠久| 国产精品三级视频网站| 国产精品在线一区二区| 欧美日韩*字幕一区| 九九热九九热| 我想要 啊 啊 啊| 熟妇操花| 北野未奈加勒比av| 色天使亚洲综合在线观看| 加勒比在线视频| 久久精品综合| 99色在线| 日韩欧美久久婷婷网站| 99精品综合久久久久五月天| 乱伦1色页| 亚洲综合888| 啊v在线观看视频| 十八禁视频网站| 国产精品久久久999| 高清国产性猛交xxxx乱大交| 伊人色综合超碰| 久久免费少妇| 素人美腿视频网站| 日本中文字幕不卡视频| 极品少妇99| 免费成人自拍视频在线| 色月天AV导航| 日B操| 中文字幕丝袜美腿| 国产三级在线现体验区| 久久久久久久久久久久欧美日| 交换娇妻呻吟声不停中文字幕| 午夜天堂精品久久| 成人精品久久久午夜福利| 天天日日本| 国产探花日韩援交| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 国产精品青青草| 欧洲精品二区| 北京专精特新企业招聘信息| 中文字幕天堂在线| 久久久久久久久久久999| 永久免费观看的毛片的网站| 午夜欧美神马久久久久| 国产精品自拍xxxx| 大屁股熟女一区二区三区| 手机在线观看不卡无码av| 大屁股熟女一区二区三区| 高清国产av无码| 这里都是精品| 色99在线| 日韩啊V| 国产精品suv一区| 巨爆乳一区二区爆乳区| 老鸭窝日丰县女人| 日本狠狠干| 国产9区| 一道本东京热加勒比一区二区三区| 丝袜AV一区二区三区| 亚洲熟妇图片| 天堂中文资源在线bt| 丝袜美腿操av| 2011国产精品| 天天干人人看综合| 综合大香蕉美。| A久久| 国产区日韩区在线观看| 亚洲精品不卡一二三区| 啊啊啊在线观看| 天天看片麻豆| 六月丁香五月婷婷| 小视频玖玖| 亚洲欧美综合图片| 夜夜操av亚洲一区二区| 久久激情亚洲精品无码?V| 日韩精品人妻一区二区| 性色av一区二区| 天美麻花大全视频| 中文字幕丰满人妻日本| rivers-china.com| 麻豆福利视频导航| 日韩人妻资源在线看| 国产探花日韩援交| 高清视频一区| 青青草成人视频在线观看二区| 国产精品午夜高潮呻吟久久av| 操一操摸一摸| 粉嫩av一区二区三区天美传媒| 日韩AV中文字幕电影| 国产人妻天天干精品| 老女人综合网| 天天影视91看看| 1区2区3区中文字幕日韩| 天天精品| 人人操肉肉| 日韩欧美加勒比| 射丝袜大香蕉| 亚洲成人精品久久久| 人人操欧美风骚| 天天综合网~91综合网| 青青色综合| 五月激情综合网| 精品人妻一区二区视频| V A在线| 国产第二页| www.操| 久久精品国产精品亚洲艾通辽熟妇| 一级做a爰片久久毛片图片| 五十路三区在线| 亚洲影视第一页| 97超碰逼| 久久色一区二区| 99re这里只有精品中心播放 | 欧美色图天堂在线| 国产精品无码AV网站| 国产精品爱欲| 91欧洲国产成人久久精品网站| 91青青在线| 五十路人妻在线| 蜜臀少妇一区二区| 激情五月天色色网| 久久久久国产精品喷潮免费观看臀| 日韩免费一级性爱视频| 清纯唯美激情| 中国和日本人色哪个不下载能放| 另类老少妇| 亚洲色图 图片| 欧美 日韩 婷婷 五月| 中文有码第五页| 久视频在线观看| 日韩 国产 欧美自拍| 大奶的诱惑| 欧美亚洲天天| 日韩少妇无码| 91视频在线观看18| 九九九九九九视频免费| juliaann欧美丝袜办公室| 少妇色欲综合网2| 暴力av在线| 亚州五月| 男人天堂新在线| 91 偷| 97综合国产| 老熟女综合| 天天肏视频| 青青草中文字幕| 精品国产Av无码久久久伦古装| 久久久久久久97| 极品销魂美女一区二区 | 国产精品久久久久无码Av网曝门| 国产探花日韩援交| 亚洲AV无码AV吞精久久久久| 多乙久久久久久| 狼人久草| 中文字暮97| 丝袜狠狠草尤物人妻av91| 色五月69夫妻| 丰满人妻一区二区中文| 在线观看啊啊啊啊啊| 精品人妻少妇| 亚洲人天堂| 欧美十八禁视频| 色婷婷一区二区三区久久午夜成人不| 啊啊啊啊,啊啊好多水 | 亚洲婷婷综合网| 黄aaaaaaaaaaaaaaaaaa色网站 | 亚洲图片激情综合另类| 精品无码一区二区| a级成人毛片免费视频高清| 亚洲九九视频| 欧美亚洲天天| 人妻精品免费一二三区| 久久五十路熟女人妻| 啪啪AV导航| 91精品伊人久久久大香线蕉91| 吻戏激情性巴克| 久久超碰免费的| 九热超碰| 久久久亚洲熟妇熟女| 色就色综合| 美女被艹尤物视频| 天天摸天天插天天日| 精品国产久久乱码| 嗯嗯啊啊啊好爽| 精品久久久久久无码| 1769一区二区| 熟女日韩| 91青青在线视频| 精品福利| 中文字幕日本久久| 亚洲三级网址久久最新| 亚洲天在线| 亚洲**2021在线观看| 日本高清一区二区在线| 97高清啪啪| 国产尤物在线三区| a'v在线资源| 99久久久er直播网址| 97超碰色五月| 99这里都是精品| 一级AV性爱| 日韩啪啪网| 日夜干射色啊| 欧美人妻少妇| 91久久久久久久久18| 丝袜综合| 欧美性天天| 亚洲Av无码成人精品国产| 欧美老妇女内射网址| 国语精品av| 国产51色综合久久免费| 久久水蜜臀亚洲AV无码精品| 欧美色另类| 日韩AV无码中文一区二区| av毛片aaaaa免费看| 亚洲第一成人影院色播| baiduhicn.com。| 嗯嗯啊啊操我| 欧美操人| 九色 蝌蚪 熟女自| 国产一区二区三区导航| 成人在线视频一区| 免费av在线播放二区| 免费夜夜爱黄色视频毛片| 日韩国产九九精品一区二区三区毛片 | 日夜尻逼网| 性色av大全| 国产性刺激| 91综合在线| 色久综合| 精品人妻一区二区三区四区| 亚洲最大无码中文字幕网站| 天天干1区2区在线| 欧美性爱视频免费一区一A| 天天天天做夜夜夜夜做| 永久免费av无码网站国产app| 天美传媒av 在线| 超碰99在线| 九九热精品视频在线观看| 亚洲骚男同com| 综合欧美日本三级| 玖色av| 爆操无码| 日日97| 五月天玖玖资源站| 久久精品无码专区| 婷婷成人五月天| 女人香蕉久久毛毛片精品| 国产免费一区在线观看| 日本黄色精品| 天天操夜夜操| 69XX一中文字幕人妻91| 久久中出在线| 被男人添B超爽视频| 青青草伊人久久| 偷拍亚洲熟女视频播放| 99精品人人爽| 色在线亚洲视频www| 国产精品午夜福利视频| 黄色av一区二区在线| 国产精品97视频| 大香蕉亚洲中文| 男人天堂资源| 国内黄色精品| 国产亚州精品美女久久久免费| 黄色av播放免不| 超碰人妻在线| 国产偷人伦激情在线观看| 青青草国产亚洲精品久久| 黄片qw| a片亚洲一本通视频| 国产女人91精品嗷嗷嗷嗷| 综合亚州欧美| xxx亚洲午夜天堂| 精品国产一区二区三区在线播出| 超碰97欧美日韩| 婷婷丁香在线| 91在线观看,天天综合| 美腿色图| 免费在线观看国内色片网站网址 | 九久精品| 在线视频五十市| 围产精品一区二区三区视频播放| 人妻精品一区二区| 天天干天天日天天射黄色片| 亚洲一区二区三区AV无码| 91n处女在线观看| 久久免费中文字幕在线观看| 欧美强奸乱能| 好一吊区二区| 试看福利| 9久综合网| 日本性交操一区二区不卡系列| 男人天堂免费| 骚乳在线| 色色色色网站| 777琪琪午夜免费A片| 精品少妇一区二区三区| 亚洲一区二区三区麻豆传媒| 五月天丁香婷婷综合网站| 男人天堂欧美| 另类欧美| 亚洲精品欧美专业| 婷婷伊人綜合中文字幕小说| 久久亚州精品成人Av无| 九九九久久久| 四虎影视 亚洲无码| 嗯……啊…嗯嗯…啊…好舒服| 国产极品99热在线播放69| 欧美在线天堂| 4虎在线视频| 热久久91婷婷| 亚洲色啪| 国产午夜无码片在线观看影视| 偷拍亚洲| 日韩91网| A一级色女| 思思热在线观看| 久久精品店| 自拍偷拍 日韩欧美| 久久久久久久9999| 男人成人黄色视频在线观看免费下载| 久久超碰、| 狠狠干综合| 亚洲欧美经典一区二区| 嫩草一区二区在线观看| 欧美v亚洲v综合v国产v妖精| 日韩综合色图| 97精品一区二区视频在线观看| 美女主播色欲91抠b在线播放| 成人性爱电影一区二区| 蜜乳AV一区| 国产二区三区免费视频| 好属操| 91制服丝袜| 2019亚洲男人天堂| 都市激情人妻一区二区青青操视频| 麻豆久久久久久久久丝袜| 啊啊啊好爽快点啊啊啊嗯嗯| 91精品丝袜在线观看| 懂色av色欲av蜜臀av| 日本黄色精品专区网站| 免费精品国偷自产在线在线| 国产欧美另类久久久精品课程| 蜜桃臀一区二区aV| 操91| 2019亚洲男人天堂| AV男人天堂网| 不卡九肏| 亚州乱码中文字幕综合久久久| 精品91摸| 中文字幕乱碼在线| 成人日韩中文字幕| 亚州成人a∨| 大香蕉综合| 国产日韩精品一区二区三区| 91在线美女| www激情| 色婷婷香蕉| 婷婷在线视频| 欧美日韩超碰在线| 精品一区二区三区最新| 欧美在线色图| 夜夜人妻爽| 老鸭窝日丰县女人| 天天综合,91入口| 疯操AV| 久区视频| 精品福利| 亚洲av国产av综合av卡| 色欲三区| 美中日韩无码| 天堂8在线新版官网| 91人妻Pr| 国产又粗又又黄又猛| 欧美嗯啊……在线观看视频免费| 久久综合乱子伦国产免费| 蜜桃成人1区2区3区| 99re这里只有精品3| 青青草手机在线免费观看| 国产精品一区二区后入| 久久精品六区| 久久春色| 中文字幕AV乱伦| 精品国产无码中文| 人人摸人人摸人人干| 中文字幕 国产 精品| 99热99色| 蜜臀精品1区2区| 无码视频一区二区| 久久久三区二区一区| 九九九九亚洲| 美女操逼A A| 男女真人网18| 青青青操| 青青草久草AV| 久久日韩肥臀| 精品国产三级av韩国在线| 国产一区二区精品久久99| 亚洲国产麻豆一区二区三区 | 亚州综合AⅤ| 久久精品无码熟妇一区二区三区视频导航 | 亚洲欧美天| 五十路熟女人妻一区二区在线观看 | 国产AV中文| 国产91av在线播放| 欧美日韩操逼嗦吊| 日韩中文字幕熟妇人妻| 天美传媒Av在线| 91精品丝袜久久久久久| 熟女这里只有精品6| 99热自拍| 精品97久久综合| 密臀在线视频| 新亚洲无码| 自拍大香蕉乱插| 日本九九久久99播| 中韩中文字幕在线观看| 日韩精品国产一区二区| 92福利社视频| 性色高清在线| 99夜夜操| 无码聚合| 射欧美综合| 亚洲欧美清纯| 在线中文字幕极品av| 亚洲精品蜜桃久久久一区二区三区| 学生妹天天看| 亚洲AV无码乱码| 大香交伊人网| 亚洲激情深爱文学小说网站| 中文字幕第2页| 国产精品亚洲天堂网址| 久久99国产综合精品女同| 果冻传媒一区二区三区| 无码操逼视频一下| 嗯嗯嗯啊啊啊在线免费观看| 久久精品女同亚洲女同13| 蜜臀一区二区三区在线| AV电影在线播放| 91无码人妻| 伦激情人妻另类人妻| 99精品成人免费看| 夜夜综合| 国产兽交视频在线播放| 婷婷综合五月| 天堂综合| 影音先锋视频在线| 国产又大又粗又长视频在线| 久久久91福利姬| 777AV电影| 天天摸夜夜添无码小视频| 熟女丝袜视频| 少妇无码999| 99久久99九九99九九九| 中文字幕精品专区搜索结果91| 琪琪精品免费一区二区三区| 国产精品2020| 97超碰人妻| 亚州伊人色综台| 91综合网在线| 囯产操逼片| 呦女网站| 欧美综合娱乐久久| 亚洲男人的天堂AV| 国产视频人人网| 嗯嗯嗯啊啊啊在线免费观看| 色欲久久99国产精品久久久久久| 亚洲国产精品成人无码久久久 | 久久免费少妇| 超碰调教97| 男人天堂网址| 日本一二区免费| 97亚洲综合| 亚洲第一综合| 亚洲欧洲综合| 欧美躁死她一区二区| 成人性生活高清视频在线播放| 亚洲激情AV| 午夜在线播放| 免费观看欧美日韩操逼视频| 亚洲精品人体| 亚洲天堂另类美腿| 中日韩免费看男女操逼大全| 爱干爱射网啊啊啊| 嫩草美女久久| 九九九九精品一区| 亚欧国产无码精品在线| 亚洲资源吧| 国内三级自拍小视频在线观看| 美女淫穴| 亚洲高清无毛一区二区| 亚洲精品不卡一二三区| 操比国产| 啊啊啊好舒服视频| 日本丝袜美腿人妻九九| 国产精品久久久久久照片| x97av| 国内毛片无码一级毛片| 日本欧美不卡| 日本熟妇熟色97一本在线观看| 日韩免费a级毛片无码a∨| 欧美美女在线高潮999| 国产欧美精选激情视频| 久久超碰天天| 无码91| a一区二区三区乱码在线| 九九九九一级| 天天爽天天操| 日韩免费簧片| 日韩精彩视频| 亚洲综合97中文网| 艹精品| 羞答答AV中文字| 欧美 亚洲 制服 精品| 北约熟女超碰| 97在线日韩中文字幕| 日韩97超碰中文字幕| 91一区二区三区蜜桃| 国产精品第一页国产大屁股视频免费区i| 欧美在线播放aaaa| 欧美日韩午夜精品一区二区三区| 五月天亚洲网| 午夜激情床戏激情| 久久久久久精品免费看A级| 搡老女人老91二区| 一区麻豆 高清中文字幕| 欧美大香蕉专区网| 91色交| 国产精品午夜精品| 久久久久久久久久久人妻| 日本国产高清色www视频在线| 怡红院成人视频| 中文幕97| a亚洲欧美色欲| 激情综合网一盗摄| 久久啊哟| 亚洲1区2区三区高清中文字幕| 精品无人区麻豆乱码1区2区图片 | 日本福利社| 日韩无码视频黄色| 五月天婷婷社区| 亚洲AV资源| 国模精品一区二区三区苹果色戒| 91搞逼视频| 日韩人妻无码不卡网站| 色男人色天堂东京热| 男人天堂.AB| 丰满人妻大屁一区二区| AV在线性爱| 午夜精品久久久久久久久久久久久 | 精品国产精品一区二区| 吖在线不卡一区二区国产剧情| 高精欧美色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 口爆吞精在线观看| 夜夜夜夜久久久久| 97视频在线观看网站| 熟女人妻av在线资源,黄色的资源 粉嫩国产精品久久粉嫩 | 亚洲,日韩,欧美,成人播放 | 国产传媒av天美传媒在线| 亚洲中文字幕一区| 欧美亚洲厕所精品偷拍91 | 超碰九7免费| 欧美精品亚洲精品日韩传电影| 欧美精品 - 91爱爱| 超碰超碰95| 天天综合精品| 抽插无码高清一区| 亚洲天堂7777| 免费啪啪av| 69XX一中文字幕人妻91| 97日韩欧美| 欧美激情区| 亚洲黄色电影| 欧美日韩国产色五月综合在线| 91网站视频在线观看| 亚洲 欧美 91| 91国产精品在线看| 99精品在线播放| 搡老熟女老女人老熟妇免费视频| av绯色| 国产女人高潮嗷嗷嗷叫小说| 免费?级毛片无码?∨蜜芽试看| 国产1024在线播放| 国产精品午夜精品| 欧美色图97| 曰本熟女视频| av优播| 91久久精品蜜臀| 综合久| 午夜一区二区三区国产| 男女做爰猛烈动高潮A片免费应用| 日本国产欧美一区三区二区 | 中文AV制服乱伦| 91精品人妻偷情| 国产亚洲色停停久久99精品91| 久久精品国产精品一区| 人人看黄色视频| 亚洲色系另类精品国产| 日日操丁香五月天| 国产激情综合五月久久| 涩五月婷婷| 91美腿丝袜在线观看| 少妇同性| 激情文学小说一区二区| 青青草在线视频播放器| 一区 欧美 日韩 麻豆| 大香蕉99热| 成人精品水蜜桃久久久久久久| 欲射影视| 人人操人人精品影片| 色噜噜人妻av中文字幕| 欧美青青草视频| 亚洲综合有码| 亚州欧美在线| 91操熟女| 视频黄色国产一级| 狠狠综合网| 婷婷成人久久久精品| 日韩中字av一区| 欧美国产有色电影| 亚洲97资源| 国产成人亚洲精品无| 国产精品高清2021在线| 色综合av男人天堂| 99热超碰在线| 老师充足的奶水小说| 97视频新免费| 国产精品乱码久久| 亚洲精品一区二区精品| 婷婷视频在线免费观看| 亚洲男人bt天堂| 91视频成人福利网站在线一区 | 久久日韩肥臀| 91AV入口| 自慰白浆在线观看| 蜜臀精品1区2区| 亚洲限制级| 超碰在线1234区| 午夜爽爽爽| 香蕉久久AⅤ...| 亚洲色五月| 中文乱码99| 日本不卡中文| 国产精品日本无码A片| 中文一区在线视频| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 一二三啪啪专区| 啊啊啊男女| 国产精品黑人一区二区三区| 日本理论在线| 九X超碰| 加勒比海色香蕉婷婷| www.久久制服糖| 99热这里只有精品99| 91精品久久久久久77777| 偷拍综合网| 丁香色色网| 欧天美中出| 一中国女人毛片水真多| 妺妺跟我一起洗澡没忍住| 欧美在线大香蕉| 天天综合青苹果| 亚洲AV成人无码一区二区三区在线观看 | 亚洲国产丝袜在线观看| 九九九九国产| 婷婷久久综合| 视频在线中文字幕| 九月激情婷婷| 欧美美女啪啪视频| 亚洲日韩电影| 五月综合久久| q2午夜理论片夜色av| 亚州免费啪啪视频| 国产自产91区13区| 在线观看中文字幕| 五月婷婷丁香| 欧美肥臀在线| 你想操日本小逼吗| 亚洲日韩东京热一区| 五十路六十路七十路熟婆| av天天在线观看| rion磁力链接| 日本精品一区二区中文字幕| 国产精品久久久久999| 欧美中文字幕日韩在线| 九九九久千久久激情蜜桃在线看 | 欧美狠狠| 欧亚洲精品有视频| 天天夜夜rb| 五月天色色网站| 另类专区加勒比| 亚洲成熟国产精品美女| 国产精品高潮久久AV| 日韩无码操逼片| 亚洲 欧美 另类 综合 偷拍| 国产二区三区免费视频| 中文字幕片| 无码高清操逼| 欧美亚洲影视| 欧美日韩*字幕一区| 青青草视频久久久久| 国产亚洲色停停久久99精品91| 欧美日韩222| 成 人 A V免费视频在线观看| 毛片17S| 老熟女搡BBBB搡BBBB视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 久久‘黄片视频| 情色五月天就去干| 999国产精品999| 久久久一区二区三区麻豆| 色色国产| 国产sv美女内射| 99热亚洲天堂| 99婷婷一区二区| 婷婷另类小说| 欧美一级特黄淫片在线观看| 很狠操| 大伊香蕉在线视频免费| 蜜桃AV天堂| 一本一道人妻久久一区二区三区 | 成人av在线播放| 久久男人网| 欧美一级特黄淫片在线观看| 色哟哟AV| 亚洲夜夜欢无码一区二区| 日韩小电影| 91逼逼女人91| 伊人久久综合精品欧美| 色香91| 亚码激情| 成全在线观看免费观看| 中文字幕欧美日本乱码一线二线 | 国产午夜福利电影免费在线观看| 亚洲精品骚逼| 婷婷视频在线免费观看| 国产三级中文字幕粉嫩| 久久激情视频| 51国产午夜精品视频| 高清肉丝中文无码| 九九色精品| 综合网91| 少妇精品久久久| 日本福利社| 波多野42部激情无码喷潮| Aa东京男人的天堂| 爱射综合| 蜜乳AV.COM| 亚洲熟女少妇免费视频| 口爆综合网| 国产一进一出视频网站| 精品久操| 亚洲欧美日韩有码| 91小视频| 日韩欧美大片免费高清啪啪| 破处bbq| 欧美午夜精品久久久久久3D| 久操凹凸视频| 中国91AV| 色老牛| www鬼畜国产男人的天堂| 深夜福利黄片| 亚洲色图伊人网| 九色 人妻 大香蕉| 熟女人妇一区二区三区| 极品另类| 激情文学亚洲| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 福利风月五月天影院| 亚洲精品黄码久久久久| 久久精品一区| 大香交伊人网| 中国一级操逼视频| 精品九九| 欧美偷偷网| 99RE在线视频精品,这里只有精品| 91久久久久久| 国产成人一级av88| 人人模人人看| 色五月激情AV在线| 丝袜综合色图| 婷婷香蕉欧美在线一区二区三区| 精品视频免费在线一区| 视频国产欧美在线播放| 亚洲综合色在线| 男人天堂站| 操久久久久久| 91在线精品| 欧美一区二区三区另类精品| 亚洲一区二区在线观看91| 亚洲综合另类色图| 久久婷婷欧美| 伊人久久青青草| 97五月天| 欧美做爰无码A片视频| 久久久久久久九九九九九九| 超碰78| 亚州欧美在线| 天天搞欧美| 视频二区熟女人妻| 亚洲自拍另类丝袜综合| 午夜男人天堂| 97干在线| 久久性视频| 麻豆这里只有精品| xxx0国产在线播放| 岛国视频一二三区| 17c在线成人免费A片观看| 欧美亚洲91| 99热这里只有精品18| 91热色| 久久久三区二区一区| 国产精品动态一区二区三区四四| 九九英色视频| 99re69| 国产亚洲色婷婷99精品91| 大鸡吧尹人在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩中文字幕2020| 91草草草| 99热导航| 九九自拍伦理| 91欧美综合在线| 青女在线| 校园春色综合香蕉| 黄色十八禁| 少妇第一页| 久久久少妇诱惑精品视频| 国产第二页| 国产精品高朝久久久久久久| 懂色影视久久| 国产精品久久久久久夜夜夜夜| 天天操天天看| 热热色综合网| 亚洲欧美内射| 四虎影视精品| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 激情综合亚洲| 啪啪啪综合网| 大香蕉碰碰| 国产馆极品诱惑| 男人天堂日日夜夜| 日日日大屁股骚女人精品| 青青伊人久久| 玖色av| 国产99热| 亚洲欧美日韩偷拍色图| 亚洲一卡二卡在线免费| 亚洲国产尤物yw在线观看| 亚洲精品无码成人久久久99 | 免费一级毛片在线视频观看| 久久色情| 久久久不能久久久久| 色鬼在线综合| 91激情综合| 欧日韩一二三f区| 热热色中文无码| 国产福利电影| 一区二区三区四区免费视频| 国产成人精品日本视频| 大香交伊人网| 婷婷激情一区二区三区俺也去| 最新精品久久蜜桃| 好色美女九七第一页| 亚洲性网| 午夜超爽| 97色婷| 色色色综合网| 精品国产99| 97伊人超碰| 中文字幕欧美丝袜07资源| PMv在线观看| 人妻 中文 日韩| 天天做天天爱天天高潮| 久久XX| 99re在线观看| 96精品久久久| 黄骗免费网站| 久操网线| 炮色五月| 自拍亚洲综合| 国产精品第一页国产大屁股视频免费区| 国产传媒午夜理伦精品| 99rre在线精品99re8| 以及麻豆国产入口在线观看免费| 亚洲中文日韩精品| 亚洲影视综合网| 龙兴卡官方查询| 91啪啪| 色噜噜精品一区二区三| 欧美久久九九| 97超级色碰碰| 在线视频97| 久久久久国产一区二| 超碰午夜在线| 综合天天。| 国产9 9在线 | 亚洲| 狠狠干,狠狠操| 99re6国产精品99re在线| 大香蕉日亚洲日本亚大| 三级精品三级在线观看| 狠狠色狠狠色狠狠五月| 国产精品九9| 婷婷丁香人妻| 日韩极品无码B| 日本狠狠干| 屁股久久久久久久久| 富女玩鸭子一级毛片| 97久久精品国产| 久久九九97| 久久综合99| 91痴汉| 99国产在线 精品 视频| 伊人成人中文字幕久久网| 96精品一区| 综合av影片| 亚洲av性爱电影| 色人久久| 丝袜狂射91| 日韩av在线精品观看| 五月婷婷综合在线| 精品久久久久成人码免| 国产辣妈在线视频福利| 蜜桃久久综合视频| 丝袜美腿丝袜| 亚洲第一狼人丝袜美女另类| 99re不伦| 屁股久久久久久久| 欧美日日操| 75大香蕉| 国产在线综合福利网站| 夜夜嗨一区二区| 伊人网综合在线视频| 免费看国产曰批40分钟怎么下载| 大鸡吧尹人在线| 97Ai亚洲| 色婷婷小说| 欧美丝袜美女电影一二三四区| 国产亚洲精品无码三区| 蜜臀亚洲中文| 亚洲一区二区AV| 婷婷五月天社区| 欧美亚洲今日在线| 3p国产色噜噜一区| 爱丝福利|