从其他工作表excel宏vba获取变量时出错

从其他工作表excel宏vba获取变量时出错,vba,excel,Vba,Excel,我是个新手。使用宏vba从其他图纸获取值时出现一些错误 这是我在宏vba中的代码: Sub inputDataInvestment() If ThisWorkbook.Sheets("ACTIVITY").Range("C5").Value = "FUNDING" Then Dim Baris, totalBaris As Long totalBaris = ThisWorkbook.Sheets("FUNDING HISTORY").Cells.Rows.Count Baris = Thi

我是个新手。使用宏vba从其他图纸获取值时出现一些错误

这是我在宏vba中的代码:

Sub inputDataInvestment()
If ThisWorkbook.Sheets("ACTIVITY").Range("C5").Value = "FUNDING" Then

Dim Baris, totalBaris As Long
totalBaris = ThisWorkbook.Sheets("FUNDING HISTORY").Cells.Rows.Count
Baris = ThisWorkbook.Sheets("FUNDING HISTORY").Cells(totalBaris, 2).End(xlUp).Row + 1

    ThisWorkbook.Sheets("FUNDING HISTORY").Range("A" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value
    ThisWorkbook.Sheets("FUNDING HISTORY").Range("B" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E12").Value
    ThisWorkbook.Sheets("FUNDING HISTORY").Range("C" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E13").Value

    MsgBox "Funding sudah masuk database"

ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value = ""
ThisWorkbook.Sheets("ACTIVITY").Range("E12").Value = ""

ElseIf ThisWorkbook.Sheets("ACTIVITY").Range("C5").Value = "INVESTING" Then

Dim Baris1, totalBaris1 As Long
totalBaris1 = ThisWorkbook.Sheets("INVESTING HISTORY").Cells.Rows.Count
Baris1 = ThisWorkbook.Sheets("INVESTING HISTORY").Cells(totalBaris1, 2).End(xlUp).Row + 1

    ThisWorkbook.Sheets("INVESTING HISTORY").Range("A" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value
    ThisWorkbook.Sheets("INVESTING HISTORY").Range("B" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E13").Value
    ThisWorkbook.Sheets("INVESTING HISTORY").Range("C" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E9").Value
    ThisWorkbook.Sheets("INVESTING HISTORY").Range("D" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E10").Value
    ThisWorkbook.Sheets("INVESTING HISTORY").Range("E" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E11").Value
    ThisWorkbook.Sheets("INVESTING HISTORY").Range("F" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E12").Value

    MsgBox "Investing sudah masuk database"

ThisWorkbook.Sheets("ACTIVITY")("E8").Value = ""
ThisWorkbook.Sheets("ACTIVITY")("E9").Value = ""
ThisWorkbook.Sheets("ACTIVITY")("E10").Value = ""
ThisWorkbook.Sheets("ACTIVITY")("E11").Value = ""
ThisWorkbook.Sheets("ACTIVITY")("E12").Value = ""

ElseIf ThisWorkbook.Sheets("ACTIVITY").Range("C5").Value = "RETURN OF INVESTMENT" Then

Dim Baris2, totalBaris2 As Long
totalBaris2 = ThisWorkbook.Sheets("RETURN OF INVESTMENT").Cells.Rows.Count
Baris2 = ThisWorkbook.Sheets("RETURN OF INVESTMENT").Cells(totalBaris2, 2).End(xlUp).Row + 1

    ThisWorkbook.Sheets("RETURN OF INVESTMENT").Range("A" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value
    ThisWorkbook.Sheets("RETURN OF INVESTMENT").Range("B" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E9").Value
    ThisWorkbook.Sheets("RETURN OF INVESTMENT").Range("D" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E12").Value

    MsgBox "Funding sudah masuk database"

ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value = ""
ThisWorkbook.Sheets("ACTIVITY").Range("E9").Value = ""
ThisWorkbook.Sheets("ACTIVITY").Range("E12").Value = ""

End If
End Sub
我得到一个错误:

我在这一行得到一条错误黄线:

    ThisWorkbook.Sheets("INVESTING HISTORY").Range("A" & Baris).Value = ThisWorkbook.Sheets("ACTIVITY").Range("E8").Value
我可以输入资金,但当我选择投资和投资回报时会出现错误

你能帮我拿这个吗?如果有人能帮助我,我真的很感激。
如果有人能缩短我的代码,那真是太好了。顺便说一句,谢谢。

只是在黑暗中拍摄,没有测试-将代码更改为以下内容:

Dim Baris as long, totalBaris As Long
Dim Baris1 as long, totalBaris1 As Long
Dim Baris2 as long, totalBaris2 As Long
然后再运行一次。如果你幸运的话,它可能会被修复

黑暗中拍摄第2号:
检查
ThisWorkbook.Sheets(“融资历史”).Range(“A”)和Baris.Value
是否受保护。如果是,则无法在此处写入值。

假设:在您的帖子(code)
Baris
中,
Baris1
Baris2
假设在其工作表的B列中找到第一个空行

因此,我使用以下语法查找第一个空行(在下面的示例中,它用于“融资历史记录”表):

为了简化并获得更清晰的代码,我将
用于此工作簿.Sheets(“活动”)
,而不是
If
s,我使用
选择Case.Range(“C5”).Value

注意:在您所附的屏幕截图中,第三页的名称是“投资回报”,而不是代码中的“投资回报”。因此,在我的代码中,我使用了“投资回报”


完整代码

Option Explicit

Sub inputDataInvestment()

Dim Baris As Long, totalBaris As Long
Dim Baris1 As Long, totalBaris1 As Long
Dim Baris2 As Long, totalBaris2 As Long

Dim FundHistorySht          As Worksheet
Dim InvestHistorySht        As Worksheet
Dim ROISht                  As Worksheet

Set FundHistorySht = ThisWorkbook.Sheets("FUNDING HISTORY")
Set InvestHistorySht = ThisWorkbook.Sheets("INVESTING HISTORY")
Set ROISht = ThisWorkbook.Sheets("RETURN OF INVESTING") ' << check here what is your sheet's name

With ThisWorkbook.Sheets("ACTIVITY")

    Select Case .Range("C5").Value
        Case "FUNDING"
            'totalBaris = FundHistorySht.Cells.Rows.count
            Baris = FundHistorySht.Cells(FundHistorySht.Rows.count, 2).End(xlUp).Row + 1

            FundHistorySht.Range("A" & Baris).Value = .Range("E8").Value
            FundHistorySht.Range("B" & Baris).Value = .Range("E12").Value
            FundHistorySht.Range("C" & Baris).Value = .Range("E13").Value

            MsgBox "Funding sudah masuk database"

            .Range("E8").Value = ""
            .Range("E12").Value = ""

        Case "INVESTING"
            'totalBaris1 = InvestHistorySht.Cells.Rows.count
            Baris1 = InvestHistorySht.Cells(InvestHistorySht.Rows.count, 2).End(xlUp).Row + 1

            InvestHistorySht.Range("A" & Baris1).Value = .Range("E8").Value
            InvestHistorySht.Range("B" & Baris1).Value = .Range("E13").Value
            InvestHistorySht.Range("C" & Baris1).Value = .Range("E9").Value
            InvestHistorySht.Range("D" & Baris1).Value = .Range("E10").Value
            InvestHistorySht.Range("E" & Baris1).Value = .Range("E11").Value
            InvestHistorySht.Range("F" & Baris1).Value = .Range("E12").Value

            MsgBox "Investing sudah masuk database"

            .Range("E8").Value = ""
            .Range("E9").Value = ""
            .Range("E10").Value = ""
            .Range("E11").Value = ""
            .Range("E12").Value = ""

        Case "RETURN OF INVESTING"  ' << check your sheet's name
            'totalBaris2 = ROISht.Cells.Rows.count
            Baris2 = ROISht.Cells(ROISht.Rows.count, 2).End(xlUp).Row + 1

            ROISht.Range("A" & Baris2).Value = .Range("E8").Value
            ROISht.Range("B" & Baris2).Value = .Range("E9").Value
            ROISht.Range("D" & Baris2).Value = .Range("E12").Value

            MsgBox "Funding sudah masuk database"

            .Range("E8").Value = ""
            .Range("E9").Value = ""
            .Range("E12").Value = ""

    End Select    
End With

End Sub
选项显式
子输入数据投资()
黯淡的巴里斯一样长,全然的巴里斯一样长
暗巴里1等长,全巴里1等长
暗巴里斯2等长,总巴里斯2等长
Dim FundHistorySht显示为工作表
Dim InvestorHistory SHT作为工作表
Dim ROISht作为工作表
Set-FundHistorySht=ThisWorkbook.Sheets(“资金历史记录”)
Set InvestHistorySht=ThisWorkbook.Sheets(“投资历史”)

Set ROISht=ThisWorkbook.Sheets(“投资回报”)'这里没什么可看的,我看不懂…你的工作表名称中有一个错误,你有
ThisWorkbook.Sheets(“投资回报”)
,但在你提供的屏幕截图中是“投资回报”-这也会导致另一个错误,如果假定B列的第一行是
Baris
,则应使用
Baris=thishworkbook.Sheets(“融资历史”).Cells(thishworkbook.Sheets(“融资历史”).Rows.Count,2)。End(xlUp)。row+1
这真是天方夜谭,下次您应该测试它。即使
Baris
未定义为
Long
,即使
Variant
它也适用于50000+(已测试)此代码非常干净整洁,非常感谢您的帮助,我从您的代码中学到了很多。但我还是在同一个地方犯了同样的错误。嘿,我找到了错误。这里是InvestHistorySht.Range(“A”)和Baris.Value=.Range(“E8”).Value。它应该是InvestHistorySht.Range(“A”)和Baris1.Value=.Range(“E8”).Value。非常感谢你们@Shai电台。gbu@PrasidhaDibya尝试编辑代码,在第三种情况下也修复了baris2
Option Explicit

Sub inputDataInvestment()

Dim Baris As Long, totalBaris As Long
Dim Baris1 As Long, totalBaris1 As Long
Dim Baris2 As Long, totalBaris2 As Long

Dim FundHistorySht          As Worksheet
Dim InvestHistorySht        As Worksheet
Dim ROISht                  As Worksheet

Set FundHistorySht = ThisWorkbook.Sheets("FUNDING HISTORY")
Set InvestHistorySht = ThisWorkbook.Sheets("INVESTING HISTORY")
Set ROISht = ThisWorkbook.Sheets("RETURN OF INVESTING") ' << check here what is your sheet's name

With ThisWorkbook.Sheets("ACTIVITY")

    Select Case .Range("C5").Value
        Case "FUNDING"
            'totalBaris = FundHistorySht.Cells.Rows.count
            Baris = FundHistorySht.Cells(FundHistorySht.Rows.count, 2).End(xlUp).Row + 1

            FundHistorySht.Range("A" & Baris).Value = .Range("E8").Value
            FundHistorySht.Range("B" & Baris).Value = .Range("E12").Value
            FundHistorySht.Range("C" & Baris).Value = .Range("E13").Value

            MsgBox "Funding sudah masuk database"

            .Range("E8").Value = ""
            .Range("E12").Value = ""

        Case "INVESTING"
            'totalBaris1 = InvestHistorySht.Cells.Rows.count
            Baris1 = InvestHistorySht.Cells(InvestHistorySht.Rows.count, 2).End(xlUp).Row + 1

            InvestHistorySht.Range("A" & Baris1).Value = .Range("E8").Value
            InvestHistorySht.Range("B" & Baris1).Value = .Range("E13").Value
            InvestHistorySht.Range("C" & Baris1).Value = .Range("E9").Value
            InvestHistorySht.Range("D" & Baris1).Value = .Range("E10").Value
            InvestHistorySht.Range("E" & Baris1).Value = .Range("E11").Value
            InvestHistorySht.Range("F" & Baris1).Value = .Range("E12").Value

            MsgBox "Investing sudah masuk database"

            .Range("E8").Value = ""
            .Range("E9").Value = ""
            .Range("E10").Value = ""
            .Range("E11").Value = ""
            .Range("E12").Value = ""

        Case "RETURN OF INVESTING"  ' << check your sheet's name
            'totalBaris2 = ROISht.Cells.Rows.count
            Baris2 = ROISht.Cells(ROISht.Rows.count, 2).End(xlUp).Row + 1

            ROISht.Range("A" & Baris2).Value = .Range("E8").Value
            ROISht.Range("B" & Baris2).Value = .Range("E9").Value
            ROISht.Range("D" & Baris2).Value = .Range("E12").Value

            MsgBox "Funding sudah masuk database"

            .Range("E8").Value = ""
            .Range("E9").Value = ""
            .Range("E12").Value = ""

    End Select    
End With

End Sub