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