楼主 0Mouse | 
【系统由来】 一个朋友开驾校,请了一个小工负责收交费记录,希望有个工具可以用来记录收交费的情况,同时能够实现这样的效果:小工只能录入数据,不能修改,资料修改权掌握在自己手上。
  【登录界面】
 
    
  【最终文件清单】 1. 启动文件:驾校费用记录系统1.0.exe 2. 系统文件:feerec.dll 3. 系统登录密码.txt 4. 系统使用视频教程.wmv
 
    
  【开发所用软件及其用途】 Excel 2003:制作基本框架并借助vba代码实现预期功能; Illustrator CS3:设计启动显示画面的某些图形元素; Photoshop CS3:设计启动显示画面背景图,设置标题文字特效,设计“录入”、“刷新”按钮; Visual Basic 6.0:制作启动程序,避开选择“禁用宏”和“启用宏”的环节。   | 
2楼 0Mouse | 
【开发流程】
  1. 制作基本框架
  新建一个Excel文档,命名为“feerec.xls”;双击打开,将Sheet1、Sheet2、Sheet3依次重命名为“记录”、“历史记录”和“备用表”;按下Ctrl键不放,单击Sheet1和Sheet2,在A1:F1区域依次输入“流水号”、“日期”、“姓名”、“费用类型”、“金额”、“备注”,并设置加粗,添加边框线;为A列~F列设置水平居中、数字类型等格式。
  2. 制作用户窗体
  2.1 制作系统登录窗体
  2.1.1 添加窗体、控件,修改部分属性值
  按下Alt+F11,依次单击“插入”-“用户窗体”,自动生成UserForm1,修改其相应属性值如下: Caption:系统登录; StartUpPosition:2-屏幕中心。
  在用户窗体上添加一个TextBox1控件,修改相应属性值如下: BackStyle:0-fmBackStyleTransparent; ForeColor:&H00FFFFFF&; MaxLength:12; PasswordChar:*。
  在用户窗体上再添加两个CommandButton控件,修改相应属性值如下: BackStyle:0-fmBackStyleTransparent; Caption:留空。
  至此,系统登录窗体及其控件的截图如下:
 
    
  2.1.2 添加代码
  TextBox1代码:- '在密码输入框内按回车则触发登录按钮事件。
  - Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  -     If KeyCode = 13 Then
  -         CommandButton1_Click
  -     End If
  - End Sub
  CommandButton1代码:- '系统登录
  - Private Sub CommandButton1_Click()
  -     If TextBox1.Value = "" Then
  -         MsgBox "请输入密码。  ", vbInformation + vbOKOnly, "提示"
  -         TextBox1.SetFocus
  -     ElseIf TextBox1.Value = "123" Then
  -         Unload Me
  -         Application.Visible = True
  -         Application.WindowState = xlMaximized
  -         Sheet3.Activate
  -         Sheet3.Unprotect "luuqian"
  -         Sheet3.Range("A1").Select
  -         Selection.Locked = True
  -         Sheet1.Activate
  -         Sheet1.Unprotect "luuqian"
  -         Range("A1").Locked = True
  -     ElseIf TextBox1.Value = "456" Then
  -         Unload Me
  -         Application.Visible = True
  -         Application.WindowState = xlMaximized
  -         Sheet3.Activate
  -         Sheet3.Unprotect "luuqian"
  -         Sheet3.Range("A1").Select
  -         Selection.Locked = False
  -         ActiveSheet.Protect "luuqian"
  -         ActiveSheet.EnableSelection = xlNoSelection
  -         Sheet1.Activate
  -         Sheet1.Unprotect "luuqian"
  -         Sheet1.Range("A1").Select
  -         Selection.Locked = False
  -         ActiveSheet.Protect "luuqian"
  -         ActiveSheet.EnableSelection = xlNoSelection
  -     Else
  -         MsgBox "密码错误,请重新输入。", vbExc**tion + vbOKOnly, "提示"
  -         TextBox1.Text = ""
  -         TextBox1.SetFocus
  -     End If
  -         Range("A2").Select
  -         ActiveWindow.FreezePanes = True
  -         Range("A1").Select
  - End Sub
  CommandButton2代码:- '系统退出
  - Private Sub CommandButton2_Click()
  -     Unload Me
  -     If Workbooks.Count > 1 Then '如果打开的工作簿大于1个,则关闭本工作簿并显示Excel窗口。
  -         Application.Visible = True
  -         ThisWorkbook.Close False
  -     Else
  -         Application.Quit
  -         ThisWorkbook.Close False
  -         Application.Visible = True
  -     End If
  - End Sub
    | 
