【发布时间】:2015-06-13 01:52:24
【问题描述】:
我是 vba 新手,我似乎无法修复此错误。 在线获取类型不匹配。 如果 NameColumn.Value = "CR" 那么
我觉得我很接近但看不到问题所在。 发布完整代码希望有人会看到我的错误! 感谢您的帮助
Application.ScreenUpdating = False
Sheet2.Range("A1:H9999").ClearContents
Dim vFileName
Dim MyWorkbook As Workbook
Dim NameColumn As Range
Dim value1 As Range
Dim value2 As Range
Dim value3 As Integer
vFileName = Application.GetOpenFilename("Text Files (*.txt),*.txt")
Workbooks.OpenText Filename:=vFileName, _
Origin:=437, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(8, _
1), Array(15, 1), Array(51, 1), Array(57, 1), Array(75, 1), Array(88, 1), Array(112, 1), _
Array(126, 1)), TrailingMinusNumbers:=True
Set MyWorkbook = ActiveWorkbook
Columns("A:I").Select
Selection.Copy
Windows("Book1.xlsm").Activate
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
MyWorkbook.Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Set value1 = ActiveSheet.Range("K113:K249")
Set value2 = ActiveSheet.Range("H113:H249")
Set NameColumn = ActiveSheet.Range("I113:I249")
If NameColumn.Value = "CR" Then
value1.Value = value1.Value * -1
ElseIf value2.Value = 0 Or value2.Value = "" Then
value1.Value = ""
Else: value1.Value = value1.Value
End If
Range("L1").Formula = "=Sum(H113:H249)"
MyWorkbook.Range("L1").Value = value3
MsgBox "Yes. Offset to zero" & value3
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
NameColumn指的是多个单元格。当您调用NameColumn.Value时,VBA 不知道您想要哪个单元格的值。让 NameColumn 引用单个单元格并获取其值。 -
正如@zedfoxus 所说,这就是问题所在。另一种解决方案是遍历
NameColumn的单元格,然后使用if -
有多个单元格的值可能为 CR...我该如何处理?能否提供循环代码示例