1

我有一个 Excel 跟踪器,如果某项活动完成,我每个月都会在一个单元格中添加一个“X”。

此“X”与同一工作表上的一系列单元格相关。

当我单击命令框时,我想要;

  1. 如果一月份的单元格有“X”,则将当前页面上的特定单元格复制到另一个工作表上的特定单元格。
  2. 如果 2 月的单元格有“X”,则将当前页面上的一些其他特定单元格复制到另一个工作表上的其他一些特定单元格。

依此类推,一直持续到 12 月。

我有以下代码(不起作用):

Private Sub CommandButton1_Click()
Sheets("MRT").Select
If InStr(1, (Range("L8").Value), "X") > 0 Then
    Range("E42:AA42").Select
    Selection.Copy
    Sheets("Test '12").Select
    Cells(3, AP).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
End If
End Sub
4

1 回答 1

1

尝试这个:

Private Sub CommandButton1_Click()
 If Sheets("MRT").Range("L8").Value like "*X*" Then

   Sheets("MRT").Range("E42:AA42").Copy
   Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
 End If
End Sub

在我的测试中工作,但是您可能希望Cells(3,1)将其他位置说明符调整为您想要的目标。

编辑:忘记了几个月的部分......等一下......在这里:

Sub FindSignificant()
    Dim SearchString As String
    Dim SearchRange As Range, cl As Range
    Dim FirstFound As String
    Dim sh As Worksheet

    ' Set Search value
    SearchString = "a"
    Application.FindFormat.Clear
    ' loop through all sheets
        Set sh = Sheets("MRT")
        ' Find first instance on sheet
        Set cl = sh.Cells.Find(What:=SearchString, _
             After:=sh.Cells(1, 1), _
            LookIn:=xlFormulas, _
            LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False, _
            SearchFormat:=False)
        If Not cl Is Nothing Then
            ' if found, remember location
            FirstFound = cl.Address
            ' format found cell
            Do
                Select Case sh.Cells(cl.Row, 1).Value
                  Case "december"
                    sh.Range("E42:AA42").Copy
                    Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
                  Case "february"
                    sh.Range("E42:AA42").Copy
                    Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
                  Case Else
                    'do nothing
                End Select

                ' find next instance
                Set cl = sh.Cells.FindNext(After:=cl)
                ' repeat until back where we started
            Loop Until FirstFound = cl.Address
        End If
End Sub

这段代码来自这里

您将不得不调整选择案例,但如果没有必要,我真的会考虑在没有 VBA 的情况下解决这个问题;)

于 2012-09-14T07:27:07.247 回答