VBA基础知识 提取超链接 批注转内容 工作簿内图片联动

基础知识

  1. 官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/overview/
  2. 基本流程:尝试寻找最佳路径——文字记录——录制VBA——修改,写备注,调试
  3. 宏执行后,操作不可撤销,可以关闭文件,选择【不保存】
  4. 有实践经验的功能无须过多调试,可以先解决难点(没有使用经验的功能)
  5. 部分WPS版本中,VBA无法从公式中识别内容,因此,原始数据中不要使用公式,目标单元格可以使用公式
  6. 图片无法定位,如果要删除部分图片,把要保留的图片、要删除的图片分表存放

If语句

If 条件 Then
过程
End If

For语句

For Each i In Item
    过程
Next i

自动触发事件

Private Sub Worksheet_Change(ByVal Target As Range)
  1. 【Worksheet】为对象名称,【Change】为事件名称,两者用下划线连接
  2. 【Target】为触发事件的单元格区域,即数值被修改了的单元格

合并计算

注意:【C3:C4】表示第3列到第4列,C表示column,不是表示C3单元格到C4单元格

Selection.Consolidate Sources:= "C3:C4", Function:=xlSum, LeftColumn:=True

Range.End

作用:定位非空单元格
示例【Range(“A1000”).End(xlUp)】:从A1000(不含)向上,找到的第一个非空单元格
要求:A1000为空,不带公式、文本

代号 1 2 3 4
常用参数 xlToLeft -向左 xlToRight xlUp xlDown

Offset(行数,列数)

偏移。正数向右、向下偏移,负数向左、向上偏移

自动生成方法名

【Private Sub Worksheet_Change(ByVal Target As Range) 】的办法:
对象设置为:worksheet
过程设置为:change
某一列变化时:If Target.Column = 2 Then


提取超链接

  1. 创建一个启用宏的Excel文档,把带有超链接的文本放在A列
  2. 自定义一个函数:【Alt+F11】进入VBA环境——右击当前工作表——插入【模块】
  3. 复制以下内容
Function command1(Cell)
    command1 = Cell.Hyperlinks(1).Address
End Function
  1. 在工作表的B1单元格使用函数【=Get_link(A1)】

批注转内容

把带注释的单元格放在A列

Function GetComments(pRng As Range) As String
If Not pRng.Comment Is Nothing Then
    GetComments = pRng.Comment.Text
End If
End Function

#运行时的公式:=GetComments(A1)

工作簿内图片联动

逻辑:IF 第1列有更新,先清空sheet2的图片,然后根据sheet1,更新sheet2

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then 
    For Each Item In Sheet2.Shapes  
        Item.Delete
    Next Item
    For Each cell In Sheet2.Range("A1", [A1000].End(xlUp))
        Sheet1.[A:A].Find(cell,,,2).Offset(, 1).Copy cell.Offset(, 1)
    Next cell      
    End If
End Sub

两表样式如下
VBA基础知识 提取超链接 批注转内容 工作簿内图片联动_第1张图片
VBA基础知识 提取超链接 批注转内容 工作簿内图片联动_第2张图片

你可能感兴趣的:(其它,vba,excel)