in Ihrer Linie
Set objsheet = bjExcel.ActiveWorkbook.Worksheets("Config_InputAllocation_Weekly")
Set objsheet2 = objExcel.ActiveWorkbook.Worksheets("Config_Project")
Sie versuchen, beide Blätter aktiv zu setzen, was nicht möglich ist. Es gibt nur ein aktives Blatt. Sie müssen sie jedoch nicht aktivieren. Verwenden Sie die folgende Technik:
Dim objExcel as Object
Set objExcel = CreateObject("Excel.Application")
Dim myWb as workbook, myws1 as worksheet, myWs2 as worksheet
Set myWb = objExcel.Workbooks.Open("C:\Users\ABC\Documents\NSL\Automation Macro\NSL_DM_Tracker.xlsm")
Set myWs1 = myWb.Worksheets("Config_InputAllocation_Weekly")
Set myWs2 = myWb.Worksheets("Config_Project")
Dann können Sie ganz einfach die Daten aus beiden Blätter nennen, ob sie aktiv sind oder nicht:
Msgbox myWs1.Cells(1,1).value
Msgbox myWs2.Cells(1,1).value
Dann das andere Problem ist, dass Sie einen Sub searchdata()
definiert haben, aber es wird nicht innerhalb Ihrer CommandButton1_Click()
Sub aufgerufen.
verwenden Darüber hinaus explizite Einstellung Option, das heißt, setzen Sie diese Zeile an der Spitze des Codes:
Option Explicit
Dies wird Ihnen helfen, Ihren Code zu debuggen. Last but not least, in Ihrem Sub searchdata()
sind keine Arbeitsblätter definiert. So wird es nicht wissen, welches (myWs1 oder myWs2) zu verwenden ist und wann.
Good Luck, Viktor
Sub search() Dim erow As String Dim ws As Worksheet Dim LastRow As String Dim LastRow = Sheets ("Config_InputAllocation_Weekly") As Integer zählen. Die Zellen (Zeilen .count, 1) .End (xlUp) .Row Wenn Sheets ("Config_InputAllocation_Weekly"). Zellen (x, 3) = Sheet1.Range ("B2") Dann Sheet1.Range ("A5") = Sheets ("Config_InputAllocation_Weekly"). Zellen (x, 3) Sheet1.Range ("B5") = Sheets ("Config_InputAllocation_Weekly"). Zellen (x, 7) Sheet1.Range ("C5") = Sheets ("Config_InputAllocation_Weekly"). Cells (x, 8) End If End Sub –
Kann mir jemand für dieses Problem helfen? –