TextBox 字符串到多行

TextBox 字符串到多行

我在工作表中嵌入了一个 ActiveX 多行 TextBox1。它包含一些值(以换行符/回车符分隔),我试图将它们放入多个单元格中(在本例中为 A1:A5,但具体需要多少取决于用户在 TextBox1 中输入的行数),但到目前为止,我只能将它们放入一个单元格中(在本例中为 A1)。我尝试在 TextBox1 的属性中将 LinkedCell 设置为多个范围,但这不起作用。


 What I've got:                                            TextBox1
                                                              |

             A   
                                                  ------------------------------
 1            a                                  |a                             |
              b                                  |b                             |
              c                                  |c                             |
              d                                  |d                             |
              e                                  |e                             |
                                                  ------------------------------

 ------------------------------------------------------------------

 What I'm trying to get:

                                                           TextBox1
                                                              |

             A   
                                                -------------------------------
 1           a                                  |a                             |
 2           b                                  |b                             |
 3           c                                  |c                             |
 4           d                                  |d                             |
 5           e                                  |e                             |
                                                --------------------------------

 -----------------------------------------------------------

有没有办法将 TextBox1 中以换行符/回车符分隔的值/字符串输出到多个单元格?谢谢!


这是我最近尝试过的宏:

Sub TextBoxToRow() 
  Dim Arr As Variant 

  Arr = Split(ActiveSheet.TextBox1.Text, vbLf) 
  Range("B2").Resize(, UBound(Arr) + 1) = Arr 
End Sub

其中值是从文本框中获取的,并使用回车符作为分隔符。但是不行

我认为问题在于当我将字符串输入文本框时宏可能根本没有启动(这就是我说“不行”的意思......只是什么都没有发生)。

答案1

这里的关键是使用文本框的更改事件,因此无论何时更改任何内容,宏都会运行。

插入它的最简单方法是转到包含文本框的工作表的代码模块,打开左上角的下拉菜单并选择文本框的名称,它会自动插入更改事件的子项。

我还需要稍微修改一下你的代码才能工作:

Private Sub TextBox1_Change()
    Dim Arr As Variant
    Dim i As Long
    Dim Target As Range

    Arr = Split(ActiveSheet.TextBox1.Text, vbLf)
    Set Target = Range("B2")
    For i = LBound(Arr) To UBound(Arr)
        Target.Value = Arr(i)
        Set Target = Target.Offset(1, 0)
    Next i
End Sub

如果您不希望每次更改都反映出来,只要您离开文本框,那么您可以使用 LostFocus 事件而不是 Change。

相关内容