Warum in VBA kommt die Fehlermeldung "Fehler beim Kompilieren: Sub oder Function nicht definiert"

2 Antworten

Breite und Anzahl sollen Arrays sein, orakel ich mal ins Blaue hinein...? Die werden garantiert auch unter VBasic NICHT mit runden Klammern ausgedrückt. Runde Klammern dienen in so ziemlich allen existierenden Programmiersprachen nur entweder zum Festlegen einer Vorrangregelung bei Operationen oder zum Definieren und Aufrufen von Funktionen.

Letzteres meint wohl der Interpreter bei Dir ebenfalls.

Das

Dim Kistenbreite (1 to 10) as Integer Worksheets"Tabelle1").Range("A1:A10").Value=Kistenbreite 

verursacht den Fehler.

Dim ist keine Konstantenzuweisung, daher kann beim Dim kein(e) Wert(e) eingetragen werden. Die Wertzuweisung muss nach dem Dim explizit Zelle für Zelle erfolgen.

excel, vba, schleife, do until

hallo, verwende folgende Formel um einen Wert aus einer tabelle mit einem aus einer anderen zu vergleichen. zähle dafür meine variable hoch, die anschließend in die berechnung eingefügt wird. ziel sollte es sein das der passende wert anschließend ausgespuckt wird. bei mir bleibt die zelle aber leer.

Sub spez_investkosten_berechen() Dim intInvest As Integer intInvest = 500 Do Until Worksheets("Hauptübersicht").Range("F4").Value = Worksheets("Eingabemaske").Range("B33").Value intInvest = intInvest + 1 Worksheets("Hauptübersicht").Range("F4").Value = intInvest Loop Worksheets("Eingabemaske").Range("L3").Value = intInvest End Sub

Viele Grüße

...zur Frage

VBA: Automatisch mehrere Tabellenblätter löschen?

Moin, ich möchte gerne mehrere Tabellenblätter löschen (Excel -> VBA). Das Problem dabei: Die Nummer des ersten und letzten zu löschenden Blattes soll abgefragt werden. Habe jetzt schon die eine oder andere Zeile "zusammengebastelt", allerdings läuft das Sub noch nicht so ganz rund. Kann mir da jemand weiterhelfen?? Bin mit VBA leider nicht so vertraut....

Sub Aufgabe 17()

Dim intWert1 As Integer
Dim intWert2 As Integer
Dim intWert3 As Integer

intWert1 = InputBox("Nummer des ersten zu löschenden Blattes?", "Tabellenblätter löschen", 0)
intWert2 = InputBox("Nummer des letzten zu löschenden Blattes?", "Tabellenblätter löschen", 0)

Application.DisplayAlerts = False

For intWert3 = intWert1 To intWert2
    intWert3 = "Tabelle" + intWert1
    Worksheets(intWert3).Delete
Next intWert3

Application.DisplayAlerts = True

End Sub

...zur Frage

EXCEL VBA MAKRO verbinden?

Hallo und guten Tag. Bräuchte mal eure Hilfe bei VBA Code Makro verbinden. Möchte beim eingeben von Daten in eine Tabelle diese vorher entsperren, und am Ende wieder vor neugierigen Blicken sperren. Jetz kriege ich den "Fehler END SUB erwartet" angezeigt. Hat hier vielleicht jemand einen Lösungsvorschlag für mich parat??? Danke und Gruß Emilian
 
 Sub cmdNew_Click() '  CommandButton1
    Dim lZeile As Long
     lZeile = 1
     Do While Trim(CStr(wsAt.Cells(lZeile, 1).Value)) <> ""
         lZeile = lZeile + 1
     Loop
      wsAt.Cells(lZeile, 1) = CStr("NR " & lZeile)
      wsAt.Cells(lZeile, 2) = CStr("NeuMtgld ")


     lstData.AddItem
     lstData.List(lstData.ListCount - 1, 1) = CStr("NR " & lZeile)
     lstData.ListIndex = lstData.ListCount - 1
        Call freigeben
        Sub freigeben()
        Dim i As Integer, Blatt As Worksheet
        Set Blatt = ActiveSheet
        Dim pw As String
        pw = InputBox("Bitte Kennwort eingeben", "wolli24", "KENNWORT eingeben")
        For i = 1 To ActiveWorkbook.Worksheets.Count
        ActiveWorkbook.Worksheets(i).Activate
        ActiveSheet.Unprotect Password:=pw
        Next i
        Blatt.Select
