从其他表中获取variables的错误excelmacrosvba

我是新来的excel。 我有一些错误问题从其他工作表使用macrosvba获取值。

这是我的床单

这是我在macrosvba中的代码:

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 

我可以投入资金,但是我select投资和投资回报时会出错。

你能帮我这个吗? 如果有人能帮助我,我真的很感激。 如果有人能够缩短我的代码,那真是令人愉快。 谢谢btw。

假设 :在你的post(代码) BarisBaris1Baris2假设在他们的表格的B列中find第一个空行。

因此,我使用以下语法来查找第一个空行(在下面的示例中为“FUNDING HISTORY”表单):

 ' Set the "FUNDING HISTORY" sheet Set FundHistorySht = ThisWorkbook.Sheets("FUNDING HISTORY") ' find first empty row at the end of column B (skip empty rows in the middle) Baris = FundHistorySht.Cells(FundHistorySht.Rows.count, 2).End(xlUp).Row + 1 

为了简化和更清晰的代码,我用With ThisWorkbook.Sheets("ACTIVITY") ,而不是If我有Select Case .Range("C5").Value

注意 :在附上的屏幕截图中,第三张表的名称是“ RETURN OF INVESTING ”,而不是“RETURN OF INVESTMENT”,就像您在代码中所做的那样。 所以在我的代码中,我使用了“投资回报 ”。


完整的代码

 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 

只需在黑暗中拍摄,无需testing – 将您的代码更改为以下内容:

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

然后再运行一次。 如果幸运的话,它可能是固定的。

在黑暗中拍摄数字2:检查ThisWorkbook.Sheets("FUNDING HISTORY").Range("A" & Baris).Value是否受保护。 如果是这样,你不能在那里写数值。