一下代码是不久前某个朋友在这里贴的转贴一下:===================================
''新建一个窗体,随便放几个控件,copy代码:
Private Sub Form_Load()
  Call ResizeInit(Me)
End SubPrivate Sub Form_Resize()
  Call ResizeForm(Me)
End Sub
'''新建一个模块,copy代码如下:
Option Explicit
'¶¨Òå FormOldWidth, FormOldHeight ÎªÈ«¾Ö±äÁ¿£¬ÕâÑùÆäËûÄ£¿é²ÅÄܵ÷ÓÃËü
Global FormOldWidth, FormOldHeight'ÔÚµ÷ÓÃResizeFormÇ°Ïȵ÷Óñ¾º¯Êý
Public Sub ResizeInit(FormName As Form)
 
 'ControlÊÇÒ»¸ö¶ÔÏ󣬱íʾËùÓРVisual Basic ÄÚ²¿¿Ø¼þµÄÀàÃû¡£
 '¿ÉÒÔ½«Ò»¸ö±äÁ¿±êΪ Control ¶ÔÏó£¬ÏóÒý°Ñ¿Ø¼þ·Åµ½´°ÌåÉϵÄÒ»ÑùÀ´ÒýÓÃËü¡£ÀýÈ磺
 'Dim C As Control
 'Set C = Command1
 Dim Obj As Control
 FormOldWidth = FormName.ScaleWidth
 FormOldHeight = FormName.ScaleHeight
 On Error Resume Next
 
 'EachÊÇÒ»¸ö¹Ø¼ü×Ö£¬×÷ÓÃÊÇÕë¶ÔÒ»¸öÊý×é»ò¼¯ºÏÖеÄÿ¸öÔªËØ£¬Öظ´Ö´ÐÐÒ»×éÓï¾ä¡£
 'Óï·¨
 'For Each element In Group
 For Each Obj In FormName
   'Tag·µ»Ø»òÉèÖÃÒ»¸ö±í´ïʽÓÃÀ´´æ´¢³ÌÐòÖÐÐèÒªµÄ¶îÍâÊý¾Ý¡£
   Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
 Next Obj
 On Error GoTo 0End Sub'°´±ÈÀý¸Ä±ä±íµ¥ÄÚ¸÷Ôª¼þµÄ´óС£¬
'ÔÚµ÷ÓÃReSizeFormÇ°Ïȵ÷ÓÃReSizeInitº¯Êý
Public Sub ResizeForm(FormName As Form)
 Dim Pos(4) As Double
 Dim i As Long, TempPos As Long, StartPos As Long
 Dim Obj As Control
 Dim ScaleX As Double, ScaleY As Double
 
 '±£´æ´°Ìå¿í¶ÈËõ·Å±ÈÀý
 ScaleX = FormName.ScaleWidth / FormOldWidth
 '±£´æ´°Ìå¸ß¶ÈËõ·Å±ÈÀý
 ScaleY = FormName.ScaleHeight / FormOldHeight
   
 On Error Resume Next
 
 For Each Obj In FormName
   StartPos = 1
   
   '¶ÁÈ¡¿Ø¼þµÄԭʼλÖÃÓë´óС
   For i = 0 To 4
     'InStrº¯Êý£¬·µ»Ø Variant (Long)£¬Ö¸¶¨Ò»×Ö·û´®ÔÚÁíÒ»×Ö·û´®ÖÐ×îÏȳöÏÖµÄλÖá£Óï·¨:InStr([start, ]string1, string2[, compare])
     TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
     If TempPos > 0 Then
       'Midº¯Êý£¬·µ»ØVariant (String)£¬ÆäÖаüº¬×Ö·û´®ÖÐÖ¸¶¨ÊýÁ¿µÄ×Ö·û¡£Óï·¨£ºMid(string, start[, length])
       Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
       StartPos = TempPos + 1
     Else
       Pos(i) = 0
     End If
     
     '¸ù¾Ý¿Ø¼þµÄԭʼλÖü°´°Ìå¸Ä±ä´óСµÄ±ÈÀý¶Ô¿Ø¼þÖØж¨Î»Óë¸Ä±ä´óС
     'Move·½·¨£¬ÓÃÒÔÒƶ¯ MDIForm¡¢Form »ò¿Ø¼þ¡£Óï·¨:object.Move Left, Top, Width, Height
     Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
   
   Next i
 Next Obj
 On Error GoTo 0End Sub

解决方案 »

  1.   

    哦,不好意思了,乱码都是注释,我给你重新贴一下:================================
    '''form:
    Private Sub Form_Load()
      Call ResizeInit(Me)
    End SubPrivate Sub Form_Resize()
      Call ResizeForm(Me)
    End Sub
    '''module:
    Option Explicit
    Global FormOldWidth, FormOldHeightPublic Sub ResizeInit(FormName As Form)
     
     Dim Obj As Control
     FormOldWidth = FormName.ScaleWidth
     FormOldHeight = FormName.ScaleHeight
     On Error Resume Next
     
     For Each Obj In FormName
       Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
     Next Obj
     On Error GoTo 0End SubPublic Sub ResizeForm(FormName As Form)
     Dim Pos(4) As Double
     Dim i As Long, TempPos As Long, StartPos As Long
     Dim Obj As Control
     Dim ScaleX As Double, ScaleY As Double
     
     ScaleX = FormName.ScaleWidth / FormOldWidth
     ScaleY = FormName.ScaleHeight / FormOldHeight
       
     On Error Resume Next
     
     For Each Obj In FormName
       StartPos = 1
       
       For i = 0 To 4
         TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
         If TempPos > 0 Then
           Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
           StartPos = TempPos + 1
         Else
           Pos(i) = 0
         End If
         
         Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
       
       Next i
     Next Obj
     On Error GoTo 0End Sub