Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中整数到字符串的转换_Vba_Typeconverter - Fatal编程技术网

VBA中整数到字符串的转换

VBA中整数到字符串的转换,vba,typeconverter,Vba,Typeconverter,下面是整个代码的一些部分,我试图通过If语句运行变量P1。在If语句的末尾如果值P1不符合前面的条件,我想将P1转换为空字符串 我已经删除了下面代码中大部分不相关的部分,只是为了抓住要点 Sub SLNR '<Macro = SLNR> '<Shortcut = Shift+Ctrl+S> '<Desc = recorded 7/26/2016 12:33:03 PM> On Error Resume Next ' I

下面是整个代码的一些部分,我试图通过
If语句运行变量
P1
。在
If语句的末尾
如果值
P1
不符合前面的条件,我想将
P1
转换为空字符串

我已经删除了下面代码中大部分不相关的部分,只是为了抓住要点

Sub SLNR
    '<Macro = SLNR>
    '<Shortcut = Shift+Ctrl+S>
    '<Desc = recorded 7/26/2016 12:33:03 PM>
    On Error Resume Next

    ' Individual lines for the data
    Dim L1 As String, L2 As String, L3 As String, L4 As String, L5 As String, L6 As String, L7 As String, _
        L8 As String, L9 As String, L10 As String, L11 As String, L12 As String, L13 As String, _
        L14 As String, L15 As String, L16 As String, L17 As String, L18 As String, L19 As String, _
        L20 As String

    Dim L As Integer    'Left column of data
    Dim R As Integer    'Right column of data
    Dim R2 As Integer   'The data row to be checked
    Dim pL As Integer
    Dim pR As Integer

    Dim SP1 As String
        SP1 = "subj_data_field1"
    Dim SP2 As String
        SP2 = "subj_data_field2"
    Dim SP3 As String
        SP3 = "subj_data_field3"

    Dim P1 As Integer
    Dim P2 As Integer
    Dim P3 As Integer

    Dim E As String      'Carriage Return Key shortcut
        E = Chr$(13)

    L   =   0
    R   =   10
    R2  =   2

    pL = L + 14
    pR = R + 13

    With ActiveSession
        .InputMode = 1
        .Output "MS1" & E
        .WaitFor 0, 1, "W,/) "


    ' Copying the first few characters of each line in LN report, to compare with the phone fields...
    .Copy   L,  R2  +   0   ,   R,  R2  +   0
        L1 = Clipboard
    .Copy   L,  R2  +   1   ,   R,  R2  +   1
        L2 = Clipboard
    .Copy   L,  R2  +   2   ,   R,  R2  +   2
        L3 = Clipboard
    .Copy   L,  R2  +   3   ,   R,  R2  +   3
        L4 = Clipboard
    .Copy   L,  R2  +   4   ,   R,  R2  +   4
        L5 = Clipboard
    .Copy   L,  R2  +   5   ,   R,  R2  +   5
        L6 = Clipboard
    .Copy   L,  R2  +   6   ,   R,  R2  +   6
        L7 = Clipboard
    .Copy   L,  R2  +   7   ,   R,  R2  +   7
        L8 = Clipboard
    .Copy   L,  R2  +   8   ,   R,  R2  +   8
        L9 = Clipboard
    .Copy   L,  R2  +   9   ,   R,  R2  +   9
        L10 = Clipboard
    .Copy   L,  R2  +   10  ,   R,  R2  +   10
        L11 = Clipboard
    .Copy   L,  R2  +   11  ,   R,  R2  +   11
        L12 = Clipboard
    .Copy   L,  R2  +   12  ,   R,  R2  +   12
        L13 = Clipboard
    .Copy   L,  R2  +   13  ,   R,  R2  +   13
        L14 = Clipboard
    .Copy   L,  R2  +   14  ,   R,  R2  +   14
        L15 = Clipboard
    .Copy   L,  R2  +   15  ,   R,  R2  +   15
        L16 = Clipboard
    .Copy   L,  R2  +   16  ,   R,  R2  +   16
        L17 = Clipboard
    .Copy   L,  R2  +   17  ,   R,  R2  +   17
        L18 = Clipboard
    .Copy   L,  R2  +   18  ,   R,  R2  +   18
        L19 = Clipboard
    .Copy   L,  R2  +   19  ,   R,  R2  +   19
        L20 = Clipboard


    ' Finding field for P1
    If L1 = SP1 Then
        .Copy   pL,     R2  +   0   ,   pR,     R2  +   0
            P1 = Clipboard
    ElseIf L2 = SP1 Then
        .Copy   pL,     R2  +   1   ,   pR,     R2  +   1
            P1 = Clipboard
    ElseIf L3 = SP1 Then
        .Copy   pL,     R2  +   2   ,   pR,     R2  +   2
            P1 = Clipboard
    ElseIf L4 = SP1 Then
        .Copy   pL,     R2  +   3   ,   pR,     R2  +   3
            P1 = Clipboard
    ElseIf L5 = SP1 Then
        .Copy   pL,     R2  +   4   ,   pR,     R2  +   4
            P1 = Clipboard
    ElseIf L6 = SP1 Then
        .Copy   pL,     R2  +   5   ,   pR,     R2  +   5
            P1 = Clipboard
    ElseIf L7 = SP1 Then
        .Copy   pL,     R2  +   6   ,   pR,     R2  +   6
            P1 = Clipboard
    ElseIf L8 = SP1 Then
        .Copy   pL,     R2  +   7   ,   pR,     R2  +   7
            P1 = Clipboard
    ElseIf L9 = SP1 Then
        .Copy   pL,     R2  +   8   ,   pR,     R2  +   8
            P1 = Clipboard
    ElseIf L10 = SP1 Then
        .Copy   pL,     R2  +   9   ,   pR,     R2  +   9
            P1 = Clipboard
    ElseIf L11 = SP1 Then
        .Copy   pL,     R2  +   10  ,   pR,     R2  +   10
            P1 = Clipboard
    ElseIf L12 = SP1 Then
        .Copy   pL,     R2  +   11  ,   pR,     R2  +   11
            P1 = Clipboard
    ElseIf L13 = SP1 Then
        .Copy   pL,     R2  +   12  ,   pR,     R2  +   12
            P1 = Clipboard
    ElseIf L14 = SP1 Then
        .Copy   pL,     R2  +   13  ,   pR,     R2  +   13
            P1 = Clipboard
    ElseIf L15 = SP1 Then
        .Copy   pL,     R2  +   14  ,   pR,     R2  +   14
            P1 = Clipboard
    ElseIf L16 = SP1 Then
        .Copy   pL,     R2  +   15  ,   pR,     R2  +   15
            P1 = Clipboard
    ElseIf L17 = SP1 Then
        .Copy   pL,     R2  +   16  ,   pR,     R2  +   16
            P1 = Clipboard
    ElseIf L18 = SP1 Then
        .Copy   pL,     R2  +   17  ,   pR,     R2  +   17
            P1 = Clipboard
    ElseIf L19 = SP1 Then
        .Copy   pL,     R2  +   18  ,   pR,     R2  +   18
            P1 = Clipboard
    ElseIf L20 = SP1 Then
        .Copy   pL,     R2  +   19  ,   pR,     R2  +   19
            P1 = Clipboard
    Else
        CStr(P1)        
        P1 = ""              ' <<<<<<<<********** ISSUE IS HERE
    End If


    ' ......... Code has been trimmed... Showing below the reason I need P1 as an Integer

    If P1 <> "" Then
        Format(P1,000-000-0000)
    End If
    If P2 <> "" Then
        Format(P2,000-000-0000)
    End If
    If P3 <> "" Then
        Format(P3,000-000-0000)
    End If

