1樓:
其實問題主要是處在b=array(...)這句,雖然array中的引數是2,5,3等等這些整數,但是array()函式返回值是變體型別,並不是整形。而定義sub時規定的陣列引數是integer,那麼這就造成了型別不匹配的錯誤。
解決此問題可使用以下方法:
修改定義函式時引數的型別,
private sub code(byref a(), byval mystr as string)
之所以你提到修改後出現byref引數型別不符,是因為函式作引數時預設是傳位址的,而第二個引數mystr 前面你有沒有限定其引數的傳遞方式,系統就隨前面的a()一樣都成了傳位址了,淡然要出錯,更改時只要在前面加乙個byval即可。
修改後的**如下(已經通過除錯):
option base 1
private sub code(byref a(), byval mystr as string)
dim ch as string, c1 as string
n = ubound(a) - len(mystr)
if n > 0 then
mystr = mystr & string$(n, "*")
end if
ch = mystr
for k = 1 to ubound(a)
c1 = mid(mystr, k, 1)
n = a(k)
mid$(ch, n) = c1
next k
mystr = ch
print mystr
end sub
private sub command1_click()
dim b()
b = array(2, 5, 3, 7, 6, 1, 4)
myname = "clement"
call code(b, myname)
end sub
2樓:影月白蓮
第二行不用改
要改的是click那裡的dim b()'
改為dim b()%
dim myname as string
b = array(2, 5, 3, 7, 6, 1, 4)myname = "clement"
call code(b(), myname)上下要匹配才可以,用之前要先定義下實參,讓他的型號跟形參一樣end sub
3樓:
dim b() as integer
vb中byref引數型別不符是什麼意思
4樓:問明
意思:第乙個型別 :
傳遞引數未定義型別,假如引數在呼叫前未定義型別,系統自動將他定義為variant型別,由於和過程或函式中的對就引數型別不相同,所以提示」byref引數型別不符」
第二個型別 :
傳遞引數型別已定義,但由於定義方法不對,所以提示」byref引數型別不符」
2、出錯原因
在上機的時候出錯原因是因為第二個型別:傳遞引數型別已定義,但由於定義方法不對。
錯誤的定義:
dim msgtext as integer
正確的定義:
dim msgtext as string
dim txtsql as integer
dim mrc as integer
dim mrc2 as integer
舉例:傳遞引數型別已經定義,但由於定義方法不對,所以提示"byref引數型別不符"。具體情況如下:
當vb中如此定義變數時,將會出現以上錯誤資訊的出現
private sub command1_click()
dim i , j as integer
i = 3
j = 4
call get1(i, j)
text1.text = i
end sub
private sub get1(byref para1 as integer, para2 as integer)
para1 = para1 + para2
end sub
如果將 dim i , j as integer 改為
dim i as integer
dim i as integer
程式執行正常。也就是說,第一種方法的變數定義,只是對 j 做了定義,並未對前面的 i 進行定義
一般在過程和函式中定義引數時採用byref,則要求引數宣告的型別和實際引數的型別完全相同,否則vb就會報告錯誤。
5樓:
在vb中執行過程或函式時,提示"byref引數型別不符"
分析問題主要由於對應引數的型別不符造成的。造成這種情況一般有幾種情況:
1。傳遞引數未定義型別,假如引數在呼叫前未定義型別,系統自動將他定義為variant型別,由於和過程或函式中的對就引數型別不相同,所以提示"byref引數型別不符"
2。傳遞引數型別已定義,但由於定義方法不對,所以提示"byref引數型別不符"。具體情況如下:
當vb中如此定義變數時,將會出現以上錯誤資訊的出現
private sub command1_click()
dim i , j as integer
i = 3
j = 4
call get1(i, j)
text1.text = i
end sub
private sub get1(byref para1 as integer, para2 as integer)
para1 = para1 + para2
end sub
假如將 dim i , j as integer 改為
dim i as integer
dim i as integer
程式執行正常。也就是說,第一種方法的變數定義,只是對 j 做了定義,並未對前面的 i 進行定義
一般在過程和函式中定義引數時採用byref,則需要引數宣告的型別和實際引數的型別完全相同,否則vb就會報告錯誤。參考資料:http:
//www.sudu.cn/info/html/edu/net/20071226/24393.
html
以上為複製的,如果不能解決問題,請你把原始碼貼出來
vb出現"byref 引數型別不符"
6樓:棘棘芽
openht mdbpath
closeht mdbpath
你也只有這兩個外調的函式!應該是這裡吧!
可能你把這兩個函式的傳值方式都是byref(不寫時,預設的值) 也就是按址傳
改成byval 應該就行了
7樓:匿名使用者
dim mdbpath, mdbpathtemp as string
把這句改為
dim mdbpath as string , mdbpathtemp as string
dim conn, conn2 as adodb.connection
這句改為
dim conn as adodb.connection, conn2 as adodb.connection
dim sql, sql2 as string
dim tinvoice, tidcard, tname, tphone, tbid, tsum, tdate as string
dim k, mdbcount as long
改為dim sql as string, sql2 as string
dim tinvoice$, tidcard$, tname$, tphone$, tbid$, tsum$, tdate$
dim k as long, mdbcount as long
vb程式,除錯提示錯誤byref引數型別不符
8樓:
改成。private function f(byval m as integer) as long
vb中byref引數型別不符,幫我看看如何修正,不會寫函式
9樓:匿名使用者
dim all as string, b as string, c as string
abc = split(con, dq) 這個你拿函式名來當陣列,到下面語句時候是把他當函式處理的。換個變數。
if instr(abc(i), dh) > 0 then msgbox split(abc(i, dh))(0)
這個不就是為了得到 dh前面 dq後面的字元嘛?
function abc(byref dq as string, byref dh as string, byref con as string)
dim a
a = split(con, dq)
for i = 1 to ubound(a)
if instr(a(i), dh) > 0 then msgbox split(a(i), dh)(0)
left(a(i),instr(a(i), dh)-1)
next
end function
不懂你要函式返回什麼東西。
10樓:匿名使用者
定義不全,改成下面這樣
function abc(byref dq as string, byref dh as string, byref con as string) as string
abc = split(con, dq)
for i = 1 to ubound(abc)if instr(abc(i), dh) > 0 then msgbox split(abc(i, dh))(0)
next
end function
private sub command2_click()dim all as string
dim b as string
dim c as string
all = "solid=5,asdfsdfsdfdsf"
b = "sol,"
msgbox abc(b, c, all)
vb 編譯錯誤 byref 引數型別不符 是**出了錯誤 請大蝦指導一下 謝謝 **錯了 指導一下
11樓:
將call getfile(text1)改為call getfile(text1.text)
因為text1和string不是同一型別的
12樓:匿名使用者
試下sub getfile(folderpath as string)
改成以sub getfile(byval folderpath as string)
以byval方式傳遞
ecelvba執行時錯誤13型別不匹配
大肚有話說 如果你h2這個單元格的原值是文字的話,下一句中right s,10 1就會彈出截圖所示錯誤 因為文字參與算術運算會出錯 你可以試試將h2寫一個數值驗證有無問題 i的值必須大於等於3.不能小於3.否則肯定訪問失敗。另外你的.range c3 c i 寫法還是寫清楚 if trim acti...
駕駛證號與車牌不匹配是怎麼回事
駕駛證和車牌號本來就不匹配的,只有行駛證才和機動車拍照一致的。機動車駕駛證的簡稱,又作 駕照 依照法律機動車輛駕駛人員所需申領的證照。駕駛機動車需要一定的駕駛技能,缺少這種技能的如果隨意駕駛機動車,就有可能發生交通事故,一般人無證不能上路行駛。但對於已具備安全駕駛技術的人他們在道路上駕駛車輛,這種允...
能力與崗位不匹配的時候,我該不該立馬辭職
啊蠍美人 很少有人能找到乙個適合自己的崗位,我認為你不應該立馬辭職,可以工作一陣子看看究竟合不合適。到時候辭職也不晚,這又耽誤不了什麼功夫,而且能留下來也是美事一樁。分情況討論一下,當能力大於崗位的時候,不要著急辭職,首先要在公司工作一段時間,將自己優秀的業務能力表現給大家。讓領導知道,你在這個崗位...