回 帖 发 新 帖 刷新版面

主题:[原创]vb 编程的一点心得和体会 ,希望会给您带来一点帮助

[em1]
(1)
   消息框中按钮之定义

    MsgBox strMsg1, c1+c2+c3 , strMsg2

    其中  strMsg1   为提示信息

          strMsg2   为标题内容

          c1+c2+c3  定义按钮形式,具体如下:

          c1: 按钮的类型

            0    vbOkOnly             只有一个按钮“确定”
            1    vbOkCancel           两个按钮“确定”和“取消”
            2    vbAbortRetryIgnore   三个按钮“终止”、“重试”和“忽略”
            3    vbYesNoCancel        三个按钮“是”、“否”和“取消”
            4    vbYesNo              两个按钮“是”和“否”
            5    vbRetryCancel        两个按钮“重试”和“取消”

              返回值:  vbOk          1   确定
                        vbCancel      2   取消
                        vbAbort       3   终止
                        vbRetry       4   重试
                        vbIgnore      5   忽略
                        vbYes         6   是
                        vbNo          7   否

          c2: 图标的类型         

            16   vbCritical           ×
            32   vbQuesion            ?
            48   vbExclamation        !
            64   vbInformation        i

        c3: 默认焦点

            0    vbDefalaultButton1   左起第一个按钮自动获得焦点
            256  vbDefalaultButton2   左起第二个按钮自动获得焦点
            512  vbDefalaultButton3   左起第三个按钮自动获得焦点

        和为:   00  0000  0000 B
               c3   c2    c1

   例: 1.   i = MsgBox " 是否要删除该条记录 ? ", 1+32+0 , " 请确认"

        2.   MsgBox " 是否要删除 ! ", 0+32+0 , " 请...."


(2)
        判断表的存在

Function M_fucScanTable(strTName As String) As Integer ' 搜索表 strTableName
     On Error GoTo OpenErr
     Set MyRsm = New Recordset
   MyRsm.Open "Select * From " & strTName,Cn, adOpenKeyset, adLockOptimistic
        MyRsm.MoveLast
        M_fucScanTable = MyRsm.RecordCount        ' 返回记录数,0 为空表
        MyRsm.Close
        Set MyRsm = Nothin
        Exit Function
    OpenErr:
        M_fucScanTable = -1                                   ' 无表
    End Function   
(3)
    动态建立表
       strSQL = "CREATE TABLE " & strTName & _
        "( Xh char(3) Not Null Primary key,Mc char(10),Xb char(2)," & _
        "Csrq char(10),Zw char(20),Gz numeric(9,2),Bz char(30),Xp image )"
       cn.Execute strSQL, , adCmdText

       其中: Primary key 为设置主键(唯一)
(4)
    插入记录     Insert
  
       strSQL = "Insert Into A01(Xh,Mc,Xb,Csrq,Zw) " & _
       "Values ( '" & Xhp & "','" & Mcp & "','" & Xbp &"','" &Rqp& "','" & Zwp & "' "
       Cn.Execute strSQL
(5)
导出表格到excel
    Dim newxls As Excel.Application
    Dim newbook As Excel.Workbook
    Dim newsheet As Excel.Worksheet

    Set newxls = CreateObject("excel.application")
    newxls.Visible = True
    Set newbook = newxls.Workbooks.Add
    Set newsheet = newbook.Worksheets(1)
    For i = 0 To 7
        For j = 0 To 4
            MSFlexGrid1.Row = i
            MSFlexGrid1.col = j
            newsheet.Cells(1, 3) = Trim(Combo1.Text) & "班"
            newsheet.Cells(1, 4) = "第" & bytXq & "学期"
            newsheet.Cells(1, 5) = "课程表"
            newsheet.Cells(i + 3, j + 2) = Trim(MSFlexGrid1.TextMatrix(i, j))
        Next j
    Next i
    注意此项操作你先要 引用 excelctl type library 和 microsoft excel 9.0 object library

(6)   with 语句的应用
   With msflexgrid1
        .CellAlignment = 4
        .TextMatrix(1, 0) = "考试编号"
        .TextMatrix(1, 1) = "学号"
        .TextMatrix(1, 2) = "姓名"
        .TextMatrix(1, 3) = "班号"
        .TextMatrix(1, 4) = "课程名称"
        .TextMatrix(1, 5) = "分数"        
    End With
(7)
响应回车
Private Sub Text2_KeyPress(KeyAscii As Integer)                       ' Text2 响应回车键
    If KeyAscii = 13 Then
       Command1.SetFocus
    End If
End Sub
(8)
隐藏任务栏
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
            ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Sub Form_Load()
        SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub
希望能给您在编程时带来一点方便
同时我也只是起到一个抛砖引玉的 目的
希望您也能供稿 我方便大家努力
谢谢各位 vb 爱好者们
[em80]

回复列表 (共29个回复)

沙发


