Excel VBA 跨表 批量设置数据有效性, 急

两个 sheet : 数据源, “数据有效性引用” , 两在同一工作薄内, 格式完全一样

“ 数据源 ” A3:A1000 数据有效性系列 来源 为 "数据有效性引用" Range(A3:A4) (要求序列 可添加, 即 可能会新增A5, 那么序列变为A3:A5, 意思是 A3 :A (xlendup row))
“ 数据源 ” B3:B1000 数据有效性系列 来源 为 "数据有效性引用" B3:B4, 同样要求序列可添加, 即 B3 : B列 最后一非空单元格

同理 : C3:C1000 来源于 数据有效性引用 C3:C 列最后非空单元格 行

在此真诚感谢各位帮忙,
希望描述清楚了, 如仍有不明 请提出,谢谢

补充一细节: 本人用Office 2007
sheet "数据源" 内需设置数据有效性的 范围 有间断:
如现在需设置 F:AF列 AM:AZ 列 BP :CL列, 其余列不用设置

悬赏100 先,如可速度帮忙解决, 马上加100, 这个对各位大神是小Case

在 数据有效性引用 表的代码中,输入:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
iYcx
End Sub
sub iYcx()
Dim r As Long, c As Byte
With ActiveWorkbook.Names
For c = 1 To 3
r = Cells(65536, c).End(xlUp).Row
.Add Name:="ycx" & c, RefersToR1C1:="=数据有效性引用!R3C" & c & ":R" & r & "C" & c
Next
End With
end sub
先按F5运行一次 iYcx 程序
然后到 数据源 表,分别设置有效性 ycx1、ycx2、ycx3追问

按你的写法, 还没公式 来的快, 我现在有500列, 要定义500次

你就是用个宏定义名称, 其余的啥都没干啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-27
vate Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target = "" Then
Exit Sub
End If
For i = 2 To ThisWorkbook.Sheets.Count
Set c = Sheets(i).Cells.Find(Target, ActiveCell, , xlWhole)
If Not c Is Nothing Then
Sheets(i).Select
Sheets(i).Range(c.Address).Activate
Exit Sub
End If
Next i
End Sub

'功能还比较单一,如有进一步要求,可以hi我追问

copy别人的 代码都不copy全, 没点职业精神
Private sub ....大哥。

第2个回答  2011-02-27
把excel附件发到我邮箱吧[email protected] 思路:先定义范围,再设置数据有效性
可以百度HI我
第3个回答  2011-02-28
这个不需要VBA就可以解决,HI我帮你弄

你也可以自己做,方法如下:
1, 公式-定义名称
2, 输入名称,比如 a , 输入公式
=Sheet1!$A$3:INDIRECT("a" & COUNT(Sheet1!$A$3:$A$1000)+2), 确定
3, 选中a3:a1000, 数据-数据有效性,选择序列,来源输入 =a
其它默认确定

B\C列类推

有问题,找百度,呵呵,我给你的也是百度来的,你可以参考下别人的,还有用offset的,看你等级那么高,我就不解释了...
http://zhidao.baidu.com/question/53692917.html?si=7追问

用个 offset ,154K会变成4M ,这个N年前我都都会写了,我现在学习VBA在

自己定义的 名称,比你的好
=OFFSET(数据有效性引用!A$1,0,0,MAX((数据有效性引用!A$1:A$10"")*ROW(数据有效性引用!A$1:A$10)))