1

使用 vba 插入行或列通常很容易。但是,根据用户输入在锁定的单元格中自动执行它并不容易。我的问题是 如何在保存为 xlsm 的锁定 Excel 工作表中自动插入格式化样式行或列?

解释:

我有一张名为“Sheet1”的表格是用密码“ABCD”锁定的,用户只能在彩色区域输入数据。但是,有时列表很短,而另一些则很长。自动插入行和列是一个好主意,就像 Visual Studio 中的数据网格一样。

请看图片,如果用户在彩色区域的第 9 行输入任何内容,那么它会自动创建一个格式化样式的第 10 行(用于组件列表 1)。如果用户输入任何内容以清空第 14 行,则它会在组件列表 2 中插入第 15 行。

如果用户在 H 列中输入任何内容,则相同,然后我创建列 I

在此处输入图像描述

我不知道如何编写语法,但这是我对设计的想法:

我必须为组件列表 1 (Com1)、组件列表 2 (Com2) 和蓝色区域 (Part_quality) 中的区域定义一个名称,以便程序知道哪个区域应该检查用户输入

检查用户输入的数据是否在定义的名称范围内。如果是,请检查用户是否在最后一行和最后一列中输入了任何数据。如果是,则使用存储在内存中的预定密码解锁文件,插入行/列,然后将其锁定

4

1 回答 1

1

在此处输入链接描述

这是你正在尝试的吗?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MRange As Range, rng As Range

    On Error GoTo Whoa

    Set MRange = Range("InputRange")

    '~~> Get the last Row of the range
    Set rng = MRange.Range(MRange.Cells(MRange.Rows.Count, 1), _
    MRange.Cells(MRange.Rows.Count, MRange.Columns.Count))

    '~~> Trap changes in the last row of the range
    If Not Intersect(Target, rng) Is Nothing Then
        'If Application.WorksheetFunction.CountA(rng) > 0 Then
            'Application.EnableEvents = False

            'rng.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        'End If
    End If

LetsContinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

代码由 Siddharth Rout 创建

于 2012-05-15T16:28:26.183 回答