VBA скрипт, как я могу написать этот код лучше?Ошибка времени выполнения 13, несоответствие типов - PullRequest
0 голосов
/ 19 апреля 2019

Я знаю, что у меня проблема с

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"
'''

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Спасибо за ответ.Это не помогло, но я понял это по-другому.Я просто конвертирую строку в 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" 
0 голосов
/ 19 апреля 2019

Вы получаете ошибку Type mismatch, потому что с вашим кодом вы пытаетесь добавить Integer к String (потому что у вас есть . в вашем String).

Предполагая, что ваш IP-адрес относится к типу класса C (например, 192.168.1.x), вы можете исправить свой код следующим образом:

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

Это будет работать независимо от размера последнего октета, но вам, возможно, придется изменить somenthing в зависимости от длины фиксированной части вашего адреса.

Надеюсь, это поможет.

...