我已经从另一个电子表格复制了大约88列内容。问题是标题太大,无法正确显示在列单元格中。因此,我必须转到每个单元格,然后每次按Alt + Enter。我想使用一个可以自动执行的宏。
我正在使用Microsoft Excel 2016版本。
Sub Fit_Headers()
'Fit_Headers Macro
Range("BI13").Select
ActiveCell.FormulaR1C1 = "ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE"
Range("BJ13").Select
End Sub
我使用“记录宏”来记录我在一个单元格中所做的事情。如何修改它以便可以将其用于剩余的单元格?
答案 0 :(得分:1)
Chr(10)
是vbLf
...,它与Range.AutoFit
的搭配效果不是很好。 vbNewLine
(vbCrLf
,即Chr(10)
和Chr(13)
的工作原理很不错;您根本不需要Select
或完全解决ActiveCell
-只是清理宏记录器的垃圾请求(记录器只是模仿[大多数]用户操作,包括选择单元格) :它不需要冗余或高效的代码):
Public Sub FitHeaders()
With ActiveSheet.Range("BI13")
.Value = "ACTUAL SAMPLE" & vbNewLine & "FABRIC INHOUSE DATE"
.EntireColumn.AutoFit
End With
End Sub
答案 1 :(得分:0)
我不太了解您的要求。
是否要对其他单元格应用公式"ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE"
?
喜欢这个:
Sub test()
For Each c In Range("A1:B20").Cells
c.FormulaR1C1 = "ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE"
Next c
End Sub
答案 2 :(得分:0)
在试用了示例之后,设置单元格的内容后,在下面添加以下代码行,我相信会做您想做的事情:
function Point(x, y)
{
this.x = x;
this.y = y;
}
// New toString() method for the Point class.
Point.prototype.toString = function()
{
return `(${this.x},${this.y})`;
}
var arr;
function assign(iSize, jSize)
{
arr = {};
for (var i = 0; i < iSize; i++)
{
for (var j = 0; j < jSize; j++)
{
var pt = new Point(i, j);
arr[pt] = [1, 2, 3];
}
}
}
function iterate()
{
for (const key in arr)
{
console.log("key => ", key, " val => ", JSON.stringify(arr[key]));
}
}
assign(2, 2);
iterate();
我在玩游戏时发现了一些限制。在您提供的示例代码中,您在那里具有Chr(10)位,当存在该位时,Excel似乎不想扩大单元格以在一行上显示您设置为一行的所有内容。它将整个字符串分解成单个单词,每个单词在单元格中的一行上。此外,如果需要,可以将EntireRow与EntireColumn交换。