有什么办法可以让我使用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]所述。
所以首先你需要知道如何将你的宏连接到按钮上。请看 这个 公文 这个 一个来自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中输入的值不会破坏你的代码:)
我不太明白你说的最后一部分关于行和列的意思。让我们看看你试过的方法,然后我们可以帮助你改进你的代码。
这是你所想的吗?这个函数必须安装在你有命令按钮的选项卡的代码表中。
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