フォームにsm1、sm2などと呼ばれる一連のテキストボックスがあり、それらをセルA1、A2などに割り当てたいと考えています。これをループに入れる方法はありますか?
For i = 1 to 100
Cells(i, 1).Value = ("sm" & c).Value
Next i
VBAについてはわかりませんが、フォームに「コントロール」コレクションが必要です。上記のように、コントロール名でこの要素にアクセスできます。
cells(i,1).Value = Controls("sm"&c).Value
別の方法はControlSource
、各テキストボックスのプロパティを使用して、それらを関連するセルにバインドすることです
フォームのテキスト ボックスでは、Controls コレクションを使用できます。
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