none
Excel Code erzeugen mit Worksheet_Change Event (cell) RRS feed

  • Frage

  • Hallo!

    Ich bringe einen Quellcode im Excelfile unter (Modul) ... nur weiss ich
    nicht, warum das dann nicht anspricht ...

    Hier mein Quelltext (vb.net) - vielleicht kann mir jemand sagen, ob der
    Weg stimmt .... oder wie ich das bewerkstelligen kann.

    Vielen Dank!

    Michael

     

    Dim

    TabLGV As
    Microsoft.Office.Interop.Excel.Worksheet
    TabLGV = CType(xls_Mappe.Worksheets.Add(),
    Microsoft.Office.Interop.Excel.Worksheet)
    TabLGV.Name = "LGV-Daten"

    'CodeBlock einfgen

    '##################

    Dim oModule As VBComponent

    '' Create a new VBA code
    module.

    oModule =
    xls_Mappe.VBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule)

    Dim sCode As String = "Private Sub Worksheet_Change(ByVal
    Target As Range)"
    &
    Environment.NewLine

    sCode = sCode & "If Range(""I4"").Value = ""Sell""
    Then"
    & Environment.NewLine

    sCode = sCode & "MsgBox(Test)" & Environment.NewLine

    sCode = sCode & "End If" & Environment.NewLine

    sCode = sCode & "End Sub"

    ''Add the VBA macro to the new code
    module.

    oModule.CodeModule.AddFromString(sCode)

    Freitag, 19. Oktober 2012 05:54

Antworten

  • Hallo!

    Ich habe es gelöst!!

    Wen es jemanden interessiert ... hier der Code !!
    Ich häng das Event bei der Arbeitsmappe ein und steig dann aus der for-schleife aus.

    Gruß

    Michael

    '################## START

            

    Dim oModule As VBComponent           

    '' Create a new VBA code module.

    Dim sCode As String = "Private Sub Workbook_SheetCalculate(ByVal Sh As Object)" & Environment.NewLine

                sCode = sCode &

    "If Sh.Name = ""LGV-Daten"" Then" & Environment.NewLine

                sCode = sCode &

    "MsgBox(""nderung"")" & Environment.NewLine

                sCode = sCode &

    "End If" & Environment.NewLine

                sCode = sCode &

    "End Sub"

              

    For Each oModule In xls_Mappe.VBProject.VBComponents

                    oModule.CodeModule.AddFromString(sCode)             

    Exit For

               

    Next           

    '################## END

                oModule = xls_Mappe.VBProject.VBComponents.Add(1)

               

    • Als Antwort markiert Michael-s-19 Freitag, 19. Oktober 2012 07:03
    Freitag, 19. Oktober 2012 06:54