VBA(Excel)课程作业



我叫Johnny,刚在学校开始学习VBA课程。我接到了一项任务,我们应该在下周五再次讨论。TBH我是编程新手,有点困难,所以希望你能帮助我完成这项任务。

任务步骤1-10我已经完成:

一些任务示例:

  1. 创建"工作表A">
  2. 创建";工作表B">
  3. 在"上创建下拉列表;工作表A";包含3个选项("狗"、"猫"、"鱼"(
  4. 为"上的大小创建表;工作表A">
  5. 在单元格K8(=VLOOKUP(K5,A2:C11,2,(中的工作表A上创建公式
  6. 在";工作表A">
  7. 保护";工作表A">

到目前为止,这很容易,现在是我正在挣扎的棘手部分:

创建VBA宏并将其分配给"上的按钮;工作表A";宏应该:

  1. 从单元格K8中创建的公式中复制值
  2. 条件1:如果下拉列表显示";Dogs";,将该值粘贴到";工作表B";单元格B1
  3. 条件2:如果下拉列表显示";Cats";,将该值粘贴到";工作表B";单元格B2
  4. 条件3:如果下拉列表显示";Fish";,将该值粘贴到";工作表B";单元格B3

以下是我迄今为止在VBA编辑器中所写的内容:

@ChristoferWeber Ok now have this:

Sub ButtonA()
'
' ButtonA Macro
'
' Unprotect sheet
Dim cell As Range
Set cell = Worksheets("WorksheetA").Range("K15")
Worksheets("WorksheetA").Unprotect
If InStr(cell.Value, "Dog") Then Worksheets("WorksheetA").Range("K8").Copy Worksheets("WorksheetB").Range("B1")
ElseIf InStr(cell.Value, "Cat") Then Worksheets("WorksheetA").Range("K8").Copy Worksheets("WorksheetB").Range("B2").Value
ElseIf InStr(cell.Value, "Fish") Then Worksheets("WorksheetA").Range("K8").Copy Worksheets("WorksheetB").Range("B3").Value
End If
Application.CutCopyMode = False
Worksheets("WorksheetA").Protect

End Sub

当我试图通过点击按钮来执行代码时,整个过程都会弹出。

我通过谷歌搜索并将我找到的一些代码片段组合在一起,找到了上面的大部分内容。

我认为错了:

InStr(cell.Value, "Cat")

我还没有定义这个单元格在哪里。

希望你能帮我!非常感谢您抽出时间。

两个图像:

https://i.stack.imgur.com/9r6nH.jpghttps://i.stack.imgur.com/CU9Za.jpg

所以您不需要像我的第一个解决方案中那样的i变量。这将适用于组合框。现在你需要这样的东西:

Sub ButtonA()
Dim pet As String
Worksheets("WorksheetA").Unprotect
pet = Worksheets("WorksheetA").Range("K15").Value
Formula = Worksheets("WorksheetA").Range("K8").Value
If pet = "dog" Then
Worksheets("WorksheetB").Range("B1").Value = Formula
ElseIf pet = "Cat" Then
Worksheets("WorksheetB").Range("B2").Value = Formula
ElseIf pet = "Fish" Then
Worksheets("WorksheetB").Range("B3").Value = Formula
End If

Worksheets("WorksheetA").Protect

End Sub

您需要下拉列表索引,这是您将下拉列表链接到的单元格的值。在您的情况下,它应该是1到3之间的数字。

在我的示例中,它将是WorksheetA.Range("A3").value,将它分配给变量i,如i=WorksheetA.Range("A3").value下拉列表中列出的值在WorksheetA.Range("D3:D5")中要为索引找到合适的宠物,请选择列出的宠物的第一个单元格(在我的案例中为D3(,然后从那里移动。pet=Worksheet.Cells(3+i-1,4).Value

对于我的例子,你的宏看起来是这样的:

Sub ButtonA()
Dim i As Integer
Dim pet As String
Worksheets("WorksheetA").Unprotect
i = Worksheets("WorksheetA").Range("A3").Value
pet = Worksheets("WorksheetA").Cells(3 + i - 1, 4).Value
Formula = Worksheets("WorksheetA").Range("K8").Value
If pet = "dog" Then 
Worksheets("WorksheetB").Range("B1").Value = Formula
ElseIf pet = "Cat" Then 
Worksheets("WorksheetB").Range("B2").Value = Formula
ElseIf pet = "Fish" Then 
Worksheets("WorksheetB").Range("B3").Value = Formula
End If

Worksheets("WorksheetA").Protect

End Sub

我希望这有助于完成任务。

最新更新