Ich habe dieses Makro (in Excel 2016 / Windows geschrieben)Das ist ein sehr einfaches Reservierungswerkzeug, das prüft, ob ein Asset momentan gebucht oder kostenlos ist. Abhängig davon schreibt es entweder, wann der gebuchte Zeitraum endet oder wann der nächste gebuchte Zeitraum in einem anderen Arbeitsblatt beginnt:
Sub Schaltfläche1_Klicken()
Worksheets("Tabelle10").Activate
With Columns(4)
.Find(what:="*", after:=.Cells(1, 1), LookIn:=xlValues).Activate
End With
ActiveCell.Offset(0, -3).Select
If Selection.Value = "TODAY AM" Then
Sheets("HTML Output").Range("B3").Value = "Desk booked from this afternoon. Next availability"
ActiveCell.Offset(0, 3).Select
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Select
ActiveCell.Offset(0, -2).Select
Selection.Copy
Sheets("HTML Output").Range("C3").PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Select
Selection.Copy
Sheets("HTML Output").Range("D3").PasteSpecial xlPasteValues
ElseIf Selection.Value = "TODAY PM" Then
Sheets("HTML Output").Range("B3").Value = "Desk booked from this afternoon. Next availability"
ActiveCell.Offset(0, 3).Select
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Select
ActiveCell.Offset(0, -2).Select
Selection.Copy
Sheets("HTML Output").Range("C3").PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Select
Selection.Copy
Sheets("HTML Output").Range("D3").PasteSpecial xlPasteValues
ElseIf Selection.Value = "TOMORROW AM" Or Selection.Value = "TOMORROW PM" Or Selection.Value = "FUTURE" Then
Sheets("HTML Output").Range("B3").Value = "Desk free until (including)"
ActiveCell.Offset(-1, 1).Select
Selection.Copy
Sheets("HTML Output").Range("C3").PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Select
Selection.Copy
Sheets("HTML Output").Range("D3").PasteSpecial xlPasteValues
End If
End Sub
Dies funktioniert in Office 2016 (Windows 10) einwandfrei, führt jedoch zu einem Kompilierungsfehler: Erwartete Funktion oder Variable, wenn ich versuche, sie in Office 2011 für Mac oder Office 2015 für Mac auszuführen.
Kann mir jemand in die richtige Richtung weisen, oder gibt mir an, wie ich den Code ändern kann, damit er funktioniert?
Danke im Voraus! Jascha
Antworten:
2 für die Antwort № 1Die Fehlerbehandlung in VBA Excel 2011 ist nicht so gut wie das von "Window".
Sie haben diese Fehlermeldung erhalten, weil Sie verwendet haben With/End With
mit ActiveCell.Offset(0, 1).Select
Diesen Fehler können Sie am besten reproduzieren, indem Sie diesen Code in ein Modul einfügen
Sub Schaltfläche1_Klicken()
With ActiveCell.Offset(0, 1).Select
End With
End Sub
Hinweis: Sie und ich haben diese Fehlermeldung später nicht erhalten, weil Sie Ihren Beitrag geändert haben, den wir beide getestet haben :)