根据两个值更新单元格,以找到行和列以及对应的工作表。

问题描述 投票:0回答:1

有什么办法可以让我使用VBA执行以下操作。

'Input a Value INTO Cell = [P4]'
'in Worksheet Titled = [P3] '
'WHERE ROW = [M4] AND Column = [N4]'

基本上,当我点击一个按钮时,我想让[Cell:P4]中的公式被填充到另一个工作表中,基于该工作表的标题为[Cell:P3],并且只有在行和列中,行有一个数字,如[Cell:M4]所述,列有一个数字,如[Cell:N4]所述。

excel vba excel-vba macros
1个回答
0
投票

所以首先你需要知道如何将你的宏连接到按钮上。请看 这个 公文 这个 一个来自excelcampus.com.基本上,创建一个矩形或任何你想让你的按钮有的形式,然后右键单击该形式并单击 "分配宏..."。还有其他更复杂的方法,但这应该足够了。

那么现在关于宏本身,我将给你一些提示.你想把一个公式复制到另一个单元格中。VBA中的基本方法。

Sub copyFormula()
    Cells(1, 3).Formula = Cells(1, 2).Formula 'this will copy the formula in B1 to C1
End Sub

但我们想让这段代码更安全一些。让我们编写代码,识别工作簿和涉及的工作表。

Option Explicit

Sub copyFormula()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws_source As Worksheet
Dim ws_target As Worksheet

Set ws_source = wb.Worksheets("Sheet1") 'replace Sheet1 with name of your sheet
Set ws_target = wb.Worksheets("Sheet2") 'replace Sheet2 with name of your sheet

    ws_target.Cells(1, 3).Formula = ws_source.Cells(1, 2).Formula
End Sub

这时你需要担心公式中的引用(我现在说的是excel公式,不是VBA代码)。提示:尝试使用$符号来锁定单元格引用(不是这个方法的直接关注点),同时像这样引用你所指向的单元格的工作表。"=Sheet2!A1"

好了,现在让我们再修改一下代码。你想解决有一个变量名的工作表,即写在单元格P3(我假设是源工作表)中的名称。我们可以做到这一点.我们要做的就是读取P3的值,然后在目标工作表定义中用上述变量替换我们的静态 "Sheet2"。

Dim targetName As String
targetName = ws_source.Cells(3, "P").Value    
Set ws_target = wb.Worksheets(targetName)

试着在P3单元格中写入一个无效的名称,你就会明白为什么这是危险的业务,因为它是。我会让你采取预防措施,确保在P3中输入的值不会破坏你的代码:)

我不太明白你说的最后一部分关于行和列的意思。让我们看看你试过的方法,然后我们可以帮助你改进你的代码。


-1
投票

这是你所想的吗?这个函数必须安装在你有命令按钮的选项卡的代码表中。

Private Sub CommandButton1_Click()
    ' 027

    On Error Resume Next
    With Worksheets(Cells(3, "P").Value)
        .Cells(CLng(Cells(4, "M").Value), CLng(Cells(4, "N").Value)) _
              .Formula = Cells(4, "P").Formula
    End With
    If Err Then
        MsgBox "There is an error in the specs." & vbCr & _
               "Check the tab's name.", vbInformation, _
               "Execution suspended"
        Cells(3, "P").Select
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.