3楼 0Mouse | 
2.2 制作资料录入窗体
  2.2.1 添加窗体、控件,修改部分属性值
  按下Alt+F11,依次单击“插入”-“用户窗体”,自动生成UserForm2,修改其相应属性值如下: Caption:录入面板。
  在用户窗体上添加三个Label控件,将Caption属性值依次修改为“姓名”、“金额”、“备注”,TabStop属性改为“False”;在三个Label控件的右侧分别添加一个TextBox控件,修改TextBox1的MaxLength为4。
  在用户窗体上再添加两个OptionButton控件,将Caption属性值依次修改为“收费”、“交费”,再添加一个Frame1控件,修改其Caption属性值为“费用类型”,TabStop属性改为“False”,并调整其位置,框住两个OptionButton控件。
  最后再添加两个CommandButton控件,将其Caption属性值依次修改为“录入”、“退出”。
  至此,录入面板窗体及其控件的截图如下:
 
    
  2.2.2 添加代码
  UserForm2代码:- Private Sub UserForm_Initialize()
  -     Me.OptionButton1.Value = True
  -     TextBox1.SetFocus
  - End Sub
  - '禁止使用窗体关闭按钮退出
  - Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  -     If CloseMode = 0 Then Cancel = True
  - End Sub
  TextBox1代码:- Private Sub TextBox1_Change() '限制文本框1(姓名栏)只能输入汉字
  - With TextBox1
  -     If ChnInstr(.Text) = False Then
  -         Beep '发声提醒
  -         .Text = Left(.Text, Len(.Text) - 1)
  -     End If
  - End With
  - End Sub
  TextBox2代码:- Private Sub TextBox2_Change() '限制文本框2(金额栏)只能输入数字
  - Dim i%, Str$
  - With TextBox2
  -     For i = 1 To Len(.Text)
  -         Str = Mid(.Text, i, 1) '遍历文本框中输入的每一个字符。
  -         Select Case Str '测试文本框中输入的字符
  -             Case "0" To "9" '列出允许输入的字符。
  -             Case Else
  -                 Beep
  -                 .Text = Replace(.Text, Str, "") '如果输入的不是允许的字符,则使用Replace函数替换成空白。
  -         End Select
  -     Next
  - End With
  - End Sub
  - Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  -     If KeyCode = 13 Then
  -         CommandButton1_Click
  -     End If
  - End Sub
  CommandButton1代码:- '录入
  - Private Sub CommandButton1_Click()
  - Dim i%, j%
  - i = Cells(Rows.Count, 1).End(xlUp).Row + 1
  - j = Sheet3.Cells(Sheet3.Rows.Count, 1).End(xlUp).Row + 1
  - ActiveSheet.Unprotect "luuqian"
  - Sheet3.Unprotect "luuqian"
  - If TextBox1.Text = "" Or TextBox2.Text = "" Then
  -     MsgBox "信息输入不全,请补充完整。", vbInformation + vbOKOnly, "提示"
  -     TextBox2.SetFocus
  - Else
  -     If i = 2 Then
  -         Cells(i, 1) = 1
  -     Else
  -         Cells(i, 1) = Cells(i - 1, 1).Value + 1
  -     End If
  -     Sheet3.Cells(j, 1) = j - 1
  -     Cells(i, 2) = Date
  -     Sheet3.Cells(j, 2) = Date
  -     Cells(i, 3) = TextBox1.Value
  -     Sheet3.Cells(j, 3) = TextBox1.Value
  -     If Me.OptionButton1.Value = True Then
  -         Cells(i, 4) = "收费"
  -         Sheet3.Cells(j, 4) = "收费"
  -     Else
  -         Cells(i, 4) = "交费"
  -         Sheet3.Cells(j, 4) = "交费"
  -     End If
  -     Cells(i, 5) = TextBox2.Value
  -     Sheet3.Cells(j, 5) = TextBox2.Value
  -     Cells(i, 6) = TextBox3.Value
  -     Sheet3.Cells(j, 6) = TextBox3.Value
  -     With Cells(i, 1).Resize(1, 6).Borders
  -         .LineStyle = xlContinuous
  -         .Weight = xlThin
  -         .ColorIndex = xlAutomatic
  -     End With
  -     With Sheet3.Cells(j, 1).Resize(1, 6).Borders
  -         .LineStyle = xlContinuous
  -         .Weight = xlThin
  -         .ColorIndex = xlAutomatic
  -     End With
  -     Cells(i, 3).Select
  -     TextBox1.Text = ""
  -     TextBox2.Text = ""
  -     TextBox3.Text = ""
  -     TextBox1.SetFocus
  - End If
  - End Sub
  CommandButton2代码:- '退出
  - Private Sub CommandButton2_Click()
  - If Range("A1").Locked = False Then
  -     Range("A1").Select
  -     ActiveSheet.Protect "luuqian"
  -     ActiveSheet.EnableSelection = xlNoSelection
  -     Sheet3.Protect "luuqian"
  -     Sheet3.EnableSelection = xlNoSelection
  - End If
  - Unload Me
  - End Sub
    | 
4楼 滴水穿石 | 
哇塞,好东西! 留个脚印,慢慢学习  | 
5楼 0Mouse | 
3. 添加显示窗体、“刷新”按钮等相关代码
  双击工程窗口的“ThisWorkbook”,在弹出的空白窗格内输入以下代码:- Private Sub Workbook_Open()
  -     Application.Visible = False
  -     UserForm1.Show
  - End Sub
  依次单击“插入”-“模块”,在弹出的空白窗格内输入以下代码:- Sub 显示()
  -     UserForm2.Show
  - End Sub
  
 - Function ChnInstr(sr As String) As Boolean
  -     Dim i%, j%, k%
  -     ChnInstr = False
  -     sr = StrConv(sr, vbNarrow)
  -     i = Len(sr)
  -     For j = 1 To i
  -         If Asc(Mid$(sr, j, 1)) < 0 Then k = k + 1
  -     Next
  -     If k = i Then ChnInstr = True
  - End Function
  
 - Sub Refresh()
  - If Range("A1").Locked Then
  -     Dim i%, j%, arr, brr
  -     i = Cells(Rows.Count, 3).End(xlUp).Row
  -     If i = 2 Then
  -         Range("A2") = ""
  -         Range("A2") = 1
  -     ElseIf i > 2 Then
  -         arr = Range("A2:A" & i)
  -         ReDim brr(1 To UBound(arr), 1 To 1)
  -         For j = 1 To i - 1
  -             brr(j, 1) = j
  -         Next
  -         Range("A2:A" & i).ClearContents
  -         Range("A2:A" & i) = brr
  -         Set arr = Nothing
  -         Set brr = Nothing
  -     Else
  -         MsgBox "现在的数据无需刷新。"
  -     End If
  - Else
  -     MsgBox "只有管理员才能刷新流水号。", vbOKOnly, "提示"
  - End If
  - End Sub
  4. 设计启动显示画面并加入启动窗体
  先采用Illustrator CS3软件设计启动显示画面左下角的跑车,另存为“跑车.png”;
  再采用Photoshop CS3设计整个启动显示画面的背景图,添加系统标题“驾校费用记录系统1.0”、“登录”、“退出”等文字、密码输入框的锁样图形,并通过“图层样式”等功能为以上元素添加一些特效,导入“跑车.png”图片,调整至相应位置,另存为“启动画面.jpg”;
  双击工程窗口的UserForm1,再单击其属性窗口中Pciture属性右侧的按钮,在弹出的窗口中选择“启动画面.jpg”,单击“确定”按钮,调整UserForm1的高度和宽度,使之与“启动画面.jpg”的尺寸保持一致,再将TextBox1和CommandButton1、CommandButton2调整至相应位置。
  窗体的Picture属性:
 
      | 
