99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

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

VBA編程中Nothing、Empty、Null與Error的深度解析與實戰(zhàn)應(yīng)用 1. 項目概述為什么VBA里的“空”這么讓人頭疼干了這么多年VBA開發(fā)我敢說至少有30%的調(diào)試時間都花在和“空值”較勁上。新手寫代碼最怕的就是彈出一個“運行時錯誤‘91’對象變量或With塊變量未設(shè)置”或者明明看著單元格是空的用If Range(“A1”) “”判斷卻死活不對。這背后就是VBA里那幾個看似簡單實則各有各的“脾氣”的空值關(guān)鍵字在作祟Nothing、Empty、Null還有那個經(jīng)常被誤會的Error。這些東西官方文檔講得比較分散和理論化而實際開發(fā)中它們的區(qū)別直接關(guān)系到程序是穩(wěn)定運行還是瞬間崩潰。比如你用Set了一個對象后來想釋放它是該用Set obj Nothing還是Set obj Empty從數(shù)據(jù)庫里讀出一個字段值是Null你直接把它賦值給一個變量后續(xù)計算會不會報錯一個函數(shù)可能因為各種原因失敗你是返回一個特定的Error值還是干脆讓程序彈窗報錯這些選擇每一天都在考驗著VBA開發(fā)者的基本功。今天我就結(jié)合自己踩過的無數(shù)個坑把這幾個概念掰開揉碎了講清楚。這不是語法教科書而是一份來自一線的“避坑指南”。無論你是剛接觸VBA想弄明白If rs.EOF Then和If rs Is Nothing Then到底有什么區(qū)別還是已經(jīng)寫了幾年代碼想更優(yōu)雅地處理各種邊界情況這篇文章里的內(nèi)容都能讓你少走彎路。我們會從它們最本質(zhì)的定義出發(fā)用大量實際的代碼片段和場景模擬讓你不僅知道每個關(guān)鍵字是什么更明白在什么情況下該用誰以及用錯了會怎么樣。2. 核心概念深度辨析四種“空”的本質(zhì)與差異理解這幾個關(guān)鍵字絕對不能死記硬背。你必須把它們放到VBA這個特定的“生態(tài)系統(tǒng)”里看它們各自扮演什么角色。我們可以從兩個最根本的維度來區(qū)分它們數(shù)據(jù)類型和適用場景。Nothing是給對象Object準(zhǔn)備的“空”Empty是給變體Variant變量在未賦值時的默認狀態(tài)Null是一個特殊的Variant子類型專門表示“未知數(shù)據(jù)”或“不含有效數(shù)據(jù)”而Error則是Variant的另一個子類型但它包裹的是一個錯誤號用于錯誤處理流程。2.1 Nothing對象的“身份證注銷”Nothing這個關(guān)鍵字是VBA中對象引用的專屬“空值”。你可以把它理解為一個對象變量的“復(fù)位鍵”。當(dāng)一個對象變量被聲明后例如Dim ws As Worksheet它實際上還沒有指向任何具體的對象這時它的值是Nothing。當(dāng)你用Set關(guān)鍵字讓它指向一個實際對象如Set ws ThisWorkbook.Worksheets(“Sheet1”)后它就不再是Nothing了。最后當(dāng)你不再需要這個對象或者想釋放它時你就用Set ws Nothing來切斷這個引用。注意Set ws Nothing并不意味著銷毀了那個Worksheet對象本身Excel還開著Sheet1當(dāng)然還在。它只是銷毀了ws這個變量對那個對象的“引用鏈接”。如果這是指向那個對象的最后一個引用VBA的垃圾回收機制會在后續(xù)某個時間點清理該對象占用的內(nèi)存。但對于Excel這類宿主應(yīng)用程序的對象其生命周期主要由宿主管理。核心判斷方法使用Is運算符。這是唯一正確判斷一個對象變量是否為Nothing的方法。Dim coll As Collection If coll Is Nothing Then MsgBox “變量coll尚未被Set為一個具體的Collection對象?!?End If Set coll New Collection ‘ 此時 coll Is Nothing 為 False Set coll Nothing ‘ 此時 coll Is Nothing 又變回 True最常見的坑試圖使用一個為Nothing的對象變量。這會導(dǎo)致“運行時錯誤‘91’”。Dim ws As Worksheet ‘ ... 假設(shè)忘記執(zhí)行 Set ws ... ws.Name “Test” ‘ 錯誤ws是Nothing沒有具體的對象可以操作。2.2 Empty變體變量的“出廠設(shè)置”Empty是變體Variant數(shù)據(jù)類型變量在聲明后、首次賦值前的默認值。它是一種特殊的Variant子類型vbEmpty。關(guān)鍵點在于Empty是一個值它表示“尚未初始化”而不是“沒有值”或“錯誤的值”。一旦你給一個Variant變量賦了任何值哪怕是0、空字符串””或Null它的Empty狀態(tài)就消失了。核心特性在數(shù)值上下文中為0在字符串上下文中為空字符串””。這是Empty最“狡猾”的地方它會在參與運算時自動進行類型轉(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 “這行不會執(zhí)行” End If與空字符串””的區(qū)別這是另一個高頻混淆點。一個單元格被手動清空內(nèi)容按Delete鍵后其.Value屬性通常是Empty對于Variant類型Range.Value。而如果一個單元格輸入了一個等號公式但公式返回空字符串””那么其.Value就是空字符串””而不是Empty。用IsEmpty()函數(shù)可以清晰地區(qū)分它們。2.3 Null數(shù)據(jù)庫世界的“未知數(shù)”Null是一個Variant子類型vbNull它表示未知的、不存在的或不適用的數(shù)據(jù)。這個概念在數(shù)據(jù)庫領(lǐng)域至關(guān)重要。在VBA中Null主要出現(xiàn)在與數(shù)據(jù)庫如ADO、DAO記錄集交互時或者某些可能返回Null的API函數(shù)中。核心特性任何涉及Null的表達式結(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)看到了嗎最后兩行是巨坑你不能直接用等號或不等號來判斷一個值是否為Null因為比較的結(jié)果本身也是Null在If語句中Null被視作False但這會導(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 ‘ 錯誤這個條件永遠無法被滿足結(jié)果為Null即False。 Debug.Print “這行永遠不會執(zhí)行” End If與Empty的對比Empty是VBA變量的初始狀態(tài)而Null通常表示從外部如數(shù)據(jù)庫獲取的、有意義的數(shù)據(jù)缺失狀態(tài)。IsEmpty(Null)返回FalseIsNull(Empty)也返回False它們是兩個完全不同的概念。2.4 Error不是錯誤的“錯誤值”Error是一個特殊的Variant子類型vbError它包含一個錯誤號。它并不是一個運行時錯誤不會中斷代碼執(zhí)行而是一個可以像普通值一樣存儲、傳遞的“錯誤標(biāo)識符”。它通常由某些函數(shù)在內(nèi)部出錯時返回而不是通過Err.Raise拋出異常。最常見的來源CVErr()函數(shù)。你可以用它將一個錯誤號轉(zhuǎn)換成一個Error值。Dim varResult As Variant varResult CVErr(11) ‘ 11 對應(yīng)錯誤“被零除” If IsError(varResult) Then ‘ 使用IsError()函數(shù)判斷 Debug.Print “變量包含一個錯誤值錯誤號是” CLng(varResult) End If核心用途在自定義函數(shù)中當(dāng)遇到特定計算錯誤如參數(shù)無效、除零時不直接彈出錯誤中斷用戶而是返回一個Error值讓調(diào)用者自己決定如何處理。Function SafeDivide(num1 As Double, num2 As Double) As Variant If num2 0 Then SafeDivide CVErr(11) ‘ 返回“被零除”錯誤值 Else SafeDivide num1 / num2 End If End Function Sub Test() Dim v As Variant v SafeDivide(10, 0) If IsError(v) Then MsgBox “計算出錯無法進行除法?!?Else MsgBox “結(jié)果是” v End If End Sub與運行時錯誤的區(qū)別Error值是一個“安靜”的錯誤指示器。而Err對象如Err.Number是在運行時錯誤發(fā)生并被捕獲后用于獲取錯誤信息的。你可以通過CVErr(Err.Number)將捕獲的錯誤轉(zhuǎn)換為Error值進行傳遞。3. 實戰(zhàn)場景與應(yīng)用技巧如何正確使用與判斷理論講完了我們進入實戰(zhàn)環(huán)節(jié)。知道它們是什么只是第一步更重要的是在代碼里用對地方。下面我通過幾個最常見的開發(fā)場景展示如何精準(zhǔn)地使用和判斷這些關(guān)鍵字。3.1 場景一安全地操作對象處理Nothing當(dāng)你編寫一個函數(shù)需要接收一個工作表對象作為參數(shù)時防御性編程至關(guān)重要。Sub ProcessWorksheet(ByRef ws As Worksheet) ‘ 第一步永遠先檢查對象是否為Nothing If ws Is Nothing Then MsgBox “未提供有效的工作表對象?!? vbExclamation Exit Sub End If ‘ 第二步進一步檢查對象是否“存活”對于某些可能已被刪除的對象 On Error Resume Next Dim nameTest As String nameTest ws.Name ‘ 嘗試訪問一個屬性如果對象無效會出錯 If Err.Number 0 Then MsgBox “工作表對象可能已被刪除或無效?!? vbCritical Exit Sub End If On Error GoTo 0 ‘ 安全地使用對象 ws.Range(“A1”).Value “處理開始” ‘ … 其他操作 … End Sub ‘ 調(diào)用示例 Sub Caller() Dim mySheet As Worksheet ‘ 情況1忘記Set ProcessWorksheet mySheet ‘ 將觸發(fā)“未提供有效對象”的提示 ‘ 情況2正常Set Set mySheet ThisWorkbook.Worksheets(“Sheet1”) ProcessWorksheet mySheet ‘ 正常執(zhí)行 ‘ 情況3Set為Nothing后 Set mySheet Nothing ProcessWorksheet mySheet ‘ 將觸發(fā)“未提供有效對象”的提示 End Sub實操心得對于任何可能來自外部輸入或動態(tài)生成的對象參數(shù)在函數(shù)內(nèi)部開頭進行Is Nothing檢查是一個必須養(yǎng)成的好習(xí)慣。這能避免90%以上的“錯誤91”。3.2 場景二處理單元格數(shù)據(jù)區(qū)分Empty、””、Null從Excel單元格讀取數(shù)據(jù)是VBA的日常。一個單元格可能包含多種“空”狀態(tài)。Sub CheckCellValue() Dim rng As Range Set rng ThisWorkbook.Worksheets(“Data”).Range(“A1”) Dim cellValue As Variant ‘ 必須用Variant接收因為.Value可能返回多種類型 cellValue rng.Value ‘ 判斷邏輯鏈順序很重要 If IsError(cellValue) Then ‘ 單元格是錯誤值如#N/A, #DIV/0! MsgBox “單元格包含錯誤” CStr(cellValue) ElseIf IsNull(cellValue) Then ‘ 通常來自數(shù)據(jù)庫查詢Excel單元格直接輸入Null的情況較少 MsgBox “單元格值為Null未知數(shù)據(jù)” ‘ 處理Null例如賦予默認值 cellValue 0 ElseIf IsEmpty(cellValue) Then ‘ 單元格從未被輸入過內(nèi)容真正的“空”單元格 MsgBox “單元格為Empty未初始化” ‘ 可以將其視為0或空字符串處理 cellValue “” ElseIf cellValue “” Then ‘ 單元格內(nèi)容是一個空字符串例如公式 ”” MsgBox “單元格是空字符串”” ‘ 按空字符串處理 Else ‘ 單元格有實際內(nèi)容數(shù)字、文本、日期等 MsgBox “單元格值為” cellValue End If End Sub注意事項判斷順序有講究。IsError應(yīng)該放在最前面因為一個Error值用IsNull或IsEmpty判斷也會返回False但它的本質(zhì)是錯誤。其次判斷IsNull再判斷IsEmpty。最后判斷空字符串””。因為一個Empty值在比較””時結(jié)果為TrueEmpty在字符串上下文中轉(zhuǎn)換為””所以如果你先判斷””就會把Empty也當(dāng)成空字符串從而無法區(qū)分兩者。3.3 場景三與數(shù)據(jù)庫交互Null的專項處理從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或某些庫中有一個非常方便的Nz()函數(shù)它可以將Null轉(zhuǎn)換為指定的默認值。在純Excel VBA中我們可以自己實現(xiàn)一個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這個自定義的Nz函數(shù)能極大簡化代碼避免到處都是If IsNull(...) Then的判斷。3.4 場景四構(gòu)建健壯的自定義函數(shù)利用Error假設(shè)我們要寫一個查找函數(shù)當(dāng)找不到時不返回0或空字符串這可能與有效數(shù)據(jù)沖突而是返回一個錯誤值。Function VLookupSafe(lookupValue As Variant, tableRange As Range, colIndex As Long) As Variant ‘ 增強版的VLOOKUP找不到時返回錯誤值#N/A而不是報錯 On Error Resume Next ‘ 屏蔽VLOOKUP本身的錯誤 Dim result As Variant result Application.WorksheetFunction.VLookup(lookupValue, tableRange, colIndex, False) If Err.Number 0 Then ‘ 如果出錯通常是找不到清除錯誤返回CVErr(2042)對應(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ā)生其他錯誤?!?End If Else MsgBox “找到的值為” foundValue End If End Sub技巧使用CVErr(2042)來模擬Excel內(nèi)置的#N/A錯誤這樣你的函數(shù)返回值可以與Excel原生函數(shù)的行為保持一致調(diào)用者也可以用IsError()和IsNA()在VBA中是WorksheetFunction.IsNA來統(tǒng)一處理。4. 混合場景與高級陷阱當(dāng)它們同時出現(xiàn)時真實的代碼往往更復(fù)雜這些“空值”可能會在同一個邏輯流里交織出現(xiàn)。處理不當(dāng)就會掉進深坑。4.1 陷阱一在集合或字典中查找可能為Null的鍵VBA的Scripting.Dictionary和Collection對象其鍵Key不能是Null。嘗試添加Null作為鍵會引發(fā)錯誤。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” ‘ 這里會出錯 If Err.Number 0 Then Debug.Print “錯誤不能使用Null作為字典的鍵。” End If On Error GoTo 0 ‘ 解決方案在添加前轉(zhuǎn)換Null dict.Add Nz(keyValue, “[NULL]”), “SomeData” ‘ 使用之前定義的Nz函數(shù) End Sub教訓(xùn)任何要將值用作唯一標(biāo)識符如字典的鍵、集合的查找依據(jù)的場景都必須先對值進行“清洗”將Null轉(zhuǎn)換為一個唯一的占位符如字符串”[NULL]”。4.2 陷阱二將對象、Empty、Null傳遞給可選參數(shù)VBA支持可選參數(shù)Optional并且可以指定默認值。但這里有個細微差別。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是一個包含Nothing的VariantVarType為9(vbObject) End Sub如果你在函數(shù)內(nèi)部期待一個Empty值作為“未提供參數(shù)”的標(biāo)志那么調(diào)用者顯式傳入Null就會破壞這個邏輯。更安全的做法是使用IsMissing關(guān)鍵字僅對Variant類型且未指定默認值的參數(shù)有效或定義一個特殊常量來標(biāo)識“未提供”。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ù)組每個元素初始為Empty。對象數(shù)組每個元素初始為Nothing。數(shù)值/字符串?dāng)?shù)組每個元素初始為該類型的默認值0、””等。用戶自定義類型數(shù)值字段為0字符串字段為””對象字段為NothingVariant字段為Empty。這里沒有Null的默認位置除非你顯式賦值。但當(dāng)你從數(shù)據(jù)庫讀取一整條記錄到一個Variant數(shù)組時數(shù)據(jù)庫中的Null值會被保留到數(shù)組的對應(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)錯誤當(dāng)程序因為空值問題崩潰或行為異常時如何快速定位以下是我常用的調(diào)試流程和技巧。5.1 錯誤“91”對象變量未設(shè)置這是最經(jīng)典的空值錯誤。排查步驟定位出錯行啟用“發(fā)生錯誤則中斷”的調(diào)試模式VBE中工具 - 選項 - 通用 - 錯誤捕獲 - 遇到未處理的錯誤時中斷。檢查對象變量將鼠標(biāo)懸停在出錯行涉及的所有對象變量上查看提示是否為“Nothing”?;厮葙x值路徑檢查該對象變量在何處被Set。常見原因?qū)ο髣?chuàng)建失敗如Set ws Worksheets(“不存在的表”)。對象已被釋放或關(guān)閉如記錄集rs在調(diào)用.Close后未置為Nothing但后續(xù)又誤用。邏輯分支遺漏在If或Select Case的某個分支里忘記Set對象。使用立即窗口在中斷模式下在立即窗口輸入?objVar Is Nothing來快速驗證。5.2 邏輯錯誤判斷條件失效程序沒報錯但結(jié)果不對往往是Null或Empty的判斷邏輯出了問題。‘ 有問題的代碼 If rs.Fields(“Amount”).Value 0 Then ‘ 如果Amount字段在數(shù)據(jù)庫中是Null這個條件會得到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ù)會返回一個數(shù)字如0表示Empty1表示Null8表示字符串等等這是判斷變量當(dāng)前子類型最直接的方法。5.3 數(shù)據(jù)傳遞錯誤函數(shù)返回值異常自定義函數(shù)返回了意想不到的Empty、Null或Error。檢查所有退出路徑確保函數(shù)在所有可能的邏輯分支包括If...Else、Select Case、錯誤處理Exit Function中都對返回值進行了賦值。初始化返回值在函數(shù)開頭將返回變量設(shè)為一個明確的初始值如0、””或Empty這是一個好習(xí)慣。使用類型更嚴(yán)格的返回值如果函數(shù)邏輯上不可能返回Null或Error考慮將返回類型聲明為具體的類型如Double、String而不是Variant。這樣VBA會在返回時進行類型檢查有時能提前發(fā)現(xiàn)問題。但要注意如果函數(shù)內(nèi)部計算可能產(chǎn)生Null賦給一個String變量會導(dǎo)致類型不匹配錯誤。6. 性能與最佳實踐寫出更健壯的代碼理解了概念避開了陷阱最后我們聊聊如何從代碼設(shè)計和習(xí)慣上根本性地減少空值帶來的煩惱。6.1 變量聲明與初始化策略對象變量聲明時即為Nothing。在使用前養(yǎng)成先判斷再使用的習(xí)慣。對于可能為Nothing的傳入?yún)?shù)在過程開頭進行防御性檢查。Variant變量如果用于接收可能為Null或Empty的外部數(shù)據(jù)如單元格值、數(shù)據(jù)庫字段保持為Variant類型。如果用于內(nèi)部計算應(yīng)盡早轉(zhuǎn)換為具體類型并處理空值。‘ 好的做法 Dim rawInput As Variant rawInput Range(“A1”).Value Dim processedValue As Double If IsNumeric(rawInput) Then ‘ IsNumeric對Empty返回True視為0對Null返回False processedValue CDbl(rawInput) Else processedValue 0 ‘ 或根據(jù)業(yè)務(wù)邏輯處理 End If ‘ 后續(xù)計算全部使用processedValue它是確定性的Double類型。具體類型變量String, Long, Double等它們沒有Empty或Null狀態(tài)。如果你嘗試將Null賦給它們會得到“無效使用Null”的錯誤。因此從可能為Null的源如數(shù)據(jù)庫賦值時必須用IsNull保護。6.2 函數(shù)與API設(shè)計建議明確契約在函數(shù)注釋中清晰說明參數(shù)是否可以接受Nothing/Null/Empty以及返回值在何種情況下會是這些特殊值。優(yōu)先返回具體類型如果可能讓函數(shù)返回具體類型而非Variant。調(diào)用者無需擔(dān)心Null或Error。如果確實需要表示“未找到”或“錯誤”可以考慮其他模式返回一個布爾值表示成功/失敗并通過ByRef參數(shù)返回結(jié)果。返回一個自定義的包含狀態(tài)和結(jié)果的類實例。錯誤處理對于不可恢復(fù)的錯誤使用Err.Raise主動拋出錯誤。對于可預(yù)見的、作為正常業(yè)務(wù)邏輯一部分的“未找到”等情況返回一個特定的Error值如CVErr(2042)或一個特殊常量如vbNullString比返回Null或Empty更明確因為后兩者的含義可能模糊。6.3 代碼可讀性技巧使用有意義的常量或函數(shù)包裝不要到處寫If IsNull(...)。可以定義像之前Nz()那樣的工具函數(shù)或者定義模塊級常量。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注釋說明特殊值對于可能返回Null或特定Error值的函數(shù)在函數(shù)頭部用注釋明確說明。‘ 函數(shù)CalculateBonus ‘ 參數(shù)sales – 銷售額Double類型 ‘ 返回值Variant。成功時返回獎金數(shù)額(Double) ‘ 如果銷售額為負數(shù)返回CVErr(2023)自定義錯誤表示無效輸入 ‘ 如果計算過程出現(xiàn)除零錯誤返回CVErr(11)。處理Nothing、Empty、Null和Error本質(zhì)上是在處理程序的“邊界情況”和“異常狀態(tài)”。把這些情況考慮周全你的VBA代碼的健壯性和可維護性會提升一個巨大的檔次。剛開始可能會覺得繁瑣但一旦形成肌肉記憶寫出穩(wěn)定可靠的代碼就是水到渠成的事。最關(guān)鍵的是不要再只用If var “”來判斷所有“空”了根據(jù)場景該用Is Nothing、IsEmpty還是IsNull心里得有桿秤。下次再遇到詭異的bug不妨先想想是不是哪個“空”在跟你玩捉迷藏。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91大神操美女| 综合色天天| 九九九九毛片| 99热在线这里| 亚洲国产精品成人va在线观看| 丁香天堂夜| 色噜噜狠狠色综合日日| 五月婷中文字幕| 五月天婷婷成人资源站| 四季AV综合网| 亚洲中文字幕在线观看| 婷婷五月,偷窥偷拍网| 五月天婷婷色小说| 日本天天综合| 99热久只有| 熟女人妻视频| 超碰在线91| 亚州日本欧州韩美高青高潮一| 五月天天堂久久| 丁香婷婷五月色综合| 日韩无码成人电影| 久婷婷| 亚洲情a| 久热这里只有精品性色AV| 久久婷婷五| 激情综合五月| 欧美性猛交XXXX乱大交极品| 日逼AV影音先锋男人资源站| 亚洲精品无码一区二区| 激情五月综合网| 久久色五月| 激情综合色播| 99热一区| 婷婷色丁香五月| 五月亚洲| 99久热| 亚洲狠狠操| 婷丁香久综合| 99这里只有精品在线| 丁香五月婷婷色| 丁香五月婷婷婷桃花影院| 涩丁香| 中文字幕日产A片在线看| 免费亚洲婷婷五月| www.狠狠操| 色情五月停停丁香| 色五月综合| 婷婷五月另类网站| 色五月婷婷影院| 色五月婷婷综合| 天天视频亚洲| 996热re视频精品视频| 五月天激情图片| 激情五月婷婷综合色播小说| 激情影院丁香五月| 99这里只有精品|v| 97色五月婷婷在线| 婷婷五月色影视先锋| 色天使色婷婷| 色色色综合视频| 亚洲色色图片| 99国产视频网| 色999亚洲人成色| 99精品热| 大香AV| 五月婷婷日本| 月月AV| 成人五月天在线视频在线观看| 五月天天天综合| 99re思思精品视频在线观看| 99精品视频免费| 网站免费一站二站| 女人高潮内射99精品| 疯狂做受XXXX高潮A片| 亚洲精品久久久无码| 七月婷婷色香综合网| #NAME?| 草草影院爱爱| 呦呦v线| www激情网| 天天插天天爽| 成人美女网| 超碰成人影视| 99热这里只有精品在线免费| 青青草五月天| 在线中文AV| www,超碰| 色了色综合| 天天日 天天草| 人妻久久久久久久| 久久久久久久久久久44| 国产精品久久久60086| www.五月.com| A片试看120分钟做受图片| 在线日韩av| 九九色色网| 天天成人五月天| 激情综合色播| 丁香五月激情图片婷婷| 六月丁香婷婷拍拍| 色色五月天网站| 大香蕉婷婷| 婷婷丁香五月天大香蕉| 色丁香久综合在线久综合在线观看| 久久精品人妻| 九月色婷婷综合亚洲| 91色综合| 婷婷丁香激情综合色情| 69精品无码一区二区三区| 99久久9| 婷婷五月丁香五月天| 激情性爱五月| 久久99久久久久久久噜噜| 丁香香五月激情免费视频| 婷婷99狠狠躁| 91高潮喷水久久久久久久久| 九九成人精品| 野战J办公桌椅H| 婷婷五月天激情小说| 激情五月天小说视频| 欧美日韩一区二区三区四区| 夜夜爱伊人| 精品久久久久久久久久久久人妻| 亚洲妇女熟BBW| 大香蕉五月丁香| 五月婷在线播放| 99热思思| 99热首页在线30| 久9视频| 97超碰免费超级在线观看| 996er热| 亚洲人成人五月天| 五月丁香色欲| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | A色色| 超碰人妻在线| 国产成人在线精品| √天堂资源在线人妻熟女| 99热传媒| 自拍视频在线观看9| 婷婷久久五月| 亚洲欧美成人在线| 色婷婷六月性| 丁香婷婷大香蕉| 色五月婷婷综合在线| 五月丁香六月婷婷视频| 日本性视频| 色婷婷婷综合五月天| 国产精品久久久久久白浆色欲| 色婷婷色五月综合| 婷婷综合网| 久久婷婷五月综合色欧美| 日日骑夜夜撸| 99操逼| 日韩无码专区| 开心激情婷婷| 99re热在线视频| 欧美碰碰碰| 五月婷婷丁香婷婷| 91久久| 97在线刺激| www.99婷婷| 91色在线/日韩| 色五月天堂| a网站免费观看| 亚洲天堂热| 五月婷婷啪| 午夜丁香丁香婷婷| 开心五月婷婷伊人| 五月婷婷影院| 午夜九九电影| www.com亚洲网站在线免费| 日韩在线观看亚洲| 婷婷热婷婷色| AV成人在线播放| 日本色天堂| 婷婷导航| www.色欲丁香婷婷| 欧美日韩999| 久久五月天大美女| 五月丁香六月婷婷综合| 天天插天天爱| 五月天开心激情综合网| 色综合色综合网| www色色com| 无码婷婷五月天| 亚洲激情五月| 中国女人做爰A片| 精品国产va久久久| 久久亚洲婷婷综合色五月| 婷婷丁香综合网| www.婷婷五月| 午夜不卡成人一区二区| 97操操| www.丁香黄色五月天人与| 五月婷婷丁香俺日污视频| 色域五月婷婷丁香| 国产综合丁香五月天| 99热综合| 99热综合| 久久久五月四色| 女操碰| 欧美槡BBBB槡BBB少妇| 色播激情五月天| 在线播放中文字幕| 91热视频色网站| 成人综合网站| 丁香五月六月| 婷婷射丁香| 影音先锋人妻出差| 天天日夜夜夜操操操操| 久久久久久久丁香五月天婷婷| 99日热在线视频| 久/久精品99看9| 99热在线只有精品| 五月婷婷开心丁香| 色婷婷香蕉丁丁网| 天天做天天要天天爽| 五月婷婷偷拍| 五月天婷婷社区久久综合| 久久精品一区二区三区四区| 综合激情婷婷| 婷婷在线播放| 99激情视频| 丁香六月啪啪啪| 五月天综合图片| 丁香五月网络网络| 激情五月天啪啪视频| 91打屁股视频网站| 91九色国产熟女| 伊人喵咪a V| 91丨九色丨国产打屁股| 日韩成人综合网| 99在线播放视频| 日韩精品二三区| 99色综合网| 久久综合五月| 日韩高清久久| 大香蕉欧美在线| 久99999热视频在线观看免费| 女婷久久| 99在线热| 色噜噜狠狠色综合成人网| 五月婷婷免费在线视频| 思思热高清在线观看| 久久 这里只有精品1| 1024手机在线观看看片_日韩精品| 天天爽天天草| 欧洲综合色| 狠狠擼综合| 99热91| 久久婷视频| 狠狠 久久| 乱乱av| 六月婷婷综合| 亚洲色久| 九色亚洲| 丁香9月婷婷| 人妻激情久久| 九月婷婷在线观看| 五月天丁香看婷婷| 亚洲无aV在线中文字幕| 九九久久99| 狠狠色狠狠| a在线免费v| 久一网站| 26UUU一区二区| 超碰免费观看| 丁香九月综合激情| 日韩色色色色色| 婷婷色丁香五月| 久操热线| 丁香桃色综合网| 青青草a在线| 99热在线观看| 91碰免费视频| 国产精品国产| 人妻性爱av网站| 丁香五月天欧美成人| 九九精品网站| 色J香五月天| 婷婷五月天开心网| 狠狠爱综合| 99色热| 五月综合激情婷婷六月色窝| 国产色色色色色| 99男人的天堂| 色色婷婷综合网| 天天做 天天爱| 婷婷五月天激情开心网| 天天日天天干天天操| 久久伊人大香蕉| 超pen个人视频97| 五月停性愛| 中文av在线观看| 五月久久婷婷丁香| 99视频这里只有久久精品 | 婷婷色偷拍| 久热AA| 天天爱天天做综合| 99超级碰碰| 狠狠色丁香久久久婷| 色五月丁香激情| 婷婷五月亚洲一本在线丁香| 久久XX| 超碰69天堂| 91 九色 入口| 婷激情五月| 99在线免费视频| 五月丁香啪啪啪| 亚韩精品视频1区| 五月激情网站| 五月天六月天| 99精品视频免费观看| 中文字幕AV在线播放| 99色综合| 色五月婷婷在线| 五月婷婷开心深| 日本五月天一页| 五月婷婷免费在线视频| 99五丁香月| 大香蕉久艹| 玖玖福利视频资源| 丁香五月电影| 天天操B| 激情五月天www| www.国产色| 丁香九月色| 欧亚洲在线高清视频| 色婷婷九月| 五月丁香婷婷啪啪| 狠狠操狠狠操| 99久久玖玖| 开心综合激情综合| 色久综合| WWW,五月天| 激情五月天在线免费美女视频| 99久热| 中文字幕av亚洲| 狠狠色丁香婷婷基地| 亚洲综合另类| 亚洲六月综合激情久久下卡| 六月婷婷色宗合| 五月婷婷激情综合| 人人澡玖玖一| 日韩99视频| 青吴乐视频| 日日操日日射| 婷婷在线五月综合| 久色中文| A片女女女女女女BBBB| 久久视频婷婷视频| 日韩无码专区| 久久aaa| se99视频| 久热精品视频在线观| 99视频激情四射| AV片在线观看| 五月天.com| 丁香婷五月天开心六月| 色情五月| www.色9| 激情综合色| 五月天伊人综合| 日本熟女内射| 嫩草视频。| 婷婷丁香五另类网站| 香蕉AV福利精品导航| www久久久| 久九色| 99热99精品| 丁香五月婷婷AV在线| 丁香五月婷婷综合激情哟哟哟| 情婷婷五月天| 久久婷婷激情四射五月天| 婷婷成人五月天成人文学小说| 4438亚洲欧美| 五月天婷婷久久| 色噜久| AV性爱网| 色婷婷久久天天性爱| 婷婷五月色综合| 婷婷久久网| 五月天com| 26uuu色噜噜精品一区| 91超级碰| 五月婷婷激清网| 大香蕉娱乐| 五月天婷综合| 成人va在线观看视频| 久色网| 色婷五月天亚洲| 无码区婷婷五月花开| 99re久热| 色五月网址| 五月天开心激情网色欲无码| 九色成人AV在线| 99热在线中文字幕| 亚洲小电影在线观看黄999| 超碰人人操在线| 丁香五月丐人妻| 午夜天天精品视频| 色情久久久| 色色色视频免费无码 | 五月停停色| 女人天堂AV| 久久香蕉婷婷五月天| 97超碰99热99| 久9热| 丁香五月亚洲天堂| 激情综合九月| 色色色色丁香| 五月开心久久| 激情五月天影院| 狠狠色色| www九月婷婷| 婷婷伊人綜合中文字幕| 五月婷在线观看| 99开心五月五月丁香激情| 嫩草极品| 激情五月婷婷丁香六月| aaa久久久| 婷婷综合五月| 五月花激情| 色欲久久综合| 婷婷综合另类| 风流少妇A片一区二区蜜桃| 五月天丁香综合久久国产| 5月丁香婷婷| 超碰伊人碰婷婷五月| 99热最新| 婷婷五月丁香综合| 99噜噜| 五月婷婷影视| 五月天婷综合网站| 九九RE视频在线精品| 无码激情AAAAA片-区区| av大香蕉| 日本美女上人| 99激情视频| 夜夜操夜夜姧| 五月婷婷插一插| 婷婷色色网| 日韩无码91| 九九色婷婷五月天| 成人视频网| 开心激情综合| 超碰91在线| 五月六月婷| 极品人妻videosss人妻| 五月丁香日本片| 99热日韩| 久久久激情视频| 久久3级片| 亚洲爆乳无码精品AAA片蜜桃| 久草五月天| 欧美Va在线| 五月色丁香国产在线视频| 久热久| 97香蕉久久超级碰碰高清版| 91在线视频综合| 免费黄色AV| 婷婷五月丁香网| 99久久成人| 亚洲色五月天在线| 狠狠擼综合| 婷婷玉月丁香五月在线视频| 人妻熟妇六区| www.思思99热| 乱色色色| 久久99久久99精品免观看软件| 丁香亚洲婷婷五月| 婷婷激情综合网| 视色网在线播放| 色五月xxx| 丁香成人综合| 人人人人人人人草| 直接看的av| 91成人性爱视频| 五月开心深爱激情网| 五月激情六月综合| 久久婷婷91| 日本色图综合| 色色无码| 99久久9| 日韩成人精品中文字幕| 国产又色又爽又黄又免费| 亚洲无AV在线中文字幕| 激情五月天。| 色婷婷五月综合在线| WWW色色色COm| 综合五月丁香久久| 能看的av片| site:feetmall.com| 婷婷五月综合激情免费| 婷婷色五月激情| WWW,五月天| 色婷婷丁香五月观看| 日本三级日本三级99| 欧美天天综合网站上去吧| 色情五月天首页| 99国产小视频| 粉嫩av蜜桃av蜜臀av| 大香蕉婷婷| 中文字幕中文有码在线| 久久大香蕉同僚| 激情综合婷婷五月| 99热久久这里只有精品2010| 天天色色天天| 碰99在线| 超碰人人草| 天天摸天天舔天天爽| 日韩1区2区| 五月婷婷影| 操人妻AV| 六月婷婷av| 大香蕉综合| 日日夜夜小色哥| 六月丁香色色| 色色婷婷综合| 中文字幕婷婷| 日本色五月婷婷| 日日干天天爽| 激情久久婷婷| 婷婷久久国产视频| 激情综合五月| 亚洲在线成人| 天天天天天操| ay2区| 综合五月丁香六月婷婷| 第四色五月天| 四季AV综合网| 99精品爱| 大香线蕉伊人| 婷婷色基地在线看 | 深爱五月激情| 五月丁香久久婷| 激情五月激情综合俺也去婷婷小说| 久久这里只有欧美| 色色欧美色色色| 丁香五月自拍| 亚洲色婷婷五月天| WWW.久久久久久久久久久久久| 丁香蜜臀黄色婷婷五月天| 婷婷五月天免费视频| 国产精品色| 日韩五月婷婷久久| 天天干天天爽天天爽| 色婷婷视频| 91操屁股| 五月天六月婷婷| 久久婷婷六月综合国际| 五月婷久久| 淫视馆aV二区一区| 熟女网站久久| 欧美久久网| 激情久久婷婷| 色爱五月天| 亚洲中文字幕在线观看| 26uuu亚洲色| 色综合伊人网| 五月天狠狠网站| 中文字幕,综合,91| 热九九九九| 巴基斯坦粉嫩无码视频| av操一操| 婷婷丁香日韩五月| 一级操逼内射在线视频| 色色综合网www| 日日干综合| 五月丁香啪啪啪| 色色综合成人网| 操97| 99re熱| 五月丁香色色网| 99综合网| 久久久97| www.伊人天堂偷偷婷婷| 精品国产AV色一区二区深夜久久| 五月激情偷拍婷婷| 久久五月天激情| 激情婷婷亚洲五月| 99久| 五月婷婷|欧美| 啪啪夜久久| 超碰猛烈的性猛交| 婷婷精品免费久久| 三年高清大片免费观看国语| 婷婷五月天亚洲天堂| 国产精品第一国产精品| 婷婷射图五月天| 99综合成人视频在线观看| 丁香六月五月天| 丁香五月婷婷大香蕉| 99热成人精品网站| VA日本视频| 中文字幕日产A片在线看| 色视五月天婷婷| 久久曰9| 先锋资源91| 婷婷在线精品| 色激情综合狠狠婷婷| 成人午夜天| 色色网五月激情| 亚洲狠狠丁香婷婷香蕉| 婷婷情色五月天| 综合激情婷婷| 中文成人在线| 色色色视频| 丁香五月激情啪啪综合| 成人网站免费在线播放| 亚洲人人96@| 伊人天堂婷婷| 婷婷六月色| 久色成人| 丁香五月天天| 99ER热精品视频| 激情小说视频图片网| 91啪啪网| 午夜天堂一区人妻| 人人综合久| 伊人五月人妻精品| 中文字幕精品在线观看| 亚洲精品白浆高清久久久久久| 九九免费视频| 性色播| 婷婷五月丁香色色| 99免费热视频在线| 欧美综合五月丁香六月婷| 在线超碰91| 99视频只有精品| 囯产精品久久欠久久久久久九大| 密臀久久| 99riAv1国产在线观看| 搡BBBB搡BBB搡18| 久久五月激情| 天天干天干| 99惹| 中文精品在| 高清av在线国产| 日韩另类| 丁香六月激情四射| 五月丁花六月丁香综合| 日韩狠狠色婷婷| 七七九色| 骚五月婷婷| 婷婷婷久久| 色播五月丁香| 99色色网| 久久性爱视频| 99激情视频| 五月激情基地| 欧美激情2025| 天天噪夜夜爽| 婷婷五月中文在线| 色色综合成人网| 国产成人AV在线播放| 99久久婷婷精品视频| 欧美色婷婷| 人妻AV在线| 天天色天天操天天射| 婷婷五月六月丁香综合| 天天婷婷天天| 丁香五月天欧美| 性爱网久久| 97资源欧美日韩大香蕉超碰一区| 中文字幕AV网址| 特黄三级又爽又粗又大| 婷婷色五月大香蕉在线| 丰满少妇乱A片无码| 俺也去色| 内射人妻视频国内| 中字幕视频在线永久在线观看免费| 99热在这里只有精品| 欧美精品99| 超级碰碰91| 五月天成人免费视频| 丁香五月欧美午夜视频| 五月丁香激情综合久久| 26UUU精品一区二区| 成功精品影院| 一级精品999WWW| 激情五月色婷婷| 2025天天日爽| 武则天精品久久| www色五月| 色九月婷婷综合| 99操99| 九九色综合九九色| www.色五月| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 丰满熟女人妻一区二区三 | 伊人五月综合网| 99在线免费视频| 久久激情五月婷婷| 人人操AV| 婷婷丁香五月天激情四射| 99热 日韩| 97成人超碰免| 丁香五月91| 精品国产va久久久久| 狠狠操天天日| 991自拍视频| 黑人熟妇一区二区三区| 天天爽在线视频| 天天干天天操天天上| 婷婷色基地| 久久大香蕉同僚| 男女啪啪做爰高潮无遮挡| 日本操B视频| 91在线观看www| 久久曰曰| 五月丁香六月激情狠狠| 91精品综合久久久久久五月丁香 | 成片免费观看大全| 91se在线视频| 热成人网| 亚洲高清在线| 免费无码毛片一区二区A片| 五月婷婷黄| 欧美激情丁香五月| 天天情色综合网| 色情丁香五月婷婷精品| 婷婷视频在线| 午夜亚洲国产精品av一区二区| 天天做综合| 538在线精品| 亚洲激情四射| 婷婷丁香色女人| 亚洲综合在线伊人婷| 开心五月婷婷在线| 亚洲区视频| 91丁香色| 激情啪啪五月天| 五月婷婷开心丁香| 久久99精品久久只有精品| 丁香婷婷久| 色九九综合| 玖玖资源站中文| 国产SUV精品一区二区6| 97色欧美| 色欲久久久久| 五月丁香婷婷五月色| 99人妻碰碰碰久久久久禁片| 国产精品视频久久99| 亚洲AV中文在线| 婷婷六月久久| 开心久久爱五月天| 色色五月天丁香| 婷婷丁香五月社区亚洲| 丁香五月日啪| 99热精品在线| 激情五月综合网最新| 色久综合天天做视频| 欧美成人va| 欧美内射AA| 五月天开心婷婷激情网站 | 亚洲综合激情五月天婷婷| 激情六月色| 久久五月天激情| 亚洲精品乱码久久久久99| 99色综合| 九九热99在线视频| 激情六月一二| 综合aV在线| 久久网站免费亚洲| 九九在线视频| 欧美日韩99| 国产成人AV在线播放| 1024欧美日韩精品久久久| 五月天成人手机在线视频| 99热这里是精品| 这里只有精品免费在线视频| 天天干天天干天天干| 五月天丁香啪啪啪啪| 丁香五月六月激情久久| 狠狠久久婷五月综合色| 久久草婷婷丁香网站| 成人无码精品1区2区3区免费看 | 夜丁香五月婷婷| 精品香蕉99久久久久网站 | 五月天久久网站| 碰超亚洲| 婷婷五月av| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 在线视频区| 激情五月www| 玖玖91| 激情色情五月天| 变态另类色图| 色婷婷精品| 欧美婷婷丁香五月| 日韩成人无码人妻| 丁香五月天堂| 久热91| a v色婷婷| 五月J香蕉婷婷| 狠狠色精品综合| 99色视| 在线观看亚洲AV| 五月丁香婷婷色色色| 天天骑天天操| 亚色网站小视频| 无码激情AAAAA片-区区| 97婷婷五月| 久久婷婷五月综合色丁香| 综合成人小说婷婷| 在线你懂的亚洲欧| 亚洲综合激情五月久久| 大香蕉手机视频| 97色碰| 亚洲噜色| 99九九玖玖| 五月天激情电影| 五月天天天综合| 67久久| 久久综合中文字幕| 欧亚色色| www.com在线操视频免费观看| 无码色色色| 色五月色五天色情网| 538在线精品| 开心激情网五月天| 第四色激情网| 操逼视频网址| 色综合久久88色综合天天99| 婷婷六月丁香开心深深爱| 亚洲操女| 久久久8| www.99热| 日本少妇AA一级特黄大片| 97久久精品| 亚洲艹网| 99ri精品在线观看| 久久久中文| 99久久大片| 婷婷成人综合| 久久婷婷青青| 五月婷婷激情网| 丁香五月综合在线视频| 久99热| 五月天婷婷丁香人人操91| 色区久久| 亚洲综合婷婷| 五月婷婷色播| 熟妇高潮一区av| 欧美丁香婷婷五月| WWW,婷婷,COM| 色五月婷婷激情综合网| 婷婷色吧| 五月天大香蕉av| 五月婷婷狠狠干| 天天天天爽爽天干| 日日日,com| www色哟哟| 极品人妻VIDEOSSS人妻| 99人妻碰碰碰久久久久视| 99久久综合精品五月天| 婷婷五月天最新综合你懂的| 51精品国内探花| 色噜噜狠狠色综无码久久合欧美| 婷婷丁香花五月天| 亚洲激情网站| 玖玖精品资源| 久久婷婷青草五月天| 99黄色在线视频精品熟女| 欧美久久九九| 五月丁香亭亭| 五月天激情四射| 14色综合婷婷| 99这里的视频都是精品| 五月丁香婷婷五月色| 六月婷婷色| 影视av久久久噜噜噜噜噜三级| 丁香五月天啪啪激情综和网| 五月婷婷色男女| 啪啪91| 久久98热re| 色玖玖玖| 亚洲第一影院高清无码网站| 大香蕉太香蕉视频97| 精品少妇人妻AV无码专区偷人| 婷婷久久五月天| 99色色网| 另类图片激情五月| 色婷婷五月天偷拍| 五月天婷婷7米| 五月婷色激情五月| 五月婷婷激情综合网 | 色玖玖玖| 婷婷综合另类| 久久婷婷资源| 99视频综合网| 99色色网| 无码少妇高潮喷水A片免费| 97干在线视频| 久久久国产精品黄毛片| 另类少妇人与禽zOZZ0性伦| 亚洲va综合va国产va中文| 五月婷婷丁香| 色婷婷影视| 国产婷伊人| 色婷婷伦理| 热热久久精品视频| 热99久久这里只有精品| 伊人六月丁香婷婷| 性五月激情| 婷婷五月天无码视频| 中文字幕丰满乱孑伦无码专区| 五月丁香婷婷无码A∨| 激情文学天天| 天天色伊人| 婷婷夜夜夜夜| 毛片毛片毛片毛片| 五月天小说激情| 婷婷六月激情在线视频| 精品亚洲VA网站| 久久激情五月天| 丁香五月色| 99热碰碰热| 亚洲第一综合| 综合久久五| 丁香婷婷婷五月综合色情| 日韩AV在线免费观看| 丁香五月婷婷99| 久热久| 99热精品在线播放观看| 性生活视频98791| 五月激情影院| 成年人最刺激的综合网| www色五月| 成人亚洲精品久久久久| 丁香久久九九99| 7超碰自拍| 久碰久操| 欧美97p| 欧美色频| 99久久国产宗和精品1上映| 婷婷五月天97干| 最新久久网址| 一个色的综合| 婷婷五月天亚洲| 亚洲激情另类| 在线看AV| 性爱AV天堂| 亚洲日日操| 五月婷婷六月激情| 97caop| www.com任你艹| 亚洲AV激情五月综合网| WWW,婷婷,COM| 五月婷婷大香蕉| 色五月婷婷影视| 可以免费观看的av网址| 久草热在线视频| 婷色五月| 思思99久久| 丁六月激情| 永久地址 色| 色五月婷婷影院| 99热九九九九| 热的国产,热的综合,热的有码| 思思精品热在线| 婷婷五月天激情网| 蜜乳人妻一区二区三区| 婷婷五月天激情在线观看| 日韩精品一品二区三区的使用体验| 99久久网站| 欧美三级黄色片久久| 人人摸人人射| 丁香六月啪| 五月婷婷六月丁香玖玖玫瑰91| 热无码A∨| 丁香花五月天激情| 五月丁香婷久久| www天天干| 97久久超碰| 九九精品婷| 草AV9999| 五月综合激情婷婷六月色窝| 九九综合网色全集| 激情五月四色| 精品夜夜澡人妻无码AV| 丁香五月影院| 久久婷婷五月综合色丁香| 综合深爱五月| 激情丁香五月婷婷| 婷婷五月综合网| 99热碰碰| 日本视频欧美观看免费| 激情五月天伊人av| 玖玖@三月天天丁香婷婷| 五月丁香在线国产 | 97碰久久| XX久久| 97超碰在线免费观看| 日日噜噜久久婷婷五月天| 色五月首页| 黄色av网站在线免费播放| 激情二色月| 五月色丁香| 国产.亚洲.欧洲视频在线| 九九热在线视频| 九月婷婷在线观看| 五月激情综| 97碰碰免费.视频| 色色色色热热| 99热最新| 日本色噜| 国产精产国品一二三在观看| 久热这里只精品| 久久538| 激情久久五月天| 久久女婷| 五月天社区| 涩五月婷婷| 久色网| 色久综合| 欧美成性色| 少妇达人正片在线播放_ikun_福利吧| 99综合成人视频在线观看| 激情婷婷网| www.久久久久久久久久久| 日韩视频99| 丁香婷婷五月综合影院| 久久天堂网| 婷婷五月天成人在线视频| 深爱激情六月天| 99热思思在线观看| 久久小说网| 婷婷五月天狠狠搞干| 综合网网欲色| 99综合视频| 日韩色五月| 欧美色色色色色色色色色色| 天天看A片| 色婷婷六月| 亚洲九九99精品视频在线播放| 五月丁香婷婷色啪| 婷婷情爱五月天6| 色你久久| 亚洲色五月| 天天碰天天插天天操| 激情丁香五月天图片| 少妇人妻人伦A片| 超碰免费在线| 超碰9799| 成人在线日韩欧美| 日夜操B| 欧美色图片88| 强伦轩人妻一区二区电影| 久久婷五月婷| 无码日本精品XXXXXXXXX | 婷婷五月天六月| 久久9RE热视频精品98| 狠狠色噜噜狠狠狠888| 丁香婷婷激情综合五月激情| 少妇性按摩无码中文A片| 日韩啊啊啊| 五月丁香婷婷中文| 91蝌蚪窝视频在线| 色五月五月婷婷| 5月婷婷视频网站综合| 9热成人在线视频| AV在线大香蕉| 五月天欧美 另类小说| www.久久爱.c n| 99热一区| 99久热这里只有精品| 成人网址在线观看| 国产女18毛片多18精品| 另类图片激情五月| 天天干天天操天天上| 久久婷婷夜| www.色五月| 久久综合五月天| 26UUU在线观看| 婷婷成人AV| 天天干在线播放| 91avse| 亚洲色激情| 欧美99| 伊人玖玖综合| 人妻丰满精品一区二区A片| 九九青草热| 这里只有国产精品在线| 另类专区在线观看| 婷婷五月天成人视频| 九九久久99| www.天天干| 色婷婷九月综合| www久久99| 丁香婷婷性久久| 粉嫩AV久久一区二区三区| 九九热欧美| 手机免费福利视频| 天天肏天天插| 五月丁香另类图片| 日韩在线成人电影| 日韩av手机在线观看| 五月天丁香| 天天摸色吧天天摸色吧| 丁香五月婷婷88在线| 欧美三级欧美一级| 人人草碰| 丁香五月激情五月| 国产亚洲精品久久久久苍井松| 99精品在线观看| 第四色大香蕉| 综合婷婷都市激情| 激情综合另类| 色婷婷色久综| 久久99免费视屏| 91狠狠色| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 婷婷99狠| 狠狠婷婷色综合| 五月天激情婷婷| 97天堂| 色情综合网| 久久久激情视频| 色五月 五月婷婷| 5月婷婷6月六月丁香| 丁香色情五月综合激情| 五月天久久久| 久操人| 午夜微拍福利| 日韩aⅴ视频| 伊人热在线大香蕉| 91聚色综合网| 99国产在线精品视频| 国精产品一区一区三区免费视频 | 亚洲久热| 久操操| 色愛综合网| 99在线观看| 激情网站五月| 久久99免费视屏| 五月婷婷与六月丁香图片激情| 久热9| www.夜夜操.con| 天天综合激情| 婷婷五月天影视| 亚洲综合婷婷六月丁香五月| 99在线精品免费视频| 综合网天天| 亚洲六月婷婷| 99九色视频在线观看| www.99视频| 国产激情婷婷| 九九热10| 丁香啪啪| 亚洲国产精品VA在线看黑人| 五月天丁香久久综合| 色色色com| 香蕉乱插| 婷婷五月天激情电影| 69热在线| 婷婷综合激情| 亚洲瑟瑟精品在线| 天天色亚洲| 91九色熟女| 开心五月激情网| 国外亚洲成AV人片在线观看| 婷婷丁香六月天激情四射网| 久久综合五月婷婷| 久久综合激情| 丁香五月婷婷综合精品素人| 狠狠搞五月天| 天天日夜夜操五月| 色婷视频| 久久五月丁香| 伊人五月天| 9热久久在线| 天天肏在线观看| 久久婷出差欧美色两性综合网| 九九美女视频| 青青草五月天| 色五月丁香总合网| 热99re| www.91.com黄| 五月婷婷综合网| 秋霞少妇毛片| 婷婷五月天成人娱乐| 天天cha成人综合网| 九九热最新| 九九久久综合| av第一二区| 久久草人妻| 人人摸人人摸| 国产精品18久久久| 色婷婷aV四虎| 丁香五月综合久久八| 丁香婷婷综合激情五月色| 久99| 涩涩涩五月天| 色婷婷色和| WWW.激情| 激情综合五月开心狠狠| 少妇性按摩无码中文A片| 欧美色偷拍| 色五月五月丁香| 婷婷丁香五月综合| 一本狠婷婷综合| 天天做综合| 九九性爱网| 丰满少妇乱A片无码| 婷婷色在线观看| 婷婷深爱五月丁香| 激情第四色| 五月丁香网站| 色婷婷五月综合在线| 99综合| 停停五月色宗合| 狠狠狠激情网| 天天舔天天爽| www91久久| 色五月视频,小说| 欧洲色色| 26UUU欧美激情一区二区| 成人性爱精品视频| www.yw尤物| 色播五月天婷婷老师| 亚洲色情网站| 六月丁丁香| 久99久视频| 亚洲va欧美| 91919191919久久成人视频| 人人操97| 另类五月婷婷| 久久激情五月| 五月婷婷深深爱| 99热这里只有精品最新地址获取| 五月丁香亭亭| 天天综合激情| 色噜噜97视频在线观看| 狠狠色噜噜狠狠亚洲A∨| 九九视频在线免费视频| 天天日夜夜爽| 婷婷丁香成人| 五月天精品视频| 97久久婷婷色| 五月婷六月丁| 成人综合网站| 国产欧美日韩性爱| 91超碰人人操| 91久久综合亚洲噜噜成人在线| 五月婷婷六月丁香综合在线| 怎么样可以看免费的一级av| 五月婷婷视频啪啪美女| 婷婷丁香六月天| 九九色热| 色噜噜狠狠色综合日日| 五月婷婷另类| 日本色道视频网站| 99啪啪视频| 久久婷婷91| 久久99婷婷| 五月婷婷久久久久| 婷婷五月天免费视频| 久久99日本精品视频免费观看| 夜夜夜夜撸夜夜操| 97色综合视频| 很很干天天干| 97人人看一| 五月婷婷欧美|