excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值相关的知识,希望对你有一定的参考价值。

A列使用了公式,当G列录入内同后,A列会自动生成内容如图2。我想通过VBA实现,当A列自动录入内容后,能够将公式生成的结果,自动转换为“值”(这个步骤可以通过录制一个“粘贴为值”的宏实现),需要加一个,A列由空值变为非空的判断,并且在转换为值前,弹出一个窗体,让我选择是否将A列内容转换为值,选是继续,选否则退出程序。另外,比如我这次是在G87 G88录入内容,则A87 A88会自动生成数据,此时只允许A87 A88自动转换成值,其他A列其他单元格则不允许进行此操作
请大家帮帮忙这个要怎么做?
图1

图2

参考技术A 可利用工作表事件,复制如下代码在所要实现目标的sheet中。

Private Sub Worksheet_Change(ByVal Target As Range)

Target.Copy
    Target.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

追问

试了下,这个代码没有任何作用……

追答

保证正确使用了吗?

粘贴位置在worksheet事件栏。

追问

是的,我截个图给你看下

A列仍是公式结果,只是G列是copy状态,其他没有任何改变

参考技术B

将以下代码,粘贴到该表的代码窗格中(注意!!!)

Private Sub Worksheet_Change(ByVal Target As Range)
application.EnableEvents=False
if target.column=7 then
    if target.row >5 then
        if target.count=1 then
             if target.value<>"" then
                 cells(target.row,1)=cells(target.row,1).value
             end if
        end if
    end if
end if
application.EnableEvents=true
End Sub

追问

谢谢,刚才弄错了,不过可以加一个提示让我选择是否粘贴为值的功能吗?这个没有提示,就直接转换为值了

追答Private Sub Worksheet_Change(ByVal Target As Range)
application.EnableEvents=False
if target.column=7 then
    if target.row >5 then
        if target.count=1 then
             if target.value<>"" then
                 if msgbox("是否将公式转换为值?",vbyesno,"转换确认")=6 then
                 cells(target.row,1)=cells(target.row,1).value
                 end if
             end if
        end if
    end if
end if
application.EnableEvents=true
End Sub

本回答被提问者采纳

excel如何合并单元格数据

参考技术A   在excel日常使用中,难免会遇到要合并单元格,但表格当中有着内容该如何合并这些数据呢?下面就跟我一起看看吧。
  excel合并单元格数据的 方法 一:&符号
进行单元格字段之间的合并

  在展示的单元格内输入公式:=A2&"跑步"&B2&"公里",用&进行不同单元格内容之间的连接。

  按回车(Enter键),则可以返回所需要合并,如图所示这只是一个案例,当有很多行数据需要合并时,先输入一行,返回结果后,直接下拉复制公式或者双击即可。
  excel合并单元格数据的方法二:&符号和text()函数
  在展示的单元格内输入公式:=A3&"跑了总长度的"&TEXT(B3,"0%"),用&和text()进行不同单元格内容之间的连接。text()函数能够定义字段类型,如果没有text()函数,显示出来的是0.1而不是10%。

  按回车(Enter键),则可以返回所需要合并,多行数据时,先输入一行,返回结果后,直接下拉复制公式或者双击即可。
  excel合并单元格数据的方法三:CONCATENATE()函数
  在展示的单元格内输入公式:=CONCATENATE(A2,"跑步",B2,"公里"),CONCATENATE()里面可添加多个文本,这些文本可以是字符串、数字。自己添加的字段要用“”引用起来。

  按回车(Enter键),则可以返回所需要合并,多行数据时,先输入一行,返回结果后,直接下拉复制公式或者双击即可。

excel合并单元格数据的相关 文章 :

1. excel不能合并单元格怎么办

2. 如何将Excel多个单元格的内容合并到一个单元格

3. excel 单元格以及数据一同合并函数的教程

4. 怎么把Excel单元格中多行文字合并为一行

以上是关于excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值的主要内容,如果未能解决你的问题,请参考以下文章

求EXCEL VBA代码。单元格输入内容保存后自动锁定有内容单元格。下次打开后不可编辑。

基于背景颜色的Excel公式单元格

excel如何合并单元格数据

利用VBA实现多个工作表指定单元格公式变为数值?

使用 VBA 将 Excel 公式写入单元格

如何在excel 中运算公式中引用单元格值