此代码的说明(我在哪里放置值?)Excel VBA

时间:2014-03-08 11:38:40

标签: excel vba

Function ConcatinateAllCellValuesInRange(sourceRange As Excel.Range) As String
Dim finalValue As String

Dim cell As Excel.Range

For Each cell In sourceRange.Cells
    finalValue = finalValue + CStr(cell.Value)
Next cell

ConcatinateAllCellValuesInRange = finalValue
End Function

例如,您可以这样称呼它:

Sub MyMacro()
MsgBox ConcatinateAllCellValuesInRange([A1:C3])
End Sub

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我在我的问题中找到了解决方案(上图),但我不知道将细胞的值放在哪里。

我必须将水平单元格的文本添加到一个单元格中。

例如,a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 我需要将它们按顺序添加到一个单个单元格中

2 个答案:

答案 0 :(得分:0)

您需要使用Union。所以,在一个单元格中,例如:

=ConcatinateAllCellValuesInRange((A1:A4,B1:B4,C1:C4))
                                 ^                 ^   

请注意,范围在内部括号中,因此它们可以被函数解释为单个参数。

在你的宏中,你可以使用类似的东西:

MsgBox ConcatinateAllCellValuesInRange(Range("a1:a4, b1:b4, c1:c4"))

答案 1 :(得分:0)

使用此

Function ConcatRange(ParamArray m()) As String
 Dim p As Integer, x As Integer, v
 Dim nr As Integer, nc As Integer, s As String
 Dim r As Integer, c As Integer
 p = UBound(m)
 s = ""
 For x = 0 To p
  nr = m(x).Rows.Count
  nc = m(x).Columns.Count
  v = m(x)
  For r = 1 To nr
   For c = 1 To nc
    s = s & v(r, c)
   Next
  Next
 Next
ConcatRange = s
End Function

在VBA中称之为:

s = ConcatRange(Range("A1:A4"), Range("B1:B4"),Range("C1:C4") )

并在Excel中

=ConcatRange(A1:A4;B1:B4;C1:C4)