首页 > 解决方案 > 在运行宏之前单击的单元格旁边添加列

问题描述

我希望每个人都做得很好?我目前正在处理 Excel VBA 任务(我第一次使用 VBA,所以如果我问了一些愚蠢的问题,我很抱歉)。我正在研究近 2 天的一件事,但在任何地方都找不到解决方案,那就是如何通过 VBA 在 Excel 工作表中添加列。更准确地说:我不想在一个特定位置(例如“A:B”)添加列,而是单击一个单元格,运行宏,它将在该单元格旁边添加 77 列。例如,假设我单击单元格 B2 并运行宏,我希望从 C 列开始有 77 个空列。我也在研究“ActiveCell”,但没有得到任何结果。

我发现到目前为止最有用的宏是:

Sub C_SpaltenEinfügen()
Dim Start As Integer
Start = 2
Range(Cells(1, Start), Cells(1, Start + 77)).EntireColumn.Insert
End Sub

但我无法将它从 Start = 2 更改为 ActiveCell 或任何接近的值,因此它只会从 B 列开始。由于数据集非常大(目前从 A 列到 ARW),计算所有起点将不是很有效。

我真的很感谢你的时间和帮助!

非常感谢,莉亚

标签: excelvba

解决方案


请注意,如果要添加 77 行,则将当前添加到 76 行,因为第一行是初始插入。这可以通过双击第 1 行来实现:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row = 1 Then
        Range(Columns(Target.Column + 1), Columns(Target.Column + 1 + 76)).Insert
        Cancel = True
    End If
End Sub

您说如果您选择它,您希望它位于右侧,因此偏移.Column+1列以便您可以使用右侧的列,例如,您双击 B1 并在 C 列前面插入 77 列。为清楚起见,将 +1 留在范围的其余部分。

插入后的使用Cancel=True是这样您就不会输入您双击的单元格来开始编辑它。

请注意我在哪里选择BeforeDoubleClick...在为 选择工作表模块后Sheet1 (Sheet1),我使用下拉菜单,Worksheet在左侧选择,然后在右侧选择BeforeDoubleClick在此处输入图像描述


推荐阅读