Проблема с зацикливанием в VBA (доступ), чтобы поместить элементы в форму и правильно расположить их - PullRequest
0 голосов
/ 28 октября 2010

Я пытался создать форму из 68 элементов, размещая все элементы в форме с помощью цикла, но этот цикл не работает :( Может кто-нибудь, пожалуйста, помогите мне заставить это работать? Я пробовалищу везде, но не вижу, что делать: /

  Dim Items(67) As String
  For x = 0 To 67
    Items(x) = "Ctl" & x
  Next

  #It goes from 1 here as I manually set up 1 otherwise (x - 1) wont work.
  For x = 1 To 67
    Form_Home.Items(x).Top = 0
    Form_Home.Items(x).Left = (Form_MainScreen.Items(x - 1).Left) + (Form_MainScreen.Items(x - 1).Width)
    Form_Home.Items(x).Height = 225
    Form_Home.Items(x).Width = 500
  Next

Спасибо всем:)

1 Ответ

1 голос
/ 28 октября 2010

Что вы имеете в виду под Form_Home.Items ?если у вас уже есть элементы управления, добавленные к вашим формам, возможно, существует коллекция Controls, поэтому вы можете выполнить итерацию по ней и установить ее свойства, предполагая, что каждый элемент управления имеет имя вида Ctl0, Ctl1, Ctl2 ... тогда вы можете действовать следующим образом:

Dim ct_name as String
Dim ct_name_before as String
For x = 1 To 67
   ct_name_before = "Ctl" & CStr(Cint(x-1))
   ct_name = "Ctl" & CStr(x)
   Form_Home.Controls(ct_name).Top = 0
   Form_Home.Controls(ct_name).Left = (Form_MainScreen.Items(ct_name_before).Left) + _
                                      (Form_MainScreen.Items(ct_name_before).Width)
   Form_Home.Controls(ct_name).Height = 225
Next

В некоторых версиях VBA вы можете создать массив элементов управления с одинаковыми именами и разными индексами, затем вы можете выполнять итерацию по массиву, чтобы получить каждый элемент управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...