如何将用户名粘贴至单元格?及VBA跨表数据同步实现问题
解决你的Excel VBA需求问题
嘿,我来帮你搞定这两个问题:一是把用户名写入单元格,二是修正代码让文本框内容和用户名对应到同一行。
原代码的小问题
你原来的代码里分别对B列和C列找最后一行,这会出问题——如果B列和C列之前的 data 行数不一样,用户名就会跑到错误的行去。比如C列之前有更多数据的话,End(xlUp)(2,1)会指向C列的下一行,而不是和B列新增内容对应的那一行。
修正后的完整代码
我们可以先锁定B列的最后一行行号,然后同时给B、C列的该行赋值,这样就能保证两者在同一行啦:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim lastRow As Long With Sheet9 If KeyCode = 13 Then If TextBox1.Value <> vbNullString Then ' 获取Sheet9中B列最后一行的下一行行号 lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 ' 把文本框内容写入B列的新行 .Cells(lastRow, "B").Value = TextBox1.Value ' 把当前用户名写入同一行的C列 .Cells(lastRow, "C").Value = Environ("username") ' 可选:清空文本框,方便下次输入 TextBox1.Value = "" End If End If End With End Sub
关键细节说明
- 关于用户名粘贴到单元格:
Environ("username")可以直接获取当前Windows登录的用户名,你在VBA里直接把它赋值给单元格就完成了写入;如果是手动操作的话,在单元格输入=ENVIRON("username")回车得到用户名,再复制粘贴值到目标位置就行。 - 用
lastRow变量统一行号是核心:这样不管B、C列之前的数据行数是否一致,新增的内容和用户名都会在同一行,完美解决你之前的行不对应问题。 - 加了清空文本框的逻辑(可选),输入完按回车后文本框自动清空,操作起来更顺手。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

