excel - 在 VBA 中选择特定的单元格?
问题描述
我已经尝试了多个代码但没有运气。我有一个 1800 行和以下列的 Excel 表:ProgramCode、StudyBoard、FacultyID 和 ProgramType。在 StudyBoard 列中,有一些单元格是空的。然后,我将在 StudyBoard 中找到所有空单元格,并从其他列中找到它们的相应信息。找到所需的单元格后,必须在新工作表中覆盖它们。
我有以下代码,无法继续,因为即使我尝试的方法也不起作用。
Dim ws As Worksheet
Dim StudyBoardCol As Range
Dim PromgramCodeCol As Range
Dim rndCell As Range
Dim foundId As Variant
Dim msg As String
Dim FacultyIdCol As Range
Dim ProgramTypeLetter As Range
Set ws = ThisWorkbook.Worksheets("SSBB")
Set StudyBoardCol = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
Set ProgramCodeCol = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)
Set FacultyIdCol = ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
Set ProgramTypeLetter = ws.Range("D2:D" & ws.Cells(ws.Rows.Count, "D").End(xlUp).Row)
For i = 2 To 1800
Set rndCell = StudyBoardCol.Cells(Int(Rnd * StudyBoardCol.Cells.Count) + 1)
FacultyIdCol = Application.Match(rndCell.Value, ProgramCodeCol, 0)
ProgramTypeLetter = Application.Match(rndCell.Value, ProgramCodeCol, 0)
解决方案
或使用自动过滤器(您可能希望在尝试设置 rng 之前添加一个单元格存在要复制的测试
Option Explicit
Public Sub TransferBlankStudyBoard()
Dim rng As Range
With ThisWorkbook.Worksheets("SSBB").UsedRange 'Or limit to columns A:D
.AutoFilter
.AutoFilter Field:=1, Criteria1:="="
Set rng = ActiveSheet.AutoFilter.Range
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).EntireRow.Delete
.AutoFilter
End With
End Sub
推荐阅读
- reactjs - React-Select:保持编辑模式() 选择后(输入)
- autodesk-forge - 场景更新()与无效()
- c# - 什么是 C# 中的 SafeFileHandle,我应该什么时候使用它?
- git - 无法推送到 GitHub 上的远程存储库
- java - 如何解决“发生 JNI 错误,请检查您的安装。”
- r - 使用 gganimate 时 ggplot 的 geom_polygon 的奇怪行为
- php - 当在 CodeIgniter 中设置当前日期时,Bootstrap 日期选择器从视图中向 cotroller 发送空值
- c# - 在 Unity3D 中为 IL2Cpp 构建运行时代码编译是否有任何解决方案?
- angular - CLIENT_ERROR:主要来源的 S3 ARN 无效
- javascript - 在jquery中加载页面时如何设置默认值并填充下拉选择框