我怎么知道我使用的是哪个版本的Qt?当我打开Qt Creator时,它显示"欢迎来到Qt Creator 2.3".但是,在构建设置中,它显示Qt Version 4.7.1.
我正在尝试根据点击的列标题对表中的excel列进行排序.到目前为止,我有下面的代码,它工作正常.我单击标题,表格按我单击的列标题排序.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(ActiveCell, Range("active[#Headers]")) Is Nothing Then
Dim KeyRange As Range
Set KeyRange = Range(Target.Address)
SortOrder = xlAscending
If Target.Value = "price" Then
SortOrder = xlDescending
End If
If Target.Value = "profit" Then
SortOrder = xlDescending
End If
Range("active").Sort Key1:=KeyRange, Header:=xlYes, Order1:=SortOrder
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
当我单击不同的标题单元格时,将取消先前的排序并设置new.这就是我想改变的地方.我想添加二级排序标准,而不是更改主要标准.
我想按多个标准排序,只需连续点击不同的标题单元格即可.例如,首先按价格排序,然后按截止日期排序,然后按其他方式排序.这种组合可能不同,所以我不能真正使用vba排序标准1,2,3并在一次通过中进行排序.
为了清除排序顺序,我使用这个:
ActiveWorkbook.Worksheets("active").ListObjects("active").Sort.SortFields. _
Clear
Run Code Online (Sandbox Code Playgroud)
你有什么想法,如何实现这个目标?
请不要问我为什么我按照它的编写方式编写代码.我不知道.不幸的是,我不是编码员,我粗略地理解代码是如何工作的,但我没有更深入的知识.我只是通过搜索然后尝试它是如何工作的(或更常见的是它不起作用)将来自不同来源的代码放在一起.
在该项目中,我正在处理的所有代码都位于模块中,每个模块都有不同数量的过程。我正在尝试将 VBA 代码过程一一导出到以其各自模块命名的文件夹中。我已经有了导出整个模块的代码,但我喜欢这个挑战,并且以这种方式跟踪更改更有趣!
下面的导出代码适用于除自身之外的每个模块,因为我检查函数/子函数的开始和结束的方式。这实际上是一个循环问题,因为它认为检查中的短语是新子句的开始!
如果有人有一个更有创意的解决方案来标记在这里工作的函数或子函数的开始和结束,或者有办法调整我的,我将非常感激!
Sub ExportVBCode2()
'NOTE: Globals will be included with the first procedure exported, not necessarily the procedure(s) they're used in
Dim directory As String
directory = "C:\Users\Public\Documents\VBA Exports" & "\"
Dim fso As Object
Set fso = CreateObject("scripting.filesystemobject")
' If fso.FolderExists(Left(directory, Len(directory) - 1)) Then
' fso.deletefolder Left(directory, Len(directory) - 1)
' End If
If Len(Dir(directory, vbDirectory)) = 0 Then
MkDir directory
End If
Dim VBComponent As Object
Dim Fileout As Object
Dim i As …
Run Code Online (Sandbox Code Playgroud) 我想将下面的项目添加到组合框,但如果有一个项目的重复项,那么应该只添加一个。
A
1 john
2 john
3 marry
4 marry
5 john
6 lisa
7 frank
8 marry
Run Code Online (Sandbox Code Playgroud)
我想组合框的结果是john
,marry
,lisa
和frank
(而不是八个项目四个独特的项目)。
我的代码是:
Private Sub Workbook_Open()
Application.EnableEvents = False
With Sheet2.ComboBox1
For Each Cell In Sheet1.Range("A1:A6348")
If Not ComboBox1.exists(Cell.Value) Then
.AddItem Cell.Value
End If
Next
End With
End Sub
Run Code Online (Sandbox Code Playgroud) 我下面的代码根据相应的单元格值(如果为0则隐藏)来隐藏/取消隐藏整个行,并且工作正常。
这是材料清单,并且有一个“完成”按钮。在列表的最后,您按下按钮,任何数量= 0的项目都应隐藏此相关行。
工作正常。但是问题在于它非常慢。正如您所看到的,它是400多个行,而从字面上我可以看到这些行消失了。它每秒处理大约20行,这使得在20秒内完成列表。并且列表每隔几个月就会翻一番。
因此,问题是-是否有其他方法可以立即或至少比当前速度更快地隐藏相关行?
非常感谢!
隐藏:
Public Sub HideRows()
Dim cell As Range
For Each cell In ActiveSheet.Range("H18:H469")
cell.EntireRow.Hidden = (cell.Value = 0 And cell.Value <> "")
Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)
取消隐藏:
Public Sub UnhideRows()
Dim cell As Range
For Each cell In ActiveSheet.Range("H18:H469")
If (cell.Value = 0 And cell.Value <> "") Then cell.EntireRow.Hidden = False
Next cell
End Sub
Run Code Online (Sandbox Code Playgroud) 这是我在stackoverflow上的第一篇文章.我在Excel VBA中有两个子过程.第一个名为Sub IAR_part_2()
,用于将两个工作表(按索引位置)分配给名为sheetname1和sheetname2的两个变量.在分配变量之后,我试图将它们传递给我的第二个子过程,称为IAR_macro,以进行处理.两张纸相互依赖,因此纸张4和8通过IAR宏,第5页和第9页,第6页和第10页等等.我的问题是我无法弄清楚如何将工作表名称变量从IAR_part_2传递到IAR_macro.我究竟做错了什么?
Sub IAR_part_2()
sheetname1 = Worksheets(4)
sheetname2 = Worksheets(8)
Call IAR_macro
End Sub
Sub IAR_macro(sheetname1 As Worksheet, sheetname2 As Worksheet)
Dim h As Long
Dim i As Long
Dim l As Long
Dim j As Long
Dim k As Long
Dim lr As Long
Worksheets(sheetname1).Activate
' Find the number of the last cell with data in column A and subtract 1 to populate variable i
On Error GoTo Canceled
i = (Range("B1").End(xlDown).Row) - 1
'Switch over …
Run Code Online (Sandbox Code Playgroud)