簡體   English   中英

使用VBA將值分配給單元格

[英]Assign value to a cell using VBA

我正在嘗試將帶有字符串“ Senast”的單元格之后的單元格的值放入單元格Q2中。 下面的代碼不起作用。 有什么想法嗎?

Sub Find_Data()

    Dim item_in_review As Variant
    Dim row_number As Long

    For row_number = 1 To 1000 Step 1
        item_in_review = Sheets("Investor_Importerad data").Range("A" & row_number)
        If InStr(item_in_review, "Senast") Then
            row_number = row_number + 1
            Worksheets("Översikt innehavCells").Cells(2, "Q").Value = Worksheets("Investor_Importerad data").Cells(row_number, "A").Value
            Exit For
        End If

        If item_in_review = 300 Then
            MsgBox "300"
            Exit For
        End If
    Next row_number

End Sub

看來您正在尋找通配符匹配Senast或數字300作為真實數字。 以先到者為准,您退出For ... Next循環。

下面充滿了許多錯誤陷阱和准則條件,這些條件和條件可以隔離您的問題。

Sub Find_Data()

    Dim rSenast As Variant, r300 As Variant, wsn As String

    wsn = "Översikt innehavCells"
    Dim row_number As Long

    With Worksheets("Investor_Importerad data")
        rSenast = Application.Match("*senast*", .Range("a:a"), 0)
        r300 = Application.Match(300, .Range("a:a"), 0)
        If IsError(r300) Then _
            r300 = Application.Match(Format(300, "0"), .Range("a:a"), 0)

        Select Case True
            Case CBool(IsNumeric(rSenast) And IsNumeric(r300))
                If r300 < rSenast Then
                    If MsgBox("300 found before 'senast" & vbLf & "Continue with value transfer?", vbYesNo, "Continue?") <> vbYes Then _
                        Exit Sub
                End If
            Case CBool(IsError(rSenast) And IsError(r300))
                MsgBox "Neither 'senast' nor 300 can be found"
                Exit Sub
            Case CBool(IsError(rSenast) And IsNumeric(r300))
                MsgBox "300 can be found at row " & r300
                Exit Sub
        End Select

        On Error GoTo No_Such_Worksheet
        If .Cells(rSenast + 1, "A").Value <> vbNullString Then
            Worksheets(wsn).Cells(2, "Q") = .Cells(rSenast + 1, "A").Value
        Else
            MsgBox .Cells(rSenast + 1, "A").Address(0, 0) & " appears to be empty"
        End If
        On Error GoTo 0

    End With

    Exit Sub

No_Such_Worksheet:
    With Worksheets.Add(after:=Worksheets("Investor_Importerad data"))
        .Name = wsn
    End With
    Resume

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM