Ho questa macro (scritta in Excel 2016 / Windows)che funge da strumento di prenotazione molto semplice, controllando se una risorsa è attualmente prenotata o gratuita. A seconda di ciò, scrive quando termina il periodo prenotato o quando inizia il periodo prenotato successivo in un altro foglio di lavoro:
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
Funziona perfettamente in Office 2016 (Windows 10) ma genera un errore di compilazione: Funzione prevista o variabile quando provo a eseguirlo in Office 2011 per Mac o Office 2015 per Mac.
Qualcuno può indicarmi le giuste direzioni per quanto riguarda il motivo (i) per questo o dirmi come modificare il codice per farlo funzionare?
Grazie in anticipo! Jascha
risposte:
2 per risposta № 1La gestione degli errori in VBA Excel 2011 non è eccezionale come la controparte di Windows.
Stavi ricevendo quell'errore perché stavi usando With/End With
con ActiveCell.Offset(0, 1).Select
Il modo migliore per riprodurre questo errore è incollare questo codice in un modulo
Sub Schaltfläche1_Klicken()
With ActiveCell.Offset(0, 1).Select
End With
End Sub
Nota: Tu e io non abbiamo ricevuto quell'errore più tardi perché hai modificato il tuo post che entrambi abbiamo testato :)