' CONTINUES ON.....
子SLNR
'
'
'
出错时继续下一步
'数据的单个行
尺寸L1为字符串,L2为字符串,L3为字符串,L4为字符串,L5为字符串,L6为字符串,L7为字符串_
L8作为字符串,L9作为字符串,L10作为字符串,L11作为字符串,L12作为字符串,L13作为字符串_
L14作为字符串,L15作为字符串,L16作为字符串,L17作为字符串,L18作为字符串,L19作为字符串_
L20作为字符串
Dim L作为整型数据的左列
Dim R作为整数的右数据列
Dim R2作为要检查的数据行的整数
作为整数的Dim pL
作为整数的Dim pR
将SP1设置为字符串
SP1=“主题数据字段1”
尺寸SP2为字符串
SP2=“主题数据字段2”
尺寸SP3为字符串
SP3=“主题数据字段3”
将P1设置为整数
将P2设置为整数
将P3设置为整数
Dim E作为字符串的“回车键快捷键”
E=Chr$(13)
L=0
R=10
R2=2
pL=L+14
pR=R+13
使用ActiveSession
.InputMode=1
.输出“MS1”和E
.等待0,1,“W,/)”
'复制LN报告中每行的前几个字符,以与电话字段进行比较。。。
.复制L,R2+0,R,R2+0
L1=剪贴板
.复制L,R2+1,R,R2+1
L2=剪贴板
.复制L,R2+2,R,R2+2
L3=剪贴板
.复制L,R2+3,R,R2+3
L4=剪贴板
.复制L,R2+4,R,R2+4
L5=剪贴板
.复制L,R2+5,R,R2+5
L6=剪贴板
.复制L,R2+6,R,R2+6
L7=剪贴板
.复制L,R2+7,R,R2+7
L8=剪贴板
.复制L,R2+8,R,R2+8
L9=剪贴板
.复制L,R2+9,R,R2+9
L10=剪贴板
.复制L,R2+10,R,R2+10
L11=剪贴板
.复制L,R2+11,R,R2+11
L12=剪贴板
.复制L,R2+12,R,R2+12
L13=剪贴板
.复制L,R2+13,R,R2+13
L14=剪贴板
.复制L,R2+14,R,R2+14
L15=剪贴板
.复制L,R2+15,R,R2+15
L16=剪贴板
.复制L,R2+16,R,R2+16
L17=剪贴板
.复制L,R2+17,R,R2+17
L18=剪贴板
.复制L,R2+18,R,R2+18
L19=剪贴板
.复制L,R2+19,R,R2+19
L20=剪贴板
'查找P1的字段
如果L1=SP1,则
.复制pL、R2+0、pR、R2+0
P1=剪贴板
ElseIf L2=SP1然后
.复制pL、R2+1、pR、R2+1
P1=剪贴板
ElseIf L3=SP1然后
.复制pL、R2+2、pR、R2+2
P1=剪贴板
ElseIf L4=SP1然后
.复制pL、R2+3、pR、R2+3
P1=剪贴板
ElseIf L5=SP1然后
.复制pL,R2+4,pR,R2+4
P1=剪贴板
ElseIf L6=SP1然后
.复制pL,R2+5,pR,R2+5
P1=剪贴板
ElseIf L7=SP1然后
.复制pL,R2+6,pR,R2+6
P1=剪贴板
ElseIf L8=SP1然后
.复制pL,R2+7,pR,R2+7
P1=剪贴板
ElseIf L9=SP1那么
.复制pL,R2+8,pR,R2+8
P1=剪贴板
ElseIf L10=SP1然后
.复制pL,R2+9,pR,R2+9
P1=剪贴板
ElseIf L11=SP1然后
.复制pL,R2+10,pR,R2+10
P1=剪贴板
ElseIf L12=SP1然后
.复制pL,R2+11,pR,R2+11
P1=剪贴板
ElseIf L13=SP1然后
.复制pL,R2+12,pR,R2+12
P1=剪贴板
ElseIf L14=SP1然后
.复制pL,R2+13,pR,R2+13
P1=剪贴板
ElseIf L15=SP1然后
.复制pL,R2+14,pR,R2+14
P1=剪贴板
ElseIf L16=SP1然后
.复制pL,R2+15,pR,R2+15
P1=剪贴板
ElseIf L17=SP1然后
.复制pL,R2+16,pR,R2+16
P1=剪贴板
ElseIf L18=SP1然后
.复制pL,R2+17,pR,R2+17
P1=剪贴板
ElseIf L19=SP1然后
.复制pL,R2+18,pR,R2+18
P1=剪贴板
ElseIf L20=SP1然后
.复制pL,R2+19,pR,R2+19
P1=剪贴板
其他的
CStr(P1)

P1=“”“您已将
P1
声明为整数-如果您想在操作中途更改其数据类型,则应将其声明为
变量
,并在执行过程中使用隐式转换来控制数据类型,尽管简单地将另一个变量声明为字符串更有意义用它来代替


另外,
CStr(P1)
本身没有任何作用-您需要将返回值赋回变量:

P1 = CStr(P1)

更有意义的是:

Dim P1为整数
将p1tString设置为字符串
“//此处有更多代码
P1toString=CStr(P1)
“//此处有更多代码
如果P1
Dim P1 As Integer
Dim P1toString As String

'// More code here

P1toString = CStr(P1)

'// More code here

If P1toString <> "" Then
'// etc etc...