繁体   English   中英

Excel VBA 从一个单元格中提取单元格地址,从另一个单元格中提取一个值,然后输入到另一个单元格中

[英]Excel VBA to pull a cell address from one cell, pull a value from another, and input into yet another cell

时间海报。 我正在运行 Excel 2010 并且我已经做了一些 VBA 的东西,但我仍然是一个新手,而且我真的一直在用这个轮子转动我的轮子。 所以...

我的工作表有这些单元格——这是它们的作用(这是假设的):

  • A1为空白; 稍后会输入一些内容。
  • B1 中会有一个单元格地址——假设地址是 B3。 这个地址将由excel公式根据我放入A1的内容(我能够做的那部分)生成。
  • C1 会有一些东西——让我们说“你好”这个词。

这是我需要一个宏来做的事情,只要我把它放进 A1 并点击返回:

  1. 从 B1 获取单元格地址
  2. 从 C1 中获取单词“hello”
  3. 把“你好”这个词放进B3
  4. 转到 A1 并擦除其内容,但保持单元格处于活动状态,然后结束

在此先感谢您提供的任何帮助!

您需要将它放在您希望它处理的特定工作表的代码中。 当我测试它时,它运行得非常快,你真的看不到 A1 包含任何东西。 如果你想看的话,我想你可以在那里等一下。 但是要将此代码放在左侧树上的工作表中(以防万一您不知道),您将看到 VBAProject("workbook name") > Microsoft Excel Objects > Sheet 1 ("worksheet name")

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ws As Worksheet
Dim keyCell As Range
Dim adr As String, str As String

Set ws = ActiveSheet
Set keyCell = ws.Range("A1")

If Not Application.Intersect(keyCell, Target) Is Nothing Then
    adr = ws.Range("B1")
    str = ws.Range("C1")

    ws.Range(adr) = str
    With ws.Range("A1")
        .ClearContents
        .Select
    End With
    End
End If

End Sub

希望这可以帮助!

好的,这就是我最终想出的,它奏效了......

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        c = Range("b1").Value
        i = Range("c1").Value
            If Target.Value = "" Then
                Exit Sub
            Else
                Range(c) = i
                Target.Select
                Selection.ClearContents
            End If
    End If
End Sub

我假设(还没有这样做)我可以将变量 c 和 i 嵌入到“else”下面的那一行中,但现在,我猜这更容易思考。 我不确定为什么这有效而其他人没有。 出于某种原因,我的宏似乎...间歇性的。

无论如何,再次感谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM