One*_*kuo 17 vb.net vba excel-vba excel-2010 powerpoint-vba
第一次海报,所以如果有任何格式或指导我没有遵守,请告诉我,以便我可以解决它.
所以我基本上要求用户提供excel文件的文件目录,然后设置一些变量(最初设置为public作为项目变量,因为这些变量在其他地方被使用和更改).我还添加了行来将这些变量设置为空(以防万一,我不认为它应该重要).然后我将这些变量设置为我想要访问的excel文件,工作簿和工作表.
Dim filepath as String
filePath = CStr(fileDialog) 'ask file dir, set to string
Dim sourceXL As Variant 'these three were orig project variables
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceXL = Nothing 'set to nothing in case...?
Set sourceBook = Nothing
Set sourceSheet = Nothing
Set sourceSheetSum = Nothing
Set sourceXL = Excel.Application 'set to the paths needed
Set sourceBook = sourceXL.Workbooks.Open(filePath)
Set sourceSheet = sourceBook.Sheets("Measurements")
Set sourceSheetSum = sourceBook.Sheets("Analysis Summary")
Dim measName As Variant 'create variable to access later
Dim partName As Variant
sourceSheetSum.Range("C3").Select 'THIS IS THE PROBLEM LINE
measName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
sourceSheetSum.Range("D3").Select
partName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
Run Code Online (Sandbox Code Playgroud)
所以我创建了两个不同的工作表变量'sourceSheets'和'sourceSheetsSum',如果我使用'sourceSheets',代码可以工作,但如果我使用'sourceSheetsSum',则会出现错误1004.我已经尝试完全删除变量'sourceSheet'的代码,以防由于某种原因覆盖'sourceSheetSum'.
我相当有信心,Excel工作簿和表存在,并且被正确调用,因为我通过在工作簿和输出的名字所有的表,如下图所示跑的代码回路快一点.
For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j
Run Code Online (Sandbox Code Playgroud)
随着调试输出
测量
分析摘要
分析设置
那么,有没有人有任何想法这个错误可能意味着什么,或者我怎么可能去寻找更多关于错误实际是什么?
编辑:所以我决定在工作表名称的列表中添加一些内容,不确定它是否会有所帮助.
For j = 1 To sourceBook.Sheets.Count
listSheet(j) = Sheets(j).name
Next j
Debug.Print (listSheet(2))
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))
Run Code Online (Sandbox Code Playgroud)
调试打印分析摘要,所以我知道工作簿中存在工作表,并且名称中的"拼写错误"不应该存在任何问题.
但是代码在同一行仍然具有相同的错误.
deusxmach1na:我想你想让我改变
Dim sourceXL As Variant
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceSheet = sourceBook.Sheets("Measurements")
Run Code Online (Sandbox Code Playgroud)
至
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
Run Code Online (Sandbox Code Playgroud)
但这并没有改变错误,我记得我有类似的错误,然后改变它,因为我读到这个变体就像一个捕获所有,实际上并不是什么样的变体.
Jon*_*ell 25
您必须先选择工作表,然后才能选择范围.
我简化了示例以隔离问题.试试这个:
Option Explicit
Sub RangeError()
Dim sourceBook As Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceBook = ActiveWorkbook
Set sourceSheet = sourceBook.Sheets("Sheet1")
Set sourceSheetSum = sourceBook.Sheets("Sheet2")
sourceSheetSum.Select
sourceSheetSum.Range("C3").Select 'THIS IS THE PROBLEM LINE
End Sub
Run Code Online (Sandbox Code Playgroud)
用工作表名称替换Sheet1和Sheet2.
重要说明:使用变体是危险的,可能导致难以杀死的错误.只有在您有非常具体的理由时才使用它们.
如果没有先选择其所在的工作表,则无法选择范围.请先尝试选择工作表,然后查看是否仍然出现问题:
sourceSheetSum.Select
sourceSheetSum.Range("C3").Select
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113344 次 |
| 最近记录: |