VBA脚本,我怎样才能更好地编写这段代码?运行时错误13,类型不匹配

问题描述 投票:0回答:2

我知道我有问题

IPROUTER = (Left(IP, 11)) & ((Right(IP, 3)) + 5)

我是vba的新手,我应该怎么写这一行而不是标题错误?

'''VBA
Dim ID As String
  Dim IP As String
  Dim IPROUTER As String

  ID = Mid(olItem.Subject, 20, 9)
  IP = Right(olItem.Body, 14)

   IPROUTER = (Left(IP, 11)) & ((Right(IP, 3)) + 5)

   With objFile
    .WriteLine "START " & Chr(34) & ID & Chr(34) & " ping" & IP & " -t"
'''
vba outlook network-programming
2个回答
0
投票

你得到一个Type mismatch错误,因为你的代码,你试图将Integer添加到String(因为你的.有一个String)。

假设您的IP地址是C类(如192.168.1.x),您可以像这样更正您的代码:

IPROUTER = (Left(IP, 10)) & (Mid(IP, 11, 3) + 5)

这将适用于最后一个八位字节的大小,但您可能必须根据地址固定部分的长度更改某些内容。

希望这可以帮助。


0
投票

谢谢回复。它没有帮助,但我以不同的方式想出来。我只是将字符串转换为int。我的例子的代码如下:

Dim ID As String
Dim IP As String
Dim IPROUTER As String
Dim ok As String
Dim okI As Integer


ID = Mid(olItem.Subject, 20, 9)
IP = Right(olItem.Body, 14)



 IPROUTER = (Left(IP, 12))

 ok = Mid(IP, 13, 3)
 okI = CInt(ok)





 With objFile
  .WriteLine "START " & Chr(34) & ID & Chr(34) & " ping " & IP & " -t"
  .WriteLine "START " & Chr(34) & ID & Chr(34) & " ping " & IPROUTER & okI + 5 & " -t" 
© www.soinside.com 2019 - 2024. All rights reserved.