从excel表中读取一列&显示在文本框vba

时间:2016-04-13 11:38:49

标签: excel vba excel-vba

读取一列的所有行&显示在运行时创建的文本框上。经过几次没有帮助的尝试,我正在转向寻求下面的帮助。

Name

ABC

AB

ABCEF

GHFD

我希望excel表格中的所有行都显示在文本框中,就像它们出现在特定列的工作表中一样。我创建了4个表示列和文本框的文本框。 11个表示行的文本框。对于第一列,我希望数据显示在工作表中。我按照我的要求成功创建了文本框,但无法根据需要显示数据。非常感谢您的帮助

Public Sub UserForm_Initialize()

Set sh = ThisWorkbook.Sheets("Testing")

sh.Range("F21").Activate

With sh
    fatalcount = WorksheetFunction.CountIf(Range("F:F"), "Fatal")
    Majorcount = WorksheetFunction.CountIf(Range("F:F"), "Major")
    Minorcount = WorksheetFunction.CountIf(Range("F:F"), "Minor")
End With

For jrow = 1 To 11
For i = 0 To 4
    Set txtB1 = WtmsFrm.Controls.Add("Forms.TextBox.1")
    With txtB1
    .Name = "chkDemo" & i
    .Height = 20
    .Width = 5 + 50 + 5
    .Left = 10 + 50 * i + 2
    .Top = 15 * jrow + 10
    .ControlTipText = "Type of Bug"
    End With
 Next i
Next jrow

For Each tbox In  Frm.Controls
   ' For counter = 2 To 11

    If tbox.Name = "chkDemo" Then

        tbox.Value = Sheets("sheet1").Cells(counter, 2).Value  ' failing code
        tbox.ControlTipText = "Name"

    ElseIf tbox.Name = "chkDemo1" Then
        tbox.Value = 1

    ElseIf tbox.Name = "chkDemo2" Then
        tbox.Value = 2
    ElseIf tbox.Name = "chkDemo3" Then
        tbox.Value = 3
     ElseIf tbox.Name = "chkDemo4" Then
        tbox.Value = 4
    End If
   ' Next counter

Next


' Initialise the followings
 Frm.txtFatal.Value = fatalcount

 Frm.txtMajor.Value = Majorcount

 Frm.txtMinor.Value = Minorcount

 Frm.txtTotoal.Value = fatalcount + Majorcount + Minorcount

End Sub

1 个答案:

答案 0 :(得分:0)

我没有看到您创建名为"chkDemo"的文本框。他们都附加了一个数字。当您从所有控件中取出tbox时,您的工作表上可能会有一个名为"chkDemo"但不是文本框的控件。我也没有看到counter声明或初始化。这也可能让代码失败。

另请注意,对于.Name = "chkDemo" & i,您为文本框指定了相同的名称,因为您也处于For jrow循环中。