Vba 空时取消合并合并单元格
我试图正确地编写代码,但在某一点上失败了:我有一个excel工作表,根据顶部单元格中写入的值将单元格与下面的单元格合并,但当从合并单元格中删除值时,我希望单元格取消合并。 我尝试与sub合作以保持代码整洁(不知道正确的规则,但我尝试):Vba 空时取消合并合并单元格,vba,excel,Vba,Excel,我试图正确地编写代码,但在某一点上失败了:我有一个excel工作表,根据顶部单元格中写入的值将单元格与下面的单元格合并,但当从合并单元格中删除值时,我希望单元格取消合并。 我尝试与sub合作以保持代码整洁(不知道正确的规则,但我尝试): 对代码进行一些小的调整,这似乎对我有效 只要工作表上有更改,就会触发工作表\u Change事件。根据已更改单元格的值,它将运行unMerge或mergeCell子例程 Public Sub Worksheet_Change(ByVal Target As Ra
对代码进行一些小的调整,这似乎对我有效 只要工作表上有更改,就会触发
工作表\u Change
事件。根据已更改单元格的值,它将运行unMerge
或mergeCell
子例程
Public Sub Worksheet_Change(ByVal Target As Range)
'Use the target.cells(1) since a merged cell.'
If Target.Cells(1).Value = vbNullString Then
Call unMergeCell(Target)
Else
If Target.Value = VV Then Call MergeCell(Target)
End If
End Sub
Sub unMergeCell(m As Range)
m.Resize(1, 1).UnMerge
m.Borders(xlInsideHorizontal).LineStyle = XlLineStyle.xlContinuous
End Sub
Sub MergeCell(n As Range)
n.Resize(2).Merge 'merge cells
n.VerticalAlignment = xlCenter 'center text
n.HorizontalAlignment = xlCenter 'center text
End Sub
更新#1
如果您有多个工作表,则可以将上述代码放在标准代码模块中,并将其从子工作表\u Change(…
重命名为子工作表(目标范围)
然后,在每个工作表的代码模块中,您仍然需要为每个工作表设置一个Change
事件宏,如下所示:
Sub Worksheet_Change(ByVal Target as Range)
LetItMerge Target
End Sub
现在,每个工作表上的
\u Change
事件将触发此LetItMerge
例程,该例程确定要执行的未合并
或合并单元格
子例程。括号中的变量可能应该是范围
变量,而不是对象
变量。您可能将未合并代码添加到工作表\u Change
事件。当我想更改边框时,是否需要“对象”呢?我有12张工作表(每个月一张)因此,我认为将其放在模块中更有效?目标
是一个范围
变量,可能应该以这种方式传递,而不是作为对象
,即使后者不会立即导致任何错误。您仍然需要在每个工作表上使用工作表更改
事件宏。我将在下面修改我的答案w来回答这个问题!谢谢你-这些调整是我无法解决的问题。
Sub Worksheet_Change(ByVal Target as Range)
LetItMerge Target
End Sub