End Sub

...zur Frage

Nicht genügend Speicher Excel Fehler

Hallo wenn ich folgedes makro ausführ kommt die Fehlermeldung Microsoft Visual Basic for Applicati..... Nicht genügend Speicher. Woran liegt das ? Und wie bekomme ich es hin das die Bilder wie immer eingefügt werden.

Sub Makro11()
Dim Pfad As String
Dim Dateiname As String
Dim Komplettpfad As String
Dim intRow As Integer
Dim wert As String
For intRow = 12 To 550
    Pfad = ".........................................."
    Dateiname = Range("V" & intRow)
    Komplettpfad = Pfad & "\" & Dateiname & ".jpg"
    If Dir(Komplettpfad) <> "" Then
        Range("M" & intRow).Select
        If ActiveCell.Value <> "x" Then
               ActiveCell = "x"
               ActiveSheet.Pictures.Insert(Komplettpfad).Select
           End If
    End If
Next intRow
For Each objPic In ActiveSheet.Pictures
    'Alle Grafiken formatieren :
    With objPic.ShapeRange
        .LockAspectRatio = False
        'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
        .Height = Application.CentimetersToPoints(1.6)
        .Width = Application.CentimetersToPoints(1.2)
End With
Next
End Sub
...zur Frage

VBA - Neue Excel Datei erzeugen und diese mit Werten aus einer Collection füllen?

Hallo Leute,

ich habe in VBA eine Collection mit Member Objekten.

Nun habe ich mir eine Schleife gebaut, die durch alle Member Objekte durchläuft und eine neue Excel Datei erzeugt. Die Namen der jeweiligen Member Objekte sollen jetzt in die neue Excel Datei übertragen werden. Was mache ich falsch?

Dim member As auftrag
Dim number As Integer
number = 0
Set workbooks3 = Workbooks.Add
ActiveWindow.Caption = "Members"
Set sheet3 = workbooks3.Worksheets(1)




 For Each member In members




    If member.GetHours > 0 Then
    
  
      
    Cells(number, "A").Value = member.GetName
    number = number + 1



    End If
    
    
  
  
Next member
...zur Frage

Wie ermittelt man in Excel (VBA) den Zelleninhalt bei verbundenen Zellen?

Ich durchlaufe in meinem Excel VBA-Script die Zellen einer Spalte, um den Zelleninhalt auszuwerten. Nun kann es passieren daß Zellen "verbunden" sind. In diesem Fall liefert mir das Script nur jeweils für die linke oberste Zelle der verbundenen Zellen den Wert zurück. In den anderen Zellen kommt Blank zurück. Ich würde in allen Zellen den gleichen Wert zurückerwarten?
Wie könnte man das bewerkstelligen?
Hardcopy/Beispiel: In den grünen Spalten steht was ich erwarten würde. In den gelben die tatsächliche VBA-Ausgabe.

Private Sub Worksheet_Activate()
  Dim iRow As Integer
  iRow = 4
  Do
    Worksheets("Test").Cells(iRow, 5) = Worksheets("Test").Cells(iRow, 1)
    Worksheets("Test").Cells(iRow, 7) = Worksheets("Test").Cells(iRow, 2)
    iRow = iRow + 1
    If iRow > Worksheets("Test").UsedRange.Rows.Count Then Exit Do
  Loop
End Sub
...zur Frage

Was möchtest Du wissen?