Vba 从其他模块传递变量并将其转换为

Vba 从其他模块传递变量并将其转换为,vba,excel,Vba,Excel,我有一个问题,因为我不熟悉如何编码格式,因为我正在传递一个变量,它是来自其他模块的数字。我已经发布了我的代码子记录(这是excel vba中的模块9)。在这个子模块中,我需要将字段修改为特定格式,并且需要从其他模块传递一些值。我正在从模块2传递一个变量,该变量将返回一个数字,因为我已将其声明为Public myVal as String,因为我需要此myVal值,并将其以一种格式插入到字段3中 字段3的值是000000000 209644(15位数字),我需要修改成这样的值02061209644

我有一个问题,因为我不熟悉如何编码格式,因为我正在传递一个变量,它是来自其他模块的数字。我已经发布了我的代码
子记录
(这是excel vba中的模块9)。在这个子模块中,我需要将字段修改为特定格式,并且需要从其他模块传递一些值。我正在从模块2传递一个变量,该变量将返回一个数字,因为我已将其声明为
Public myVal as String
,因为我需要此
myVal
值,并将其以一种格式插入到字段3中

字段3的值是
000000000 209644
(15位数字),我需要修改成这样的值
02061209644

  • 020612=0+YYYYMM

  • 01=来自其他模块2的myval值

  • 209644=此文件中的当前编号数据

  • 下面是我的示例代码,演示我正在做什么

    Sub record()
    
    Dim myfile, mysfile, myxfile As String
    
    myfile = ThisWorkbook.Path + "\PaymentFile02.xlsx"
    Open DatFile1Name For Output As #1
    
    Application.Workbooks.Open FileName:=myfile
    vRow = 2
    While Cells(vRow, 1).Value <> ""
        Field1 = Cells(vRow, 1).Value
        Field2 = Cells(vRow, 2).Value
        Field3 = Cells(vRow, 3).Value ' this is the variable where i need to do formatting
    
        Dim Str As String
        str =""
        str = field1 & "|" & field2 & "|" & Field3 & "|"
        Print #1, str
        vRow = vRow + 1 ' this is incremental as there are a lot of rows
    Wend
    Close #1
    
    ActiveWorkbook.Close
    MsgBox ("File PaymentFile02.TXT created")
    
    End Sub
    

    使用格式构建str

    格式函数(Visual Basic for Applications)

    Str=“0”和格式(字段1,“YYYYMM”)等


    不知道您的3个字段3是否应该是字段1、字段2和字段3…

    使用格式构建str

    格式函数(Visual Basic for Applications)

    Str=“0”和格式(字段1,“YYYYMM”)等


    不知道你的3个字段3是否应该是字段1、字段2和字段3…

    下面的代码按照你在帖子中想要的方式合并了
    Str

    注意:考虑到这一点,它将前6位数字移到右边(从15位数字中取出来)——这是下面代码中的固定格式(可以修改以适应其他场景)

    子记录(myVal作为字符串)
    将myfile设置为字符串、myfile设置为字符串、myxfile设置为字符串
    myfile=ThisWorkbook.Path&“\PaymentFile02.xlsx”
    打开DatFile1Name,输出为#1
    Application.Workbooks.Open(myfile)
    vRow=2
    而单元格(vRow,1)。值“”
    字段1=单元格(vRow,1)。值
    字段2=单元格(vRow,2)。值
    '这假设您在C列中的值总是从右边取6位
    Field3=0&Format(Date,“YYYYMM”)&myVal&Format(Cells(vRow,3)。Value,“000000”)'这是我需要进行格式化的变量
    作为字符串的Dim Str
    Str=“”
    Str=field1&“|”和field2&“|”和Field3&“|”
    调试。打印Str
    打印#1,Str
    vRow=vRow+1'这是增量的,因为有很多行
    温德
    关闭#1
    活动工作簿。关闭
    MsgBox(“文件PaymentFile02.TXT已创建”)
    端接头
    
    下面的代码按照您在帖子中希望的方式进行
    Str
    合并

    注意:考虑到这一点,它将前6位数字移到右边(从15位数字中取出来)——这是下面代码中的固定格式(可以修改以适应其他场景)

    子记录(myVal作为字符串)
    将myfile设置为字符串、myfile设置为字符串、myxfile设置为字符串
    myfile=ThisWorkbook.Path&“\PaymentFile02.xlsx”
    打开DatFile1Name,输出为#1
    Application.Workbooks.Open(myfile)
    vRow=2
    而单元格(vRow,1)。值“”
    字段1=单元格(vRow,1)。值
    字段2=单元格(vRow,2)。值
    '这假设您在C列中的值总是从右边取6位
    Field3=0&Format(Date,“YYYYMM”)&myVal&Format(Cells(vRow,3)。Value,“000000”)'这是我需要进行格式化的变量
    作为字符串的Dim Str
    Str=“”
    Str=field1&“|”和field2&“|”和Field3&“|”
    调试。打印Str
    打印#1,Str
    vRow=vRow+1'这是增量的,因为有很多行
    温德
    关闭#1
    活动工作簿。关闭
    MsgBox(“文件PaymentFile02.TXT已创建”)
    端接头
    
    hi,我已经为我的字段1、字段2和字段3添加了示例数据是的,它应该是字段1、字段2和字段3,对于这些错误,很抱歉,但是我如何从其他模块传递变量,从其他模块传递Myval字段3=“0”和格式(现在(),“YYYYMM”)&格式(Myval,“00”)&格式(cint(field3),“000000”)对不起,不要靠近计算机来检查我的语法,但你应该明白了。嗨,我已经为字段1、字段2和字段3添加了示例数据。是的,应该是字段1、字段2和字段3,很抱歉出现了错误。但是我如何从其他模块传递变量,从其他模块传递Myval?y field3=“0”&format(现在(),“yyyyymm”)&format(myVal,“00”)&format(cint(field3),“000000”)对不起,我不在电脑旁检查我的语法,但你应该知道。看看我下面答案中的代码是否按预期为你工作。看看我下面答案中的代码是否按预期为你工作。是的,这正是我需要的,非常感谢。是的,这正是我需要的,非常感谢
    00|HELLO|000000000209644|
    
    Sub record(myVal As String)
    
    Dim myfile As String, mysfile As String, myxfile As String
    
    myfile = ThisWorkbook.Path & "\PaymentFile02.xlsx"
    
    Open DatFile1Name For Output As #1
    Application.Workbooks.Open (myfile)
    
    vRow = 2
    While Cells(vRow, 1).Value <> ""
        field1 = Cells(vRow, 1).Value
        field2 = Cells(vRow, 2).Value
    
        ' this assumes your value in Column C will allways take 6 digits from the right
        Field3 = 0 & Format(Date, "YYYYMM") & myVal & Format(Cells(vRow, 3).Value, "000000") ' This is the variable where i need to do formatting
    
        Dim Str As String
    
        Str = ""
        Str = field1 & "|" & field2 & "|" & Field3 & "|"
    
        Debug.Print Str
    
        Print #1, Str
        vRow = vRow + 1 ' This is incremental as there are a lot of rows
    Wend
    Close #1
    
    ActiveWorkbook.Close
    MsgBox ("File PaymentFile02.TXT created")
    
    End Sub