首页 > 解决方案 > 在 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)

标签: excelvba

解决方案


或使用自动过滤器(您可能希望在尝试设置 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

推荐阅读