Excel精英培训网

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

[已解决]快速输入数据的VBA代码

[复制链接]
发表于 2016-4-28 21:37 | 显示全部楼层 |阅读模式
本帖最后由 安全网 于 2016-4-29 20:25 编辑

如果C5单元格输入01,下面就提示可供选择的X01,S01,T01的VBA代码,具体见附件
最佳答案
2016-4-29 15:52
本帖最后由 cabcd1 于 2016-4-29 15:56 编辑
安全网 发表于 2016-4-29 11:10
如果是E列使用的数据是SHEET2表内的的B列,SHEET2表内的的A列和B列的数据是不同的,该怎么设置
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim n As Integer
  3.     Dim rg
  4.     Dim str As String
  5.     n = Sheet2.Range("A65536").End(xlUp).Row
  6.     str = ""
  7.     If Target.Column = 4 And 3 <= Target.Row <= 65536 Then
  8.         If Target <> "" Then
  9.             For Each rg In Sheet2.Range("A1:A" & n)
  10.                 If rg.Value Like "*" & Target.Value & "*" Then
  11.                     str = str & "," & rg.Value
  12.                 End If
  13.             Next rg
  14.             With Target.Validation
  15.                 .Delete
  16.                 If str = "" Then Exit Sub
  17.                 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  18.                 xlBetween, Formula1:=str
  19.                 .IgnoreBlank = True
  20.                 .InCellDropdown = True
  21.                 .IMEMode = xlIMEModeNoControl
  22.                 .ShowInput = True
  23.                 .ShowError = False
  24.             End With
  25.         Else
  26.             Target.Validation.Delete
  27.         End If
  28.     End If
  29. If Target.Column = 5 And 3 <= Target.Row <= 65536 Then
  30.         If Target <> "" Then
  31.             For Each rg In Sheet2.Range("B1:B" & n)
  32.                 If rg.Value Like "*" & Target.Value & "*" Then
  33.                     str = str & "," & rg.Value
  34.                 End If
  35.             Next rg
  36.             With Target.Validation
  37.                 .Delete
  38.                 If str = "" Then Exit Sub
  39.                 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  40.                 xlBetween, Formula1:=str
  41.                 .IgnoreBlank = True
  42.                 .InCellDropdown = True
  43.                 .IMEMode = xlIMEModeNoControl
  44.                 .ShowInput = True
  45.                 .ShowError = False
  46.             End With
  47.         Else
  48.             Target.Validation.Delete
  49.         End If
  50.     End If
  51. End Sub
复制代码
复制一下修改Target.Column = 5 Sheet2.Range("B1:B" & n)

快速输入数据的代码.rar

2.4 KB, 下载次数: 21

发表于 2016-4-28 23:30 | 显示全部楼层
在sheet1中随便哪个位置更改后都会出来下拉框

快速输入数据的代码.rar

15.33 KB, 下载次数: 40

回复

使用道具 举报

 楼主| 发表于 2016-4-29 08:38 | 显示全部楼层
cabcd1 发表于 2016-4-28 23:30
在sheet1中随便哪个位置更改后都会出来下拉框

能否加入限制,比如是D列,从D3:D65536
回复

使用道具 举报

发表于 2016-4-29 08:57 | 显示全部楼层
加入target的范围就行了

快速输入数据的代码 (1).rar

14.79 KB, 下载次数: 31

回复

使用道具 举报

 楼主| 发表于 2016-4-29 11:10 | 显示全部楼层
cabcd1 发表于 2016-4-29 08:57
加入target的范围就行了

如果是E列使用的数据是SHEET2表内的的B列,SHEET2表内的的A列和B列的数据是不同的,该怎么设置
回复

使用道具 举报

 楼主| 发表于 2016-4-29 12:00 | 显示全部楼层
cabcd1 发表于 2016-4-29 08:57
加入target的范围就行了

还有单元格输入01-09时,单元格数据只显示相同的,而不是11/12/13等都显示出来,输入数据三角型箭头就显示出来
回复

使用道具 举报

发表于 2016-4-29 15:43 | 显示全部楼层
安全网 发表于 2016-4-29 12:00
还有单元格输入01-09时,单元格数据只显示相同的,而不是11/12/13等都显示出来,输入数据三角型箭头就显示 ...

嗯输入1,那么范围内有1的都出来的,如果输入01那么11就不出来了,什么叫数据三角形箭头?看不懂
回复

使用道具 举报

 楼主| 发表于 2016-4-29 15:44 | 显示全部楼层
cabcd1 发表于 2016-4-29 15:43
嗯输入1,那么范围内有1的都出来的,如果输入01那么11就不出来了,什么叫数据三角形箭头?看不懂

我输入01还是所有的都出来,就是有效性的那个方块
回复

使用道具 举报

发表于 2016-4-29 15:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 cabcd1 于 2016-4-29 15:56 编辑
安全网 发表于 2016-4-29 11:10
如果是E列使用的数据是SHEET2表内的的B列,SHEET2表内的的A列和B列的数据是不同的,该怎么设置
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim n As Integer
  3.     Dim rg
  4.     Dim str As String
  5.     n = Sheet2.Range("A65536").End(xlUp).Row
  6.     str = ""
  7.     If Target.Column = 4 And 3 <= Target.Row <= 65536 Then
  8.         If Target <> "" Then
  9.             For Each rg In Sheet2.Range("A1:A" & n)
  10.                 If rg.Value Like "*" & Target.Value & "*" Then
  11.                     str = str & "," & rg.Value
  12.                 End If
  13.             Next rg
  14.             With Target.Validation
  15.                 .Delete
  16.                 If str = "" Then Exit Sub
  17.                 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  18.                 xlBetween, Formula1:=str
  19.                 .IgnoreBlank = True
  20.                 .InCellDropdown = True
  21.                 .IMEMode = xlIMEModeNoControl
  22.                 .ShowInput = True
  23.                 .ShowError = False
  24.             End With
  25.         Else
  26.             Target.Validation.Delete
  27.         End If
  28.     End If
  29. If Target.Column = 5 And 3 <= Target.Row <= 65536 Then
  30.         If Target <> "" Then
  31.             For Each rg In Sheet2.Range("B1:B" & n)
  32.                 If rg.Value Like "*" & Target.Value & "*" Then
  33.                     str = str & "," & rg.Value
  34.                 End If
  35.             Next rg
  36.             With Target.Validation
  37.                 .Delete
  38.                 If str = "" Then Exit Sub
  39.                 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  40.                 xlBetween, Formula1:=str
  41.                 .IgnoreBlank = True
  42.                 .InCellDropdown = True
  43.                 .IMEMode = xlIMEModeNoControl
  44.                 .ShowInput = True
  45.                 .ShowError = False
  46.             End With
  47.         Else
  48.             Target.Validation.Delete
  49.         End If
  50.     End If
  51. End Sub
复制代码
复制一下修改Target.Column = 5 Sheet2.Range("B1:B" & n)

回复

使用道具 举报

发表于 2016-4-29 15:54 | 显示全部楼层
本帖最后由 cabcd1 于 2016-4-29 15:57 编辑
安全网 发表于 2016-4-29 15:44
我输入01还是所有的都出来,就是有效性的那个方块

你改成02看看,在改成01可以出来的,我放在change事件中,只有内容有修改的时候它才会触发

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 11:32 , Processed in 0.403135 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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