不同作用范围变量的声明方式
作用范围              局部变量             模块级变量           公用变量
声明方式             Dim,ststic    Dim,private           Public
声明位置            过程内部               通用部分         模块的声明段
其他过程能否调用      不能                     能           能
其他模块能否调用      不能                    不能           能

2.      变量的声明技巧
           Public  strSQL  As  String
           Dim     intI    As  Integer
        由上面的两个例子可以看出声明变量时应该注意变量的命名规则
            变量类型 & 变量名
        变量一定要有意义,这样的好处是当看到变量时很快就能知道变量的类型从而避免了变量赋值时出现类型不匹配的错误,而且增加了程序的可读性.
3      在应用变量时一定要保正变量已赋初值.

二.    常量
        用户一但定义了常量,在以后的程序中不能再给这个常量赋新值,否则在程序运行时,vb会错误提示.
        定义常量的例子:
            Public  Const  Db_Name1   =  "f:\qqqq\db\zhang.mdb"    
                关键字     常量名     =      常量的值

板凳

一.    条件判断语句

     1 .   单行    if  ……  then  与 iif(  ……  ) 结构
           例:     If  Text1.Text = " " Then  msgbox “ 空值”
           例      strdata  =   iff(  a>b ,    text1.text ,   text2.text)
                 目标变量          条件       值1        值2
           当a>b = true 时      strdata=text1.text    
           当a>b= false 时      strdata=text2.text
     2.    if …..  then …..  else …….    end if
           例:If  Size > 0 Then
                   Text1.Text = ""   
               Else
                   Text1.Text = " ok "
               End If
          应该注意的是此种结构的书写格式!
     
3.   select  case 结构
当需要完成多重判定的任务时,可以使用select  case  结构
    语法:   Select   测试条件
            Case     表达式1
            语句组1
            Case     表达式2
            语句组2
             ……….
            Case     表达式n
            语句组n
            End  Select

二.        循环语句

     Vb主要有两种循环结构,即  do…..loop   和   for……next.
1.    do….loop 结构
       使用do 循环重复执行一语句块,并计算测试条件以决定何时结束循环,循环条件必须是一个数值或者值为true 或false 的表达式. Do….loop语句有四种形式:
           [1]   do while            [2]   do
                 …….                   ……..
                Loop                     Loop while

           [3]   do until             [4]   do
                  ………                  ……..
                Loop                     Loop until
           退出do循环用 Exit do
  2     for …….  Next  结构
        语法:    for   计数器=  初值  to 终值  
                 ………….
                 Next    
                 例:    dim   intz   as integer , inty  as  integer
                        For   intz =1 to 100
                        If   intz  mod  2  = 0 then inty  =inty+1     
                        next    
              其中的 计数器 ,初值 和 终值  都必须是数值型!
三.      定义过程和函数          

1.    定义过程   
      语法:  private  sub  P_fcz( )
             ………
             End sub
       例:    表格初始化.
              Private  sub  P_bgcsh( )
              With msflexgrid1
                      .TextMatrix(1, 0) = "考试编号"
                  .TextMatrix(1, 1) = "学号"
                  .TextMatrix(1, 2) = "姓名"
                  .TextMatrix(1, 3) = "班号"
                  .TextMatrix(1, 4) = "课程名称"
                  .TextMatrix(1, 5) = "分数"        
               End With   
               End sub
              过程调用 call 过程名
  2.    函数定义  
        语法: Function 函数名(参数 As 类型) As 类型
               …………
             End function
         例:   Function M_sf1(strn As String) As String
                Dim strSz As String, n As Integer, a As Integer, b As String
                n = Len(strn)
                strSz = " "
                a = n - 8 - 5
                If n = 1 Then strSz = "hello"
                If n = 2 Then strSz = "pool"
                If n = 3 Then strSz = "how do yu do"
                b = Mid(strn, 6, a)
               End Function
               函数调用   目标量=函数名( 参数 )

3 楼

写的不错啊.

导出表格到excel里的excelctl type library 在什么地方引用,怎么在引用菜单里找不到?

4 楼

你单击 工程里的引用
选择里面的excelctl type library 和 microsoft excel 9.0 object library两项
就哦了

5 楼

up

6 楼

hehe,找到microsoft excel 9.0 object library好像就ok了,另外一个有什么用?

以下两行不是笔误吧?
MSFlexGrid1.Row = i
MSFlexGrid1.Row = j

7 楼

第 6 楼
的朋友 谢谢指教
加分

8 楼

up

9 楼

up
          可惜,MSFlexGrid1最大行数由微机内存决定,大程序很难用。

10 楼

第一页我收藏

关于函数和过程部分我进行下补充

Function aaa(index As Integer, Optional aaa As Integer = 1) As String
'Optional 表示可选参数,如果没有对aaa指定变量,则aaa=1
End Function

我来回复

您尚未登录,请登录后再回复。点此登录或注册