如何让VBA代码始终获取活动单元格所在行I列的值并写入I6?
Excel VBA:联动学生学号与照片显示解决方案
需求
当点击或编辑I14:X43区域内的任意单元格时,自动将该单元格所在行的I列(学生学号列,范围I4:I43)的值写入I6单元格,以此联动学生照片显示。
现有代码问题
- 代码1:仅在点击I列单元格时有效,点击其他列单元格会将当前单元格值写入I6,无法获取对应行学号
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("I6").Value = ActiveCell.Value End Sub
- 代码2:仅支持到Z列,点击Z列之后的单元格时I6显示0,功能失效
Sub_ Selectionchange Dim x As String Dim y As String x = ActiveCell.Address(0, 0) y = WorksheetFunction.Replace(x, 1, 1, "=I") Range("I6").Value = y End Sub
适配所有列的解决方案代码
使用Worksheet_SelectionChange事件,通过目标单元格的行号直接定位对应行的I列单元格,无需依赖列地址字符串替换,适配任意列:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 定义目标监控区域 Dim monitorRange As Range Set monitorRange = Me.Range("I14:X43") ' 判断选中单元格是否在监控区域内 If Not Intersect(Target, monitorRange) Is Nothing Then ' 将对应行I列的学号写入I6 Me.Range("I6").Value = Me.Range("I" & Target.Row).Value End If End Sub
代码说明
monitorRange:指定需要监控的单元格区域(I14:X43)Intersect(Target, monitorRange):判断当前选中的单元格是否在监控区域内,避免误触发Target.Row:获取当前选中单元格的行号,直接定位该行的I列单元格(I" & Target.Row),确保无论点击哪一列都能拿到对应行的学号
内容的提问来源于stack exchange,提问作者Luis Lopes
相关产品推荐
相关产品推荐

