Excel精英培训网

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

[已解决]求这样的代码,见附件。

[复制链接]
发表于 2014-2-27 11:42 | 显示全部楼层 |阅读模式
本帖最后由 st600616 于 2014-2-27 12:57 编辑

求这样的代码,见附件。
最佳答案
2014-2-27 12:58
st600616 发表于 2014-2-27 12:51
你好,老师,可否不自动化,用按钮操控可以么。
比如,选取后,点按钮再运行代码运算结果。
  1. Sub Macro1()
  2. Dim w(0 To 9), rng As Range, m As Range, i%
  3. Set rng = Application.InputBox("请用鼠标选中数据区域", Type:=8)
  4. If Not Application.Intersect(Range("b147").CurrentRegion, rng) Is Nothing Then
  5.     For i = 0 To 9
  6.         w(i) = i
  7.     Next
  8.     Range("b147").CurrentRegion.Interior.ColorIndex = xlNone
  9.     rng.Interior.ColorIndex = 6
  10.     For Each m In rng
  11.         w(m.Value) = m & "@"
  12.     Next
  13.     x = Filter(w, "@", False)
  14.     [an:an].ClearContents
  15.     [an1].Resize(UBound(x) + 1, 1) = Application.Transpose(x)
  16. End If
  17. End Sub
复制代码

sssqqq.rar

15.24 KB, 下载次数: 20

发表于 2014-2-27 12:36 | 显示全部楼层
本帖最后由 sgxb123431380 于 2014-2-27 12:51 编辑

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   dim arr
   dim n,i,k
    Range("B147:AJ164").Interior.ColorIndex = xlNone
    Selection.Interior.ColorIndex = 6
    Columns("AN").Clear
    arr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    For Each n In Selection
        arr(n.Text) = ""
    Next n
    k = 0
    For i = 0 To 9
        If arr(i) <> "" Then
            Range("AN" & 1 + k) = arr(i)
            k = k + 1
        End If
    Next i
End Sub
写在当前sheet页里
回复

使用道具 举报

 楼主| 发表于 2014-2-27 12:38 | 显示全部楼层
sgxb123431380 发表于 2014-2-27 12:36
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("B147:AJ164").Interior.Color ...

有错误,变量为定义
回复

使用道具 举报

发表于 2014-2-27 12:46 | 显示全部楼层
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. If Not Application.Intersect(Range("b147").CurrentRegion, Target) Is Nothing Then
  3.     Dim w(0 To 9), m As Range, i%
  4.     For i = 0 To 9
  5.         w(i) = i
  6.     Next
  7.     Range("b147").CurrentRegion.Interior.ColorIndex = xlNone
  8.     Target.Interior.ColorIndex = 6
  9.     For Each m In Target
  10.         w(m.Value) = m & "@"
  11.     Next
  12.     x = Filter(w, "@", False)
  13.     Range("an1:an65536").ClearContents
  14.     Range("an1").Resize(UBound(x) + 1, 1) = Application.Transpose(x)
  15. End If
  16. End Sub
复制代码
回复

使用道具 举报

发表于 2014-2-27 12:47 | 显示全部楼层
………………

sssqqq.zip

26.12 KB, 下载次数: 3

回复

使用道具 举报

发表于 2014-2-27 12:50 | 显示全部楼层
本帖最后由 sgxb123431380 于 2014-2-27 12:52 编辑
st600616 发表于 2014-2-27 12:38
有错误,变量为定义


那是你设定强制声明变量了吧,去掉就可以了,或者把变量都声明一下,在上面改好了
回复

使用道具 举报

 楼主| 发表于 2014-2-27 12:51 | 显示全部楼层
本帖最后由 st600616 于 2014-2-27 12:53 编辑
dsmch 发表于 2014-2-27 12:46


你好,老师,可否不自动化,用按钮操控可以么。
比如,选取后,点按钮再运行代码运算结果。
回复

使用道具 举报

发表于 2014-2-27 12:54 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Arr, N, K%, I%
    Cells.Interior.ColorIndex = xlNone
    Selection.Interior.ColorIndex = 6
    Columns("AN").Clear
    Arr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    For Each N In Selection
        If N <> "" Then Arr(N.Text) = ""
    Next N
    K = 0
    For I = 0 To 9
        If Arr(I) <> "" Then
            Range("AN" & 1 + K) = Arr(I)
            K = K + 1
        End If
    Next I
End Sub
回复

使用道具 举报

 楼主| 发表于 2014-2-27 12:55 | 显示全部楼层
sgxb123431380 发表于 2014-2-27 12:36
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   dim arr
   dim n,i,k

可否不自动化, 用按钮操控
回复

使用道具 举报

发表于 2014-2-27 12:58 | 显示全部楼层    本楼为最佳答案   
st600616 发表于 2014-2-27 12:51
你好,老师,可否不自动化,用按钮操控可以么。
比如,选取后,点按钮再运行代码运算结果。
  1. Sub Macro1()
  2. Dim w(0 To 9), rng As Range, m As Range, i%
  3. Set rng = Application.InputBox("请用鼠标选中数据区域", Type:=8)
  4. If Not Application.Intersect(Range("b147").CurrentRegion, rng) Is Nothing Then
  5.     For i = 0 To 9
  6.         w(i) = i
  7.     Next
  8.     Range("b147").CurrentRegion.Interior.ColorIndex = xlNone
  9.     rng.Interior.ColorIndex = 6
  10.     For Each m In rng
  11.         w(m.Value) = m & "@"
  12.     Next
  13.     x = Filter(w, "@", False)
  14.     [an:an].ClearContents
  15.     [an1].Resize(UBound(x) + 1, 1) = Application.Transpose(x)
  16. End If
  17. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:38 , Processed in 0.686072 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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