简体   繁体   English

VBA Excel运行时错误13类型不匹配

[英]VBA excel runtime error 13 type mismatch

i am new to vba and I cant seem fix this error. 我是vba的新手,我似乎无法修复此错误。 Getting a type mismatch on the line. 在线获取类型不匹配。 If NameColumn.Value = "CR" Then 如果NameColumn.Value =“ CR”,则

I feel like I'm close but cant see the problem. 我觉得我已经接近了,但是看不到问题所在。 Posting full code hopefully someone will see my error! 张贴完整的代码,希望有人会看到我的错误! Thanks for the help 谢谢您的帮助

    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        

You are trying to evaluate the value of a range of cells, rather than a single cell. 您正在尝试评估一个单元格范围的值,而不是一个单元格的值。 Try - 尝试-

Set NameColumn = ActiveSheet.Range("I113:I249")
For each c in NameColumn
 If c.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
Next

You'll probably need to figure out what the stuff after the if should be doing for each c . 您可能需要弄清楚if之后每个c应该做什么。


I think since value1 is column k and value2 is column H, you can address them as offsets to column I - 我认为,由于value1是k列,value2是H列,因此您可以将它们作为I列的偏移量进行处理-

Set NameColumn = ActiveSheet.Range("I113:I249")
For each c in NameColumn
 If c.Value = "CR" Then
    c.offset(,2) = c.offset(,2) * -1
    ElseIf c.offset(,-1) = 0 Or c.offset(,-1) = "" Then
    c.offset(,2) = ""
    Else: c.offset(,2) = c.offset(,2)
 End If
Next

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM