Typen unverträglichkeit

  • Excel

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von FormFollowsFunction.

    Typen unverträglichkeit

    Hey,

    Ich habe folgendes Problem: Ich kopiere aus einer Exceldatei ein Arbeitsblatt in eine andere und das jeden Monat. Die bezeichnung des Blattes ist jeden Monat gleich. Nun möchte ich einen Code schreiben das das Tabellenblatt wenn es noch vorhanden ist gelöscht wird bevor ich das neue einfüge. Bei meinem Ansatz stoße ich auf das Problem "Typen unverträglichkeit".

    Mein Ansatz sieht folgender maßen aus:

    Visual Basic-Quellcode

    1. If wksBlatt.Name = "Bewertung" Then
    2. wksBlatt.Delete
    3. If Not wksBlatt.Name = "Bewertung" Is Nothing Then
    4. End If


    Danke an alles Helfer :)

    Verschoben. Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Willkommen im Forum. :thumbup:
    Leg Dich bitte mal auf eine Programmiersprache fest: [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?

    benne schrieb:

    VB.NET-Quellcode

    1. If Not wksBlatt.Name = "Bewertung" Is Nothing Then
    Das ist absolute Grütze.
    Ein möglicher Vorschlag:

    VB.NET-Quellcode

    1. If wksBlatt.Name <> "Bewertung" Then
    Beschreib mal verbal, was Du da eigentlich testen willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Ja danke irgendwie kommt jetzt sofort ein neues Problem :o
    wie ihr bestimmt gemerkt habt bin ich nicht nur Neuling in dem Forum sondern auch Neuling im Programmieren :D
    Jetzt sagt er Laufzeitfehler 91 :o

    Visual Basic-Quellcode

    1. Sub start_transformation()
    2. Dim strPath As String
    3. Dim strFileSource As String
    4. Dim lngRowCount As Long
    5. Dim wksBlatt As Worksheet
    6. strPath = cmdFileDialog
    7. Debug.Print strPath
    8. If strPath = "" Then Exit Sub
    9. strFileSource = getFilename(strPath, True)
    10. Workbooks.Open Filename:=strPath
    11. Windows(strFileTransform).Activate
    12. Windows(strFileSource).Activate
    13. lngRowCount = getMaxRowCount(strTabName)
    14. If wksBlatt.Name = "Bewertung" Then
    15. wksBlatt.Delete
    16. End If
    17. If wksBlatt.Name <> "Bewertung" Then
    18. End If
    19. Sheets(strTabName).Copy Before:=Workbooks(strFileTransform).Sheets(1)
    20. Windows(strFileTransform).Activate
    21. Rows("1:6").Select
    22. Selection.Delete Shift:=xlUp
    23. Columns("AL:DC").Select
    24. Range(Selection, Selection.End(xlToRight)).Select
    25. Selection.Delete Shift:=xlToLeft
    26. Call AlteFormateLöschen("strFileSource")
    27. Call KopierenTargetStructure
    28. Call RichtigesFormat
    29. End Sub


    Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    RodFromGermany schrieb:

    Leg Dich bitte mal auf eine Programmiersprache fest: [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?

    Einfach mal ignoriert, toller Einstand ! :thumbsup:

    [Forum] Wie füge ich Quellcode korrekt im Forum ein?
    [Forum] Welche BBCodes (Tags) gibt es hier im Forum zum Einfärben von Quellcodes (Syntax-Highlighting)?
    ​ If wksBlatt.Name = "Bewertung" Then
    wksBlatt.Delete
    End If
    If wksBlatt.Name <> "Bewertung" Then
    End If


    Ich finde in deinem Code keine Stelle wo du sagst, welches Tabellenblatt er auf diesen Namen prüfen soll.

    Des weiteren scheint das ja nicht der vollständige Code zu sein, da du diverse Variablen verwendest, die weder deklariert noch einen Wert zu haben scheinen (strTabName, strFileTransform, ...). Das macht die Fehlersuche natürliche verdammt schwer für uns.
    Sorry ;( Der gesammte Code lautet:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Const strTabName = "Bewertung"
    3. Const strFileTransform = "Mappe1"
    4. Const strTarget_Structure = "Target_Structure"
    5. Function getMaxRowCount(strTName As String) As Long 'strSheet
    6. getMaxRowCount = Sheets(strTName).Cells.Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'strSheet
    7. End Function
    8. Function getFilename(strFullPath As String, Optional boolStripExt As Boolean) As String
    9. Dim intPos As Integer
    10. Dim i As Integer
    11. For i = 1 To Len(strFullPath)
    12. If Mid(strFullPath, i, 1) = "\" Then intPos = i
    13. Next
    14. getFilename = Mid(strFullPath, intPos + 1, Len(strFullPath) - intPos)
    15. If boolStripExt Then
    16. For i = Len(getFilename) To 1 Step -1
    17. If Mid(getFilename, i, 1) = "." Then
    18. getFilename = Mid(getFilename, 1, i - 1)
    19. Exit For
    20. End If
    21. Next
    22. End If
    23. End Function
    24. Sub TabellenBlattLöschen()
    25. Dim wksBlatt As Worksheet
    26. If wksBlatt.Name = "Bewertung" Then
    27. wksBlatt.Delete
    28. End If
    29. If wksBlatt.Name <> "Bewertung" Then
    30. End If
    31. End Sub
    32. Sub start_transformation()
    33. Dim strPath As String
    34. Dim strFileSource As String
    35. Dim lngRowCount As Long
    36. strPath = cmdFileDialog
    37. Debug.Print strPath
    38. If strPath = "" Then Exit Sub
    39. strFileSource = getFilename(strPath, True)
    40. Workbooks.Open Filename:=strPath
    41. Windows(strFileTransform).Activate
    42. Windows(strFileSource).Activate
    43. lngRowCount = getMaxRowCount(strTabName)
    44. Sheets(strTabName).Copy Before:=Workbooks(strFileTransform).Sheets(1)
    45. Windows(strFileTransform).Activate
    46. Rows("1:6").Select
    47. Selection.Delete Shift:=xlUp
    48. Columns("AL:DC").Select
    49. Range(Selection, Selection.End(xlToRight)).Select
    50. Selection.Delete Shift:=xlToLeft
    51. Call AlteFormateLöschen("strFileSource")
    52. Call KopierenTargetStructure
    53. Call RichtigesFormat
    54. End Sub
    55. Sub AlteFormateLöschen(strTab As String)
    56. Dim lngRowCount As Long
    57. Windows(strFileTransform).Activate
    58. Sheets(strTabName).Select
    59. Range("AL1:GI1").Select
    60. Range(Selection, Selection.End(xlToRight)).Select
    61. Range(Selection, Selection.End(xlDown)).Select
    62. Selection.ClearFormats
    63. Cells(getMaxRowCount(strTabName), "A").Offset(1, 0).Select
    64. Range(Selection, Selection.End(xlToRight)).Select
    65. Range(Selection, Selection.End(xlDown)).Select
    66. Selection.ClearFormats
    67. End Sub
    68. Sub KopierenTargetStructure()
    69. Sheets("Target_Structure").Select
    70. Range("A1:N2").Select
    71. Selection.Copy
    72. Sheets(strTabName).Select
    73. Range("AM1").Select
    74. ActiveSheet.Paste
    75. End Sub
    76. Sub RichtigesFormat()
    77. Range("AM1:AZ1").Select
    78. Application.CutCopyMode = False
    79. Selection.Cut
    80. Range("A1").Select
    81. ActiveSheet.Paste
    82. Range("A2").Select
    83. Range(Selection, Selection.End(xlToRight)).Select
    84. Range(Selection, Selection.End(xlDown)).Select
    85. Selection.Cut
    86. Range("P1").Select
    87. ActiveSheet.Paste
    88. Range("O1").Select
    89. Selection.ClearFormats
    90. End Sub


    zusätzlich:

    Visual Basic-Quellcode

    1. Function cmdFileDialog() As String
    2. Dim fDialog As Office.FileDialog
    3. Dim varFile As Variant
    4. Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    5. With fDialog
    6. .Title = "Datei auswählen"
    7. .Filters.Clear
    8. .Filters.Add "All Files", "*.*"
    9. If .Show = True Then
    10. cmdFileDialog = .SelectedItems(1)
    11. End If
    12. End With
    13. End Function


    Irgendwie verzweifel ich langsam ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „benne“ ()

    Und nun fehlt immer noch die Info, wo denn nun dein Code stehen bleibt. Ich weiß das Excel hier nicht immer Entwickler-freundlich ist und es einfach mal so eine entsprechende Fehlermeldung entgegen wirft ohne die Zeile im Code zu markieren. Du kommst da also nicht drumrum das ganze im Einzelschritt durchlaufen zu lassen.

    Edit: Übrigens fehlt im sub "start_transformation" immer noch der Bezug zum Arbeitsplatt. Du deklarierst zwar die variable "wksBlatt", weist diese aber keinem existierenden Blatt zu.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „AndPod“ ()

    Habe das jetzt nochmal abgeändert. Mein problem ist gerade einfach das ich ja ein Tabellenblatt "Bewertung" aus einer anderen Datei ziehen möchte. Bevor dies geschieht möchte ich überprüfen lassen ob ein Tabellenblatt "Bewertung" in der Zieldatei existiert also in strFileTransform soll geprüft werden ob "Bewertung" existiert und wenn ja soll dieses Blatt gelöscht werden.

    Ich hoffe diese beschreibung ist preziese genug :)
    Vielen Dank für eure Hilfe :)
    Du ignoriers schonwieder relevante Hinweise !
    Konzentriere dich doch bitte mal auf die Sache !

    AndPod schrieb:

    Und nun fehlt immer noch die Info, wo denn nun dein Code stehen bleibt. Ich weiß das Excel hier nicht immer Entwickler-freundlich ist und es einfach mal so eine entsprechende Fehlermeldung entgegen wirft ohne die Zeile im Code zu markieren. Du kommst da also nicht drumrum das ganze im Einzelschritt durchlaufen zu lassen.

    Edit: Übrigens fehlt im sub "start_transformation" immer noch der Bezug zum Arbeitsplatt. Du deklarierst zwar die variable "wksBlatt", weist diese aber keinem existierenden Blatt zu.


    PS: Eigentlich wollte ich mich hier ja raushalten, ich bin aber sehr schlecht im ignorieren.