Присвойте значения текстового поля соответствующим ячейкам на основе имени - PullRequest
0 голосов
/ 30 января 2009

У меня есть набор текстовых полей в форме, называемых sm1, sm2 и т. Д., И я хочу назначить их ячейкам A1, A2 и т. Д. Есть ли способ поместить это в цикл, например:

For i = 1 to 100
  Cells(i, 1).Value = ("sm" & c).Value
Next i

Ответы [ 3 ]

3 голосов
/ 30 января 2009

Не уверен насчет VBA, но в форме должна быть коллекция «элементов управления», доступ к элементам которой можно получить по имени элемента управления, как показано выше.

cells(i,1).Value = Controls("sm"&c).Value
1 голос
/ 31 января 2009

Альтернативным методом будет использование свойства ControlSource каждого текстового поля для привязки их к соответствующим ячейкам

0 голосов
/ 30 января 2009

С текстовыми полями в форме вы можете использовать коллекцию элементов управления.

For Each oControl In Me.Controls
    If Typename(oControl) = "TextBox" Then
        iCellNumber = Val(Mid$(oControl.Name, 3)) 'Assumes all textboxes have two letter names
        cells(iCellNumber ,1).Value = val(oControl.Text)
    End If
Next oControl

Если элементы управления находятся на листе, вы можете использовать коллекцию фигур на этом листе

For Each oControl In Me.Shapes
    If InStr(oControl.Name, "TextBox") = 1 Then
        iCellNumber = Val(Mid$(oControl.Name, 3))
        cells(iCellNumber ,1).Value = val(oControl.Text)
    End If
Next oControl
...