将UserForm中文本框中的值列表复制到Excel工作表中

时间:2014-03-12 23:12:42

标签: vba excel-vba copy-paste userform excel

我有一个UserForm(frm10),有两个文本框(txt11和txt12)。 两个文本框都包含值列表。

有没有办法可以复制底层工作表(Sheet1)中这些框的值,以便每个值都出现在一个单独的单元格中? 我需要来自txt11的所有值出现在我的工作表的A列中,并且需要来自同一工作表的B列中的txt12的所有值。

非常感谢你提供任何帮助,蒂姆。

2 个答案:

答案 0 :(得分:1)

这取决于您的分隔符,但是下面的内容会起作用,稍微整齐一点(我还没有使用UserForms 时间,但方法将是相同的),你只需要适应两者,改变目的地开始等:

已编辑,因此您可以设置分隔符

'If you value list is separated by comma
Dim x As Integer, y As Integer
Dim str1 as String, strDelim as String
Dim sh As Worksheet
Dim c As Range

str1 = txt11 '(can't recall how you allocate from userform to variable...)
strDelim = Chr(10) ' chr(10) is new line feed, you may need to test what the 
    ' delimiter is, it could be chr(13) (carriage return)

' Add trailing comma so captures last value
If Right(str1, 1) <> strDelim  Then
    str1 = str1 & strDelim 
End If

' Set sheet and destination for values to start
Set sh = Worksheets("Sheet1")
Set c = sh.Range("A1")

' Set initial x and y
x = InStr(str1, strDelim)
y = 1

' Check at least 1 comma and that value was entered
If x = 0 Then
    If Len(str1) > 0 Then
        c.Value = str1
    End If
End If

' Loop through commas, paste value in cell and offset destination
Do Until x = 0
    c.Value = Mid(str1, y, x - y)
    y = x + 1
    x = InStr(y, str1, strDelim)
    Set c = c.Offset(1, 0)
Loop

Set c = Nothing
Set sh = Nothing

如果分隔符取决于他们如何输入新行,那么您可以替换所以它们都是相同的

str1 = Replace(str1,chr(13),chr(10))

然后使用chr(10)作为分隔符

答案 1 :(得分:0)

不知道这是否可行,但是...

...假设每个文本框中的值已经被分隔

Private Sub CommandButton1_Click()
  Me.TextBox1.Copy
  Range("A1").PasteSpecial Paste:=xlPasteAll
  Me.TextBox2.Copy
  Range("B1").PasteSpecial Paste:=xlPasteAll

结束子