第一種可能,cells返回的是一個對象,而你后面strID是一個字符串,類型不匹配吧。
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)薩迦免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
第二種可能,CELL中的兩個參數(shù)需要的的兩個range吧,你用xlssheet.range("d" i) 試試,
vb.NET有時很怪,不同版本,或者不同機器,在操作excel時,判斷單元格是否為空時,會出現(xiàn)不同的錯誤提示。
大多數(shù)情況,xlSheet.Cells(1, 1)="" 就可以判斷這個單元是否有內(nèi)容。
但是有時也會有不同的提示??偨Y(jié)不同機器,不同版本,用下面幾種來試試單元格是否是空白。
xlSheet.Cells(1, 1)=""
xlSheet.Cells(1, 1).value=""
xlSheet.Cells(1, 1).value.tostring=""
如果上面三個代碼都會自動提示錯誤,請用下面終極模式:)
xlSheet.Cells(1, 1).value = Nothing
很簡單,看代碼:
Dim?objexcelfile?As?Excel.Application?=?New?Excel.Application
objexcelfile.DisplayAlerts?=?False
Dim?objworkbook?As?Excel.Workbook?=?objexcelfile.Workbooks.Open("D:\1.xlsx")??'Excel文件路徑
Dim?objimportsheet?As?Excel.Worksheet?=?objworkbook.Sheets(1)?'讀取第一個Sheet
Dim?intRow?As?Integer?=?objimportsheet.UsedRange.Rows.Count??'獲取總行數(shù)
Dim?prod?As?String?=?objimportsheet.Cells(j,?i).value?'讀取單元格的值(i是列,j是行)
'釋放Excel文件
objworkbook.Close()
objworkbook?=?Nothing
objexcelfile.Quit()
注意需要添加 Microsoft.Office.Interop 的引用。
NullReferenceException表示的是你調(diào)用的某一個對象為Null
從你的描述來看,你應(yīng)該是在Form3里面Show的Form6
我建議你不要一行寫太多的代碼,這樣出錯不容易找到問題
你的DataGridView1、CurrentRow、Cells(0)、Value這些都可能為空
你可以先用一個變量保存你選中的單號,而且你可以在出錯的時候看到這個單號到底有沒有取到,進而確定具體問題
你可以在出錯的時候選中這一個對象
然后右鍵,選擇添加監(jiān)視,或者快速監(jiān)視來查看這個對象的值以確定它是不是null
你找的出錯那一行的代碼哪個對象為null,然后再確定問題就好了(一般對象為null都是流程不對或未取到正確的值)
跨窗口傳值的話使用公有屬性是沒有錯的,不過一般不直接傳整個Grid,而是需要什么傳什么;你這里需要單號的話直接設(shè)置單號這個屬性,然后在showFrom6之前把單號取出來賦值過去就好了
按VBA寫法,應(yīng)該是:
xlbook1.Worksheets(1).Range(xlbook1.Worksheets(1).Cells(1, 1), xlbook1.Worksheets(1).Cells(30000, 20)).selcet = xyz
建議你使用BackGroundWorker控件。將代碼寫入控件的事件中,使用它的Start方法就可以開始工作了。是與主程序同時進行的。