我在VBA中的Excel中编写了一个非常有用的宏,并尝试将其转移到用VB.net编写的独立Windows应用程序。我发现所有引用都令人困惑,现在我在转换代码的一般语法方面遇到了麻烦。
我粘贴在相关代码下方:
Dim ElevenSheets As Excel.Worksheet
Dim TwelveSheets As Excel.Worksheet
Dim ThirteenSheets As Excel.Worksheet
Dim WorkingSheet As Excel.Worksheet
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Open("FILENAME.xls") 'Removed file name for company confidentiality purposes.
ElevenSheets = xlWorkBook.Worksheets("2011")
TwelveSheets = xlWorkBook.Worksheets("2012")
ThirteenSheets = xlWorkBook.Worksheets("2013")
WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")
...
Cell = WorkingSheet.Range("B3") '<--- This line causes the error.
CurrentCell = (Cell.Row & "," & Cell.Column)
CurrentRow = Cell.Row
MyColumn = (Cell.Column)
CurrentCell = (CurrentRow & "," & MyColumn)
所以,正如你所看到的,我已经指出了给我一个错误的那一行。我正在尝试设置范围名称“Cell”,并且错误“MissingMemberException未处理没有找到类型'DBNull'的默认成员”。
有谁知道我做错了什么?我确信这是一个非常简单的语法,但我发现整个过程很困难,并且发现很难理解互联网上其他类似的相似主题。
感谢您为此做好准备并让我知道您是否需要更多背景信息,
约什
答案 0 :(得分:0)
我没有看到Cell的任何构造函数。此外,您不必明确声明所有这些工作表。您可以使用xlWorkBook(“WorkingSheet”)之类的东西来调用它们。范围(“B3”)
答案 1 :(得分:0)
我通过反复试验解决了这个问题。我这样做的方法就是改变这些声明:
ElevenSheets = xlWorkBook.Worksheets("2011")
TwelveSheets = xlWorkBook.Worksheets("2012")
ThirteenSheets = xlWorkBook.Worksheets("2013")
WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")
对此:
ElevenSheets = CType(xlWorkBook.Worksheets(1), Excel.Worksheet)
TwelveSheets = CType(xlWorkBook.Worksheets(2), Excel.Worksheet)
ThirteenSheets = CType(xlWorkBook.Worksheets(3), Excel.Worksheet)
WorkingSheet = CType(xlWorkBook.Worksheets(4), Excel.Worksheet)
我不知道将工作表名称更改为工作表编号是固定它还是CType
修复了它。但其中一个做到了。