我有一個遍歷每一行的For循環,我需要從D列中爲循環中要使用的每一行提取值。類型不匹配錯誤#13
我想通過使用計數器的值作爲行號來使用以下內容來拉取值。
X = Worksheets("Test").Cells(4, Counter).Value
我不斷遇到Type mismatch error #13
我有一個遍歷每一行的For循環,我需要從D列中爲循環中要使用的每一行提取值。類型不匹配錯誤#13
我想通過使用計數器的值作爲行號來使用以下內容來拉取值。
X = Worksheets("Test").Cells(4, Counter).Value
我不斷遇到Type mismatch error #13
這是兩個情景我能想到的,當你將得到這個錯誤
A
已經定義X
爲特定的數據類型,但是被分配不同的鍵入它。例如。您已將X
定義爲Long
,但該單元格包含String
。假設您的手機號碼是A1
,它有excelSU
。複製錯誤看到這個例子
Sub Sample()
Dim x As Long
x = ThisWorkbook.Sheets("Sheet1").Range("A1").Value
End Sub
同樣,你可以宣佈一個特定類型的Counter
而利用不同的。例如
Sub Sample()
Dim counter As Excel.Application
For counter = 1 To 20
x = ThisWorkbook.Sheets("Sheet1").Range("A" & counter).Value
Next
End Sub
B
讓我們再次採取細胞A1
的例子。您的單元格有一個公式錯誤,如#N/A
或#DIV/0!
或其他一些錯誤。複製錯誤使用相同的代碼上面,你會用計數器的值作爲行號
BTW得到Type Mismatch Error
編輯
,
Counter
是沒有被用作而是用作Column
。語法是Cells(Row,Column)
您可能會將字符串拖入整數數組或類似的東西。
至於你的for循環: I just answered someone's question on a somewhat similar problems.
我建議去了我給他的全功能的代碼示例。
即因爲:
您正在使用硬編碼值(4rth列)。您最終會遇到維護問題。添加一列的用戶很容易搞砸你的代碼。
你的代碼不會爲自己說話。如果用正確命名的變量替換硬編碼值,它們將會。
注:這可能是在處理器上更多的消費,由於交叉點的數目。如果您想出超過10,000行的表格,您可以隨時調整策略。
檢查鏈路和答案,但同時這裏也是我要如何處理表/ ListObjects做短版:
dim listO as ListObject
set listO = Worksheets("Test").ListObjects(1)
dim listC as ListColumn
set listC = ListO.ListColumns("ColumnTitle")
dim listR as ListRow
dim anArrayX() as Variant
ReDim anArrayX (1 to listO.ListRows.Count)
dim intersectedRange as Range
for i = 1 to listO.ListRows.count
set rowRange = ListO.ListRows(i).Range
set intersectedRange = Application.Intersect(rowRange, listC.Range)
anArrayX(i) = intersectedRange.Value
Debug.Print anArrayX(i)
next i
的d列和行號計數器是細胞(計數器,d) – 2014-11-09 19:20:44