vb中将数字变成大写的.doc_第1页
vb中将数字变成大写的.doc_第2页
vb中将数字变成大写的.doc_第3页
vb中将数字变成大写的.doc_第4页
vb中将数字变成大写的.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ByVal的含义是使用值传递,而不是地址传递Function c(byval a as intger, b as intger)as intger c= a + bEnd Function 使用print c(1,2) 回答者: bxworks - 五级 2007-6-23 19:50 ByVal 按值传递(ByValue),意思是传入的形式参数改变了,但是不影响实际参数的数值比如在一个函数fn()有参数para,是byval的,那么在函数里面如果有语句para=999,有变量dim p as integer = 100;那么调用fn(p)之后,p的值仍然是100,而不是999,函数里面的修改不影响外面的变量与它对应的是ByRef ,按引用传递这个时候,调用了函数之后,p的值就变成999了用法,就是在参数声明的前面加上ByVal关键字就可以了例如 .( ByVal aaa as integer, ByVal bb as string) 常数定义,与dim差不多,但const定义的不能修改a的值,dim 定义的可以重新赋值方法一 private const a=5方法二 dim a a=5 vb str是什么意思悬赏分:0 - 解决时间:2010-3-9 21:36 有下面一道题,请指教在窗体上画两个文本框(其name属性分别为text1和text2)和一个命令按钮(其name属性为commond),然后编写如下事件过程:private sub commond1_click()x=0Do While xsic(它只有一个参数,Right(a,M,N)是一种错误的写法!)Left(a,N) 从左边开始取值,取得位数为N位(它只有一个参数,两个参数就错了)设a=Visual BasicLeft(a,9) =Visual Ba注:所有的取值函数都要把空格计算上返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。 语法 InStr(start, string1, string2, compare) InStr 函数的语法具有下面的参数: 部分 说明 start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。 string1 必要参数。接受搜索的字符串表达式。 string2 必要参数。被搜索的字符串表达式。 Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。 设置 compare 参数设置为: 常数 值 描述 vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。 vbBinaryCompare 0 执行一个二进制比较。 vbTextCompare 1 执行一个按照原文的比较。 vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。 返回值 如果 InStr返回 string1 为零长度 0 string1 为 Null Null string2 为零长度 Start string2 为 Null Null string2 找不到 0 在 string1 中找到string2 找到的位置 start string2 0 说明 InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。 InStr 函数示例 本示例使用 InStr 函数来查找某字符串在另一个字符串中首次出现的位置。 Dim SearchString, SearchChar, MyPos SearchString =XXpXXpXXPXXP 被搜索的字符串。 SearchChar = P 要查找字符串 P。 从第四个字符开始,以文本比较的方式找起。返回值为 6(小写 p)。 小写 p 和大写 P 在文本比较下是一样的。 MyPos = Instr(4, SearchString, SearchChar, 1) 从第一个字符开使,以二进制比较的方式找起。返回值为 9(大写 P)。 小写 p 和大写 P 在二进制比较下是不一样的。 MyPos = Instr(1, SearchString, SearchChar, 0) 缺省的比对方式为二进制比较(最后一个参数可省略)。 MyPos = Instr(SearchString, SearchChar) 返回 9。 MyPos = Instr(1, SearchString, W) 返回 0。 后来查资料,被我发现了VB自带的 DateAdd() 方法,顾名思义,增加日期。它有三个参数:第一个是你要增加的时间间隔,是年、月、还是日?;第二个是你要增加的间隔数目,例如增加1年、增加3个月或者15天;最后一个就是你给定的一个日期,需要VB可以识别的日期格式。 有了这个方法要实现她们的要求就易如反掌了,示范代码如下: txtSendDate.Text=Format(DateAdd(d, 1, Date), yyyy.mm.dd)VB date型变量及函数用法编程中常常会与时间打交道,VB编程自然也不例外。以下就谈谈我在这方面的一点经验。 VB中提供了很多变量类型,DATE型就是专门用了存储时间的。 1、DATE型变量及其相关函数。 在内部,一个Date占8个字节的内存,你可以方便地用它来存储日期和时间。给Date变量赋值是很容易的。但请保证输入顺序与系统默认的时间表示顺序相同。例如: Dim d As Date d = 5/23/99 11:45:34 AM DateSerial函数可以把年、月、日的数字组合成一个Date值。TimeSerial函数可把小时、分、秒的数字组合成一个Date值。且两函数可以叠加。 d = DateSerial(1999, 5, 23) TimeSerial(11, 45, 34) 而DateValue 和TimeValue 函数则可将代表日期和时间的字符串转化为Date型,并且也可以叠加。 d = DateValue(“1999/ 5/ 23”) TimeValue(“11: 45: 34”) Format函数可按预定的格式显示或打印一个Date变量。如: Print Format(d, “general date”) 99523 11:45:34 Print Format(d, “long date”) 1999年5月23日 Print Format(d, “medium date”) 990523 Print Format(d, “short date”) 99523 Print Format(d, “long time”) 11:45:34 Print Format(d, “medium time”) 11:45 AM Print Format(d,“short time”) 11:45 Format函数也允许你自己规定显示格式。如: Print Format(d, “mmmm”) may 产生日期中月份的英文 以以上日期为例,如想显示其中的一部分信息可使用以下函数: Print Month(d) 5 Print Day(d) 23 Print Year(d) 1999 Print Hour(d) 11 Print Minute(d) 45 Print Second(d) 34 Print WeekDay(d)1 Weekday 提供了一组内部常量,vbSunday代表1,直到 vbSaturday代表7。 Now 函数可返回今天的日期及时间。如: Private Sub Form_Click() Dim d As Date d = Now Print d End Sub 灵活地应用以上的函数,可以大大地简化你的程序。例如想计算10000秒等于几小时几分几秒可写为: Private Sub Form_Click() Dim d As Date d = TimeSerial(0, 0, 10000) Print d End Sub 结果为2:46:40。 2、与时间相关的常用控件。 Timer控件是一个奇特的控件。Timer 控件会在固定时间间隔中运行Timer事件。此间隔是由Interval属性决定的,其单位为千分之一秒。但不要以为将其值设为0事件就可不间断地运行了。结果恰恰相反,事件将一次也不运行。同时还要注意变量的声明。如: Private Sub Timer1_Timer() Dim a As Integer a = a 1 Print a End Sub Dim a As Integer Private Sub Timer1_Timer() a = a 1 Print a End Sub 试试看,其结果是完全不同的。 当需要用户输入时间时,为避免出现错误的时间,可以使用日历控件。它只允许用户在日历表中选择日期,避免了错误的发生。 3、记录时间的API函数。 GetTickCount Windows API函数可返回 Windows 启动以来消失的毫秒数。其精度高于VB的Timer 函数。且Timer 函数会在午夜清零,而GetTickCount 函数只有当机器连续使用49.7天后才返回零。这为我们编程提供了很大的方便。例如想知道你的电脑连续工作多久了,可新建一工程,然后添加以下代码: Private Declare Function GetTickCount Lib “kernel32 () As Long Private Sub Form_Load() Dim d As Date Dim t As Integer Form1.Show t = GetTickCount 1000 d = TimeSerial(0, 0, t) Print d End Sub 大小: 40.4 KB Const strN = 零壹贰叁肆伍陆柒捌玖 Const strG = 拾佰仟万亿 Const intN = 0123456789 Dim Zero_Count As Long 读零计数 Private Function GetN(ByVal N As Long) As String GetN = Mid(strN, N + 1, 1) End Function Private Function GetG(ByVal G As Long) As String Select Case G Case 1 GetG = Case 2, 6 GetG = Mid(strG, 1, 1) Case 3, 7 GetG = Mid(strG, 2, 1) Case 4, 8 GetG = Mid(strG, 3, 1) Case 5 GetG = Mid(strG, 4, 1) Case 9 GetG = Mid(strG, 5, 1) End Select End Function Private Function ReadLongNumber(ByVal LongX As String) As String Dim NumberX As String Dim l As Long 长度 Dim m As Long 多余位数 Dim c As Long 循环次数 Dim i As Long, j As Long 标志 Dim CurN As String NumberX = LongX l = Len(NumberX) Do Until l 9 m = l Mod 8 If m = 0 Then m = 8 CurN = Left(NumberX, m) If ReadIntNumber(CurN) 零 Then ReadLongNumber = ReadLongNumber & ReadIntNumber(CurN) & 亿 Else ReadLongNumber = ReadLongNumber & 亿 End If NumberX = Right(NumberX, Len(NumberX) - m) l = Len(NumberX) Loop ReadLongNumber = ReadLongNumber & ReadIntNumber(NumberX) If Len(ReadLongNumber) 2 And Right(ReadLongNumber, 1) = 零 Then 去尾 零 ReadLongNumber = Left(ReadLongNumber, Len(ReadLongNumber) - 1) End If If Mid(ReadLongNumber, 1, 2) = 壹拾 Then 掐头 壹拾 ReadLongNumber = Right(ReadLongNumber, Len(ReadLongNumber) - 1) Mid(ReadLongNumber, 1, 1) = 拾 End If Zero_Count = 0 End Function Private Function ReadIntNumber(ByVal NumberX As String) As String Dim l As Long 长度 Dim m As Long 多余位数 Dim c As Long 循环次数 Dim i As Long, j As Long 标志 Dim CurN As String If Val(NumberX) = 0 Then ReadIntNumber = GetN(0): Exit Function l = Len(NumberX) If l 8 Then Exit Function m = l Mod 9 CurN = Right(NumberX, m) For i = Len(CurN) To 1 Step -1 If GetN(Int(Mid(CurN, i, 1) = 零 And Zero_Count = 1 Then If GetG(Len(CurN) - i + 1) = 万 Then If (Not (Val(Left(CurN, Len(CurN) - 5) = 0) Then ReadIntNumber = GetG(Len(CurN) - i + 1) & ReadIntNumber End If Else If GetN(Int(Mid(CurN, i, 1) = 零 Then ReadIntNumber = GetN(Int(Mid(CurN, i, 1) & ReadIntNumber If GetG(Len(CurN) - i + 1) = 万 Then If (Not (Val(Left(CurN, Len(CurN) - 5) = 0) Then ReadIntNumber = GetG(Len(CurN) - i + 1) & ReadIntNumber End If Zero_Count = 1 Else ReadIntNumber = GetG(Len(CurN) - i + 1) & ReadIntNumber ReadIntNumber = GetN(Int(Mid(CurN, i, 1) & ReadIntNumber Zero_Count = 0 End If End If Next i Loop If Len(ReadIntNumber) 2 And Right(ReadIntNumber, 1) = 零 Then 去尾 零 ReadIntNumber = Left(ReadIntNumber, Len(ReadIntNumber) - 1) End If If Mid(ReadIntNumber, 1, 2) = 壹拾 Then 掐头 壹拾 ReadIntNumber = Right(ReadIntNumber, Len(ReadIntNumber) - 1) Mid(ReadIntNumber, 1, 1) = 拾 End If End Function Public Function ReadNumber(ByVal NumberX As String) As String Dim LongX As String Dim PointX As String Dim LongLong As Long Dim bFS As Boolean 负数 If Not IsNumeric(NumberX) Then ReadNumber = Exit Function End If If CDbl(NumberX) 0 Then NumberX = -NumberX bFS = True End If NumberX = CStr(Format(NumberX, General Number ) LongLong = InStr(1, NumberX, . ) If LongLong 0 Then ReadNumber = ReadLongNumber(Left(NumberX, LongLong - 1) ReadNumber = ReadNumber & 点 & ReadSmallNumber(Right(NumberX, Len(NumberX) - LongLong) Else ReadNumber = ReadLongNumber(NumberX) End If If bFS = True Then ReadNumber = 负 & ReadNumber End If End Function Private Function ReadSmallNumber(SmallNumber As String) As String Dim i As Long For i = 1 To Len(SmallNumber) ReadSmallNumber = ReadSmallNumber & GetN(Mid(SmallNumber, i, 1) Next i End Function Private Function ReadSmallNumberToRMB(SmallNumber As String) As String ReadSmallNumberToRMB = GetN(Mid(SmallNumber, 1, 1) & 角 & GetN(Mid(SmallNumber, 2, 1) & 分 End Function Public Function ReadNumberToRMB(ByVal NumberX As String) As String Dim LongX As String Dim PointX As String Dim LongLong As Long Dim bFS As Boolean 负数 If Not IsNumeric(NumberX) Then ReadNumberToRMB = Exit Function End If If CDbl(NumberX) 0 Then NumberX = -NumberX bFS = True End If NumberX = CStr(Format(NumberX, #.00 ) LongLong = InStr(1, NumberX, . ) If Right(NumberX, Len(NumberX) - LongLong) Then ReadNumberToRMB = ReadLongNumber(Left(NumberX, LongLong - 1) ReadNumberToRMB = ReadNumberToRMB & 元 & ReadSmallNumberToRMB(Right(NumberX, Len(NumberX) - LongLong) Else ReadNumberToRMB = ReadLongNumber(NumberX) End If If bFS = True Then ReadNumberToRMB = 负 & ReadNumberToRMB End If End FunctionPrivate Sub Text2_Change() 小写转大写 Dim i As Integer Dim j As Integer Dim myint As Integer Dim myint1 As Integer Dim mydoub As Double Dim mystr As String Dim mystr1 As String Dim mystr2 As String Dim mystr3 As String Dim mystr4 As String Dim money As Long Dim money1 As Integer Dim money2 As Long mystr = Text2.Text myint = InStr(mystr, .) If myint = 0 Then mystr = Text2.Text Else mystr3 = Right(Text2.Text, Len(Text2.Text) - myint) If mystr3 Then 转换小数位 mystr4 = Left(mystr3, 1) mystr3 = Right(mystr3, Len(mystr3) - 1) If mystr4 0 Then mystr2 = mystr2 + setdata(Val(mystr4) + 角 End If If mystr3 Then mystr4 = Left(mystr3, 1) mystr2 = mystr2 + setdata(Val(mystr4) + 分 End If End If mystr = Left(Text2.Text, myint - 1) End If j = Len(mystr) For i = 1 To Len(mystr) 转换整数位 money2 = Left(mystr, i) money1 = Right(money2, 1) If money1 = 0 Then If j = 5 Then If Right(mystr1, 1) 万 Then mystr1 = mystr1 & 万 Else If Right(mystr1, 1) 零 And Right(money, j) = 0 Then mystr1 = mystr1 & 零 End If Else mystr1 = mystr1 & setdata(money1) + chang(j) End If j = j - 1 Next i Text1.Text = mystr1 & 元 & mystr2 显示大写 Dim MyPos As Integer MyPos = InStr(1, Text1.Text, 零元, 1) If MyPos 0 Then Text1.Text = Left(Text1.Text, MyPos - 1) & 元 & mystr2 显示大写 End IfEnd SubPrivate Sub Command1_Click() EndEnd SubPrivate Function setdata(num As Integer) As String 数字转换 Select Case num Case 0 setdata = 零 Case 1 setdata = 壹 Case 2 setdata = 贰 Case 3 setdata = 叁 Case 4 setdata = 肆 Case 5 setdata = 伍 Case 6 setdata = 陆 Case 7 setdata = 柒 Case 8 setdata = 捌 Case 9 setdata = 玖 End SelectEnd FunctionPrivate Function chang(aaa As Integer) As String 位数转换 Select Case aaa Case 1 chang = Case 2 chang = 十 Case 3 chang = 百 Case 4 chang = 千 Case 5 chang = 万 Case 6 chang = 十 Case 7 chang = 百 Case 8 chang = 千 Case 9 chang = 亿 Case 10 chang = 十 End SelectEnd FunctionPrivate Sub Text2_Change() 小写转大写 Dim i As Integer Dim j As Integer Dim myint As Integer Dim myint1 As Integer Dim mydoub As Double Dim mystr As String Dim mystr1 As String Dim mystr2 As String Dim mystr3 As String Dim mystr4 As String Dim money As Long Dim money1 As Integer Dim money2 As Long mystr = Text2.Text myint = InStr(mystr, .) If myint = 0 Then mystr = Text2.Text Else mystr3 = Right(Text2.Text, Len(Text2.Text) - myint) If mystr3 Then 转换小数位 mystr4 = Left(mystr3, 1) mystr3 = Right(mystr3, Len(mystr3) - 1) If mystr4 0 Then mystr2 = mystr2 + setdata(Val(mystr4) + 角 End If If mystr3 Then mystr4 = Left(mystr3, 1) mystr2 = mystr2 + setdata(Val(mystr4) +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论