6楼 0Mouse | 
5. 设计“录入”、“刷新”按钮并插入工作表和关联相应代码
   采用Photoshop CS3设计“录入”和“刷新”按钮,另存为“录入.png”和“刷新.png”图片;插入“记录”工作表;右键单击“录入”图片,选择“指定宏”命令,在弹出窗口的“宏名”列表中选择“显示”,确定;右键单击“刷新”图片,选择“指定宏”命令,在弹出窗口的“宏名”列表中选择“Refresh”,确定。
  “录入”和“刷新”按钮:
 
    
  指定宏:
 
    
  6. 保存、更名
  保存“feerec.xls”,关闭文档,将其重命名为“feerec.dll”。
  7. 制作启动程序
  启动Visual Basic 6.0,在“新建工程”对话框中选择“新建”选项卡的“标准 EXE”选项,单击“打开”按钮;
  新建工程对话框:
 
    
  单击工程窗口的Form1,再单击其属性窗口中“Icon”属性右侧的按钮,在弹出的对话框中选择事先准备好的ico格式图标,单击“打开”按钮;
  本系统所用的ico图标:
 
  feerec-ico.rar
 
  Form1窗体的Icon属性:
 
    
  右键单击工程窗口的Form1,选择“查看代码”命令,在弹出的空白窗格中输入以下代码:- Private Sub Form_Load()
  -     Dim xlApp As Object
  -     If IsFileOpen(App.Path & "\" & "feerec.dll") Then _
  -         MsgBox App.EXEName & " 文件已经打开!", vbInformation, "系统提醒:": GoTo line
  -     DoEvents
  -     Set xlApp = CreateObject("Excel.Application")
  -     xlApp.Workbooks.Open App.Path & "\" & "feerec.dll", password:="Xiamen-0Mouse"
  -     xlApp.Visible = True
  -     Set xlApp = Nothing
  - line:
  -     Unload Me
  -     End
  - End Sub
  - Function IsFileOpen(filename As String)
  -     Dim filenum As Integer, errnum As Integer
  -     On Error Resume Next
  -     filenum = FreeFile()
  -     Open filename For Input Lock Read As #filenum
  -     Close filenum
  -     errnum = Err
  -     On Error GoTo 0
  -     Select Case errnum
  -         Case 0
  -             IsFileOpen = False
  -         Case 70
  -             IsFileOpen = True
  -         Case Else
  -             Error errnum
  -     End Select
  - End Function
  依次单击“文件”-“生成工程1.exe”,在弹出对话框的“文件名”输入框内输入“『鹭千』驾校费用记录系统1.0”,选择相应的存储路径后,单击“确定”按钮。
  至此,系统制作完毕,感谢您的关注!^_^  | 
7楼 0Mouse | 
系统最终文件:
 
  『鹭千』驾校费用记录系统1.0.rar   | 
8楼 gysegz | 
仰望呀**  | 
9楼 双飞叶 | 
很好,过程写得非常详细,收藏学习  | 
10楼 yjzstar | 
界面做的好漂亮,顶一个!  | 
11楼 水星钓鱼 | 
精华作品,一定花了不少时间  | 
12楼 egs | 
哇塞厉害,慢慢学习   | 
13楼 chenhuafu | 
学习了。  | 
14楼 seanjane | 
大师 大师  |