下面的代码将扫描每一列,并将属于条件(SEA,CUA等等,并且为红色)的整行复制到名为" FileShares的表格中。" (这是完成的一半!!)
我想现在做两件事,而不是复制整行,我希望它从源表(参见示例数据集1)将目标系统(应用程序),用户ID和角色名称复制到目标表,&# 34;文件共享" (请参阅示例数据集2)了解与条件匹配的每个单元格。只需填写粗体标题。对于"行动"列,删除需要放入每个有数据的行。
另外,我想动态搜索列到第n列(工作表中的最后一列)而不是硬编码变量" k"。
任何帮助,见解或建议都将不胜感激。谢谢!
Sub BulkUpload()
Dim rngCell As Range
Dim lngLstRow As Long
Dim keywords() As String, maxKeywords() As String
Dim totalKeywords As Integer, i&
Dim ws As Worksheet, resultsWS As Worksheet
Sheets.Add
ActiveSheet.Name = "FileShares"
Call Template
Set ws = Sheets("Sheet1")
Set resultsWS = Sheets("FileShares")
totalKeywords = 8
ReDim keywords(1 To totalKeywords)
ReDim maxKeywords(1 To totalKeywords)
maxKeywords(1) = "SEA"
maxKeywords(2) = "CUA"
maxKeywords(3) = "CCA"
maxKeywords(4) = "CAA"
maxKeywords(5) = "AdA"
maxKeywords(6) = "X"
maxKeywords(7) = "CUA" & Chr(10) & "SEA"
maxKeywords(8) = "CCA" & Chr(10) & "CUA" & Chr(10) & "SEA"
lngLstRow = ws.UsedRange.Rows.Count
Worksheets("FileShares").Select
j = 6
p = 1
q = 6
Dim k& ' create a Long to use as Column numbers for the loop
For k = 9 To 50
With ws
For Each rngCell In .Range(.Cells(8, k), .Cells(lngLstRow, k))
For i = LBound(maxKeywords) To UBound(maxKeywords)
If rngCell.Value = maxKeywords(i) And rngCell.Interior.ColorIndex = 3 Then
resultsWS.Cells(1000, k).End(xlUp).Offset(j + p, 0).EntireRow.Value = rngCell.EntireRow.Value
j = q + p - 7 'Used to start at row 8 and every row after
End If
Next i
Next rngCell
End With
Next k
End Sub
答案 0 :(得分:0)
Excel可以帮助您编写宏!
使用macro recorder,手动执行操作。录音机会将您的点击和按钮转换为VBA。
记录后,step through您的代码。 VBA的IDE包含一个很棒的功能。按F8可以让代码一次前进一行。这将帮助您弄清楚录制的宏的每个部分的作用。 热门提示:拆分屏幕,以便同时查看Excel和VBA窗口。这将有助于掌握代码,因为您可以看到每一行对UI的影响。
当您找到一行不明白的代码时,请参阅Microsoft's documentation。大多数项目包括一个工作示例,以及解释。
你可以学习这种技术。但是有一个限制。如果无法手动执行操作,则无法录制。为了将你的技能提升到新的水平,我建议(按顺序):