AW: Tabelle mit Makro verschieben
09.08.2020 10:22:00
ralf_b
Wo ist das Problem?
deine Schilderung stimmt so nicht. Der Code nutzt einen Namen, welcher für die Intelligente Tabelle angelegt wurde. Darauf bezieht sich der Zellbereich. Wenn du eine Zeile oberhalb einfügst, dann ändert sich automatisch der zugeordnete Zellbreich in dem Namen. Sieht man im Namensmanager. Zumindest bei mir. Also wirkt sich das nicht auf deinen Code aus, da sich dort auf diese Tabelle mit dem Namen bezogen wird.
Dennoch habe ich dir eine Vereinfachung erstellt. Weil. Sobald du die richtige Zeile ermittelt und in der Variable LngRow gespeichert hast, reicht es aus auf die physikalischen Adressen mittels Cells(zeile, Spalte) des Tabellenblattes zu zugreifen. Damit wird der Code auch für dich lesbarer.
Sobald du eine Spalte vorne einfügst, geht es aber wieder in die Binsen. Weil die Spaltennummern fest im Code stehen. Wenn also mit intelligenten Tabellen gearbeitet werden soll, dann auch konsequent die Adressierungen anwenden.
Set objOutLook = CreateObject("outlook.application")
Set objFolder = objOutLook.Session.GetDefaultFolder(9)
If Not Tabelle1.ListObjects("_Termine").DataBodyRange Is Nothing Then
For Each objCell In Tabelle1.ListObjects("_Termine").DataBodyRange.Columns(1).Cells
If objCell "" Then
'lngRow = .DataBodyRange.Rows(objCell.Row - 2).Row
lngRow = objCell.Row
strDate = Format(Cells(lngRow, 4) + Cells(lngRow, 5), "dd.mm.yyyy hh:mm")
strSubject = Cells(lngRow, 2)
strBody = Cells(lngRow, 1) & vbLf & Cells(lngRow, 3)
strEntryID = Cells(lngRow, 7).Text
If strDate "" And strSubject "" Then
Set objCal = Nothing
For Each objItem In objFolder.Items
If objItem.EntryID = strEntryID Then
Set objCal = objItem
Exit For
End If
Next
If objCal Is Nothing Then Set objCal = objOutLook.CreateItem(1)
With objCal
.Start = strDate
.Duration = 30
.Subject = strSubject
.Body = strBody
.ReminderMinutesBeforeStart = 0
.ReminderPlaySound = True
.ReminderSet = True
.Save
strEntryID = .EntryID
End With
Cells(lngRow, 7) = strEntryID
Cells(lngRow, 6) = 1
End If
End If
Next
End If