2011-07-31 8 views
1

を完了するために使用可能なメモリが不足しています。私は約10ページを含むマルチページを持つアプリケーションを持っており、すべてのページには3-5ページの別のマルチページが含まれています。問題は、アプリがあまりにも重いので、複数のフォーム(すべてのページのフォーム)に分割したかったということでした。私が言ったように、フォームは、それらの一つ一つに、別の3-5ページで、約10ページを持っていたし、すべてのページにおよそ3-20コンボボックス、テキストボックス4-40があった最初のアプリで 。それらのすべては、コードを実行することによって初期化時にロードされました。 今、私はすべてのページのコードをコピーし、それを置き換えたフォームの初期化に追加しました。私は珍しい問題に実行しているよ。この操作

Private Sub UserForm_Initialize() 
Dim i As Integer 
Dim ws1 As Worksheet 
Dim pagini As range 
Set ws1 = Worksheets("Config") 
Dim cControl As Control 
Set cControl = Me.Controls.Add("Forms.Multipage.1", "oly", True) 
    With cControl 
     .Width = 650 
     .Height = 380 
     .Top = 0 
     .Left = 0 
    End With 
Me.Controls("oly").Pages.Remove (Page1) 
Me.Controls("oly").Pages.Remove (Page2) 
    For Each pagini In ws1.range("pagoly") 
     Me.Controls("oly").Pages.Add (pagini) 
    Next pagini 
i = 0 
Do While i < 5 
    Set cControl = Me!oly.Pages(i).Add("Forms.Frame.1", "iooly" & i, True) 
     With cControl 
      .Caption = "IO" 
      .Width = 210 
      .Height = 340 
      .Top = 2 
      .Left = 5 
     End With 
    Set cControl = Me!oly.Pages(i).Add("Forms.Frame.1", "niooly" & i, True) 
     With cControl 
      .Caption = "nIO" 
      .Width = 210 
      .Height = 340 
      .Top = 2 
      .Left = 220 
     End With 
    Set cControl = Me!oly.Pages(i).Add("Forms.Frame.1", "descriere" & i, True) 
     With cControl 
      .Caption = "Descriere" 
      .Width = 210 
      .Height = 340 
      .Top = 2 
      .Left = 435 
     End With 
Loop 
End Sub 

これまでのところ、それはちょうどこのフォームの5ページのすべての上のフレームを追加します。 コードは次のようなものです。問題は、実行するときに「この操作を完了するのに利用可能なメモリが不足しています」というメッセージが表示され、その理由がわからないということです。しかし、50倍以上のものをロードした以前のバージョンでは問題はありませんでした。私は本当にそれを理解していないので、あなたはどこに問題があるか考えていますか?

答えて

4

あなたは

Do While i < 5 
    'stuff 
Loop 

を持っており、プログラムがループを終了するように、私が値を変更する場所を私は表示されません。何か不足していますか?

+0

そうだね...いまいましいどのように愚かな私は! –

関連する問題