我对这一切都非常非常新,当谈到编写VBA功能等时,这个社区似乎非常有帮助。我一直在网站上寻找类似的问题,并且找不到任何与之相关的问题。我的特殊问题。
我需要创建一个函数来复制一个单元格的格式和另一个单元格中的值,并将它们组合成一个输出。
对于某些上下文,我有一张表格,它找到格式为[00:00:00]的数字,将它们转换为总时间值(hh:mm:ss)并为每个值添加一个公共值。并非所有初始值都是数字,其他值是文本,需要在最终输出中保留其粗体/斜体属性。所以我正在寻找的是一种从单元格中复制值的方法(比方说G2)和来自不同单元格的格式(比方说A2),并将它们组合起来进行最终输出。
我糟糕的编码技巧产生了这个:
Function Copy_Format(cell1, cell2)
Dim cell1 As String, cell2 As String
Range("cell1").Copy
Range("cell2").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("cell2").Copy
Range("output").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Function
我希望“cell1”成为复制格式的单元格,“cell2”是值的来源,“cell3”是函数插入的单元格。
任何和所有帮助将不胜感激!总体目标是使这一过程分为一步,因为这将最终分发给超过一百人,几乎没有Excel经验。
谢谢! FFstack
答案 0 :(得分:0)
Public Function CopyFormat(cell1 As Range, cell2 As Range)
CopyFormat = Format(cell2, cell1.NumberFormat)
End Function
CopyFormat = ...
)Range(cell1)
代替Range("cell1")
).NumberFormat
属性并将其应用于Format
函数如果在Excel工作表上使用该功能,可以像=CopyFormat(A1,B1)
那样放置,否则如果在VBA中,只需忽略=
编辑:如果您想要复制的粗体等,这是功能无法实现的(如上所述)。似乎最简单的方法是使用带有标准的Sub,如下所示:
Sub Copy_Format(cell1 As Range, cell2 As Range, cell3 As Range)
Dim sel As Range
Set sel = Selection
Application.ScreenUpdating = False
cell1.Copy
cell3.PasteSpecial Paste:=xlPasteFormats
cell2.Copy
cell3.PasteSpecial Paste:=xlPasteValues
sel.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
无法从工作表中调用此Sub,但可以通过VBA调用此类:
Sub test()
Call Copy_Format(Range("A1"), Range("B1"), Range("C1"))
End Sub
如果你要运行特定的单元格,你可以循环来完成整个列等等。
答案 1 :(得分:0)
将格式从cell1复制到cell2,然后将cell2的值复制到输出:
Function Copy_Format(cell1, cell2, output)
cell1.Copy
cell2.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
cell2.Copy
output.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Copy_Format = output
End Function
这会解决您的问题吗?