excel - 根据用户输入对列进行排序
问题描述
请参考下面的代码。我正在尝试根据Range("AD2")
. 问题出在key1:=rng_sort
我认为以错误方式调用的线路上。
我想要做的是更改根据在单元格上选择的条件排序的列
Range("AD2")
。在该单元格上,我有一个数据验证列表,如下所示:
如果Range("AD2") = "Event"
我想对 I 列进行排序。如果它等于“Vo”,我想对 J 列进行排序。
知道我可能做错了什么吗?
谢谢你。
Sub sortEvent()
Sheets(1).Activate ' activate sheet(1)
Dim n As Integer
Dim j As Integer
Dim i As Integer
Dim h As Integer
Dim Lastrow As Integer
Dim ng_sort As Range
Lastrow = Cells(Rows.Count, "I").End(xlUp).Row ' guarda o indice da ultima linha com conteudo da coluna I. Mesmo havendo vazios identifca a ultima linha
Length = Range(Range("I10"), Range("I" & Lastrow)).Rows.Count ' dimensão da coluna O ate a ultima celula com conteudo começando na O6
For firstrow = 1 To Length ' loop na coluna O
If Range("C2").Offset(firstrow, 0).Interior.Color = RGB(68, 114, 196) Then
Exit For
End If
Next firstrow
If Range("AD2") = "Event" Then
rng_sort = Range("I1")
Else
rng_sort = Range("J1")
End If
n = 0
j = 1
For i = 1 To Length ' loop na coluna I
If Range("C2").Offset(firstrow + i, 0).Value <> "" Then
n = n + 1
Else
Range(Range("C2").Offset(firstrow + j, 0), Range("C2").Offset(firstrow + j + n - 1, 0)).EntireRow.sort key1:=rng_sort, order1:=xlAscending, Header:=xlNo
j = j + n + 1
n = 0
End If
Next i
End Sub
解决方案
您没有Option Explicit
在模块的开头设置,否则您会看到您的问题。
转到工具/选项并将选项设置为始终需要变量声明。我不知道为什么 MS 不将其设为默认值。
你有
Dim ng_sort As Range
但是在您的代码中,您显示
rng_sort = Range("I1")
由于rng_sort
从未声明过,它将用作变体并包含 的内容Range("I1")
,而不是范围对象。
如果您声明Option Explicit
,这将被标记为错字;如果没有Set
关键字,您将收到运行时错误 91,并且能够自己解决这个问题。
尝试:
If Range("AD2") = "Event" Then
set rng_sort = Range("I1")
Else
set rng_sort = Range("J1")
End If
我没有测试你的代码,因为你没有提供任何数据示例,但你肯定需要Set
一个范围对象。
推荐阅读
- c++ - C++,获取windows目录下最后修改的文件
- c# - 如何根据datagridview外部的组合框过滤datagridview组合框中的结果
- julia - Julia中的二维曲线拟合
- vue.js - 一个 ui 组件可以成为两个项目的激活器吗?(尝试使用带有 v-dialog 的 v-tooltip)
- php - 在我的网页索引上显示 requestbin 数据
- scala - 如何使用scala查找字符串变量中的位数?
- laravel - 在 Laravel 项目图像中以 json_decode 格式(如 ff1dgadfll)出现,但我想在管理员存储中以原始格式显示它如何?
- apache-spark - 火花内存分数和执行程序内存开销?
- asp.net-mvc - 如何将视图输入数据保存到不同的表中?
- php - Laravel 5.7 登录和注册页面不起作用:刷新相应页面