【发布时间】:2021-05-16 12:56:56
【问题描述】:
我有一个正在运行宏的电子表格,在宏的末尾,我希望它获取第 1 行中所有已填充单元格的内容(每次运行时填充的单元格的数量都会有所不同)并将这些单元格的内容一起打印到 msgbox 中。
我想要一个框来连接 A - D 列中的数据并像这样显示它: 4 种应用和技术,包括以下黄金级和白金级:ABC、DEF、GHI、JKL
(请记住,每次运行时,文本的列数都会改变。有时只有 A 和 B,其他可能有 300 或更多,这就是我尝试的原因使用范围).
我不知道如何让消息框选择第 1 行中包含内容的所有单元格,然后在消息框中显示该内容。相反,我得到了这个:
这是我的宏:
Sub TLA_2()
' Count the rows and display the message
Dim No_Of_Rows As Integer
No_Of_Rows = Range(Selection, Selection.End(xlDown)).Rows.Count
'MsgBox No_Of_Rows, vbOKOnly, "Total Number of Applications"
Range("A1").Select
MsgBox No_Of_Rows & " Applications and Technologies, including the following Gold and Platinum Tiers: " & Range(Selection, Selection.End(xlToRight)).Select
End Sub
我知道我的问题是 .Select 在我的范围末尾,并且我得到“真实”,因为它选择了数据。我想不通的是如何让它产生该选择的价值,而不是仅仅确认选择发生了。
我也尝试过使用变量概念,但没有奏效:
Range("A1").Select
Dim paragraph As Object
paragraph = Range(Selection, Selection.End(xlToRight)).Text
MsgBox No_Of_Rows & " Applications and Technologies, including the following Gold and Platinum Tiers: " & paragraph
我知道这将是一个非常愚蠢的新手,但我被困住了!
【问题讨论】:
-
您可以使用
&遍历单元格并连接它们的值,或者如果您的Excel 版本支持,则使用WorksheetFunction.Concat。 -
谢谢!你能帮我弄清楚怎么写吗?我对 VBA 很陌生,所以我正在通过剖析示例来弄清楚如何做事:)
-
你是针对每一行,一次一个,还是只做一行?
-
只有 1 行数据,但该行中包含数据的列的数量是可变的。谢谢!