Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6420|回复: 12

[已解决]自动填充Selection.AutoFill Destination的使用方法

[复制链接]
发表于 2017-6-14 10:24 | 显示全部楼层 |阅读模式
自动填充Selection.AutoFill Destination的使用方法
例:在C列最后一个非空单元格内输入“0301”,向下填充次数是读取前面两位数“03”,同时也把B列内容同样向下填充相同次数。

最佳答案
2017-6-19 11:02
你用的工作表事件,那就可以不用selection了,全部换成target,而且在填充单元格区域时,又会触发change事件,导致连锁反应,可以用以下代码试试。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. If Target.Column <> 3 Then Exit Sub
  4. Application.EnableEvents = False
  5. Target.AutoFill Destination:=Target.Resize(Val(Left(Target.Value, 2)))
  6. Application.EnableEvents = True
  7. End Sub
复制代码

工作簿1.zip

10.91 KB, 下载次数: 5

附件

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-6-15 17:53 | 显示全部楼层
回复

使用道具 举报

发表于 2017-6-16 13:09 | 显示全部楼层
迟到的板凳
Selection.AutoFill Destination:=Selection.Resize(Val(Left(Selection, 2)))
B列不明白怎么做,所以没有考虑。
回复

使用道具 举报

 楼主| 发表于 2017-6-17 16:37 | 显示全部楼层
大灰狼1976 发表于 2017-6-16 13:09
迟到的板凳
Selection.AutoFill Destination:=Selection.Resize(Val(Left(Selection, 2)))
B列不明白 ...

不知道那里有问题,报1004错误。B列的意思是从C那里读取向下填充的次数。向下填充的内容是B列内容。求解释一下{:1012:}
回复

使用道具 举报

发表于 2017-6-19 10:28 | 显示全部楼层
你可以把出错的文件发上来看一下。
另,是不是选择了多个单元格?
回复

使用道具 举报

 楼主| 发表于 2017-6-19 10:37 | 显示全部楼层
大灰狼1976 发表于 2017-6-19 10:28
你可以把出错的文件发上来看一下。
另,是不是选择了多个单元格?

怎么样才能读取到活动单元格内容前两位信息呢?错误信息1004
回复

使用道具 举报

发表于 2017-6-19 10:43 | 显示全部楼层
Val(Left(Selection, 2))
读取到活动单元格内容前两位信息
回复

使用道具 举报

 楼主| 发表于 2017-6-19 10:51 | 显示全部楼层
大灰狼1976 发表于 2017-6-19 10:43
Val(Left(Selection, 2))
读取到活动单元格内容前两位信息

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 3 Then
Selection.AutoFill Destination:=Selection.Resize(Val(Left(Selection, 2)))
        End If
End Sub


这样写有问题吗?  还是报Selection.AutoFill Destination:=Selection.Resize(Val(Left(Selection, 2)))错误

回复

使用道具 举报

发表于 2017-6-19 11:02 | 显示全部楼层    本楼为最佳答案   
你用的工作表事件,那就可以不用selection了,全部换成target,而且在填充单元格区域时,又会触发change事件,导致连锁反应,可以用以下代码试试。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. If Target.Column <> 3 Then Exit Sub
  4. Application.EnableEvents = False
  5. Target.AutoFill Destination:=Target.Resize(Val(Left(Target.Value, 2)))
  6. Application.EnableEvents = True
  7. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-6-19 11:35 | 显示全部楼层
大灰狼1976 发表于 2017-6-19 11:02
你用的工作表事件,那就可以不用selection了,全部换成target,而且在填充单元格区域时,又会触发change事 ...

单独一列现在没有问题了,谢谢。  现在我把B列改成这样可行吗?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
  Application.EnableEvents = False
    Select Case Target.Text
    Case Is = Val(Left(Target.Value, 2))
        Range("B" & Target.Row) = Selection
Application.EnableEvents = True
    End Select
        End If
End


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 16:12 , Processed in 0.493715 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表