[英]Get information from a dictionary and set it in a cell in excel-vba
這是我第一次使用excel-vba,我遇到了一個小問題。 我創建了一個字典[鍵,值,值],我想將值設置為diferents單元格。 到現在為止我已經這樣做了:
Sub CodisFactura()
Fulla1 = Sheets("Ac2 i Factura").Select
Fulla1.Activate
'''''''''
primeraFactura = 5
ultimaFactura = 30
numeroFactura = 5
numColumnaProva = 15
'''''''''
Dim diccCodis As Object
Set diccCodis = CreateObject("Scripting.Dictionary")
With diccCodis
.CompareMode = vbTextCompare
.Add "1", Array("RX004", "Resta d'ecografies convencionals")
.Add "2", Array("RA00414", "Ecografía de cuello")
.Add "3", Array("RA00415", "Ecografía de torax")
Do While numeroFactura >= primeraFactura And numeroFactura < ultimaFactura
Cells(numeroFactura, numColumnaProva).Value = codiSeleccionat
keysDicc = diccCodis.Keys
codiProva = keysDicc(codiSeleccionat)(0)
nomProva = diccCodis.Item(codiSeleccionat)(1)
Cells(numeroFactura, 7).Value = codiProva
Cells(numeroFactura, 12).Value = nomProva
numeroFactura = numeroFactura + 1
Loop
End With
我在這兩行有“錯誤13”:
codiProva = keysDicc(codiSeleccionat)(0) nomProva = diccCodis.Item(codiSeleccionat)(1)
這是類型錯配匹配錯誤: https ://docs.microsoft.com/es-es/office/vba/language/reference/user-interface-help/type-mismatch-error-13
我該怎么做? 我在整個代碼中做錯了嗎?
你的代碼有幾個問題。
Cells(numeroFactura, numColumnaProva).Value = codiSeleccionat
是向后的。 你希望codiSeleccionat
從細胞中獲取值,而不是相反的方式。
codiProva = keysDicc(codiSeleccionat)(0)
我懷疑你的對象應該是Dictionary,而不是字典的鍵數組
我懷疑你是在工作表單元格中輸入數字,但是當你創建字典時,你正在使用字符串。 "1"
與1
鍵不同
下面的代碼顯示了解決這些問題的一種方法:
Dim diccCodis As Object
Set diccCodis = CreateObject("Scripting.Dictionary")
With diccCodis
.CompareMode = vbTextCompare
.Add 1, Array("RX004", "Resta d'ecografies convencionals")
.Add 2, Array("RA00414", "Ecograf?a de cuello")
.Add 3, Array("RA00415", "Ecograf?a de torax")
Do While numeroFactura >= primeraFactura And numeroFactura < ultimaFactura
codiSeleccionat = Cells(numeroFactura, numColumnaProva).Value
keysDicc = diccCodis.Keys
codiProva = diccCodis(codiSeleccionat)(0)
nomProva = diccCodis.Item(codiSeleccionat)(1)
Cells(numeroFactura, 7).Value = codiProva
Cells(numeroFactura, 12).Value = nomProva
numeroFactura = numeroFactura + 1
Loop
End With
總是聲明所有變量你會更好。 它可以捕獲錯誤並可能減少混亂。 我不明白為什么MS不要求變量聲明為默認值。 選擇Tools/Options/Editor
然后選中Require Variable Declaration
。 這將在任何新模塊的開頭放置Option Explicit
。 要更正此模塊,請在開頭手動輸入。
鑒於您的代碼,下面是結果的屏幕截圖。 當然,您的代碼不會對列O
空白或錯誤條目進行任何錯誤檢查,您應該添加代碼來處理它,否則它將無意義地停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.