Microsoft Excel

Herbers Excel/VBA-Archiv

Aktionen der Fehlerprüfung per VBA auslösen?

Betrifft: Aktionen der Fehlerprüfung per VBA auslösen? von: Mirko
Geschrieben am: 19.09.2014 10:58:05

Hallo Forum,

nach dem ich hier schon sehr wertvolle Tipps und Anregungen bekommen habe, stellt sich mir nun eine Frage die ich nicht beantworten konnte.

Ich habe eine Tabelle mit zwei Datenblättern (sind eigentlich noch mehr, aber spielt bei dem Problem keine Rolle). In Tabelle2 sind Daten, in Tabelle1!E4:E8 ein paar Formeln die da was auswerten (Min, Max usw - nichts aufregendes).

Jetzt habe ich ein Makro, das ein neues Tabellenblatt erstellt, da auch Daten aus einem SQL Server reinschreibt, und in Tabelle1!F4:F9 die Formeln aus E kopiert. Es wird dann lediglich der Name der Zieltabelle in der Formel ausgelesen, und durch den Namen der neuen Tabelle ersetzt.
Funktioniert wunder, nun zur eigentlich Frage.
Da die Daten in Tabelle2 und Tabelle3 unterschiedlich viele Zeilen haben, meckert die Fehlerprüfung völlig zu recht das nicht alle angrenzenden Zellen eingeschlossen sind. Außerdem schlägt das Menü dem User vor, den Bereich zu erweitern. Die Frage ist, ob ich diese vorgeschlagene Aktion per VBA auslösen kann? Ist nämlich genau was ich brauche...

Alternativ kann ich das auch nach-programmieren, aber vielleicht gibt es ja eine elegantere Lösung.

Vielen Dank im Voraus und viele Grüße aus Hamburg,
Mirko

  

Betrifft: AW: Aktionen der Fehlerprüfung per VBA auslösen? von: fcs
Geschrieben am: 19.09.2014 13:18:50

Hallo Mirko,

ich würde die Formeln direkt vom Makro einfügen lassen, wobei der Blattname und die Nummer der letzten Zeile in den Formeln dynamisch angepasst werden.
Die VBA-Syntax der Formeln kannst du ja mit dem Makrorekorder aufzeichen.

Gruß
Franz

Sub TestMakro()
'
'
Dim wks As Worksheet, Zeile_L As Long
Dim wks1 As Worksheet, Spalte_L As Long, strFormel As String
  
  With ActiveWorkbook
    'neues Tabellenblatt einfügen
    .Worksheets.Add after:=.Sheets(.Sheets.Count)
    Set wks = ActiveSheet
    
    '... Code zum Einfügen der Daten
    '...
    
    'letzte Datenzeile ermitteln
    Zeile_L = wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1
  End With

' Formeln in Tabelle1 einfügen
  Set wks1 = ActiveWorkbook.Worksheets("Tabelle1")
  With wks1
    'nächste freie Spalte in Zeile 4
    Spalte_L = .Cells(4, .Columns.Count).End(xlToLeft).Column + 1
    
    strFormel = "=MAX('" & wks.Name & "'!R2C3:R" & Zeile_L & "C3)"
    .Cells(4, Spalte_L).FormulaR1C1 = strFormel
    
    strFormel = "=MIN('" & wks.Name & "'!R2C3:R" & Zeile_L & "C3)"
    .Cells(5, Spalte_L).FormulaR1C1 = strFormel
    
    strFormel = "=AVERAGE('" & wks.Name & "'!R2C3:R" & Zeile_L & "C3)"
    .Cells(6, Spalte_L).FormulaR1C1 = strFormel
    
    strFormel = "=SUM('" & wks.Name & "'!R2C3:R" & Zeile_L & "C3)"
    .Cells(7, Spalte_L).FormulaR1C1 = strFormel
    
    strFormel = "=SUM('" & wks.Name & "'!R2C4:R" & Zeile_L & "C4)"
    .Cells(8, Spalte_L).FormulaR1C1 = strFormel
    
    strFormel = "=SUM('" & wks.Name & "'!R2C6:R" & Zeile_L & "C6)"
    .Cells(9, Spalte_L).FormulaR1C1 = strFormel
  End With
End Sub



  

Betrifft: AW: Aktionen der Fehlerprüfung per VBA auslösen? von: Mirko
Geschrieben am: 19.09.2014 13:34:51

Hallo Franz,

die Formeln mit VBA zu erzeugen ist ein interessanter Ansatz, das habe ich nicht gemacht weil es eine "Master" Tabelle gibt die als Kopiervorlage dient. Der User soll die Möglichkeit haben hier eigene Formeln einzubauen (und Formate etc) die dann auch auf den Kopien erscheinen.
Aber ich denke mal drüber nach wie man das evt. geschickter machen kann!

Ich verstehe deine Antwort weiter so, das es wohl keine Möglichkeit gibt die vorgeschlagene Funktion dieses Fehlerobjekts auszuführen.

Dann mache ich das selber, ist halt mehr aufwendig als Kompliziert.

Vielen Dank für deine Mühen!

Gruß,
Mirko


 

Beiträge aus den Excel-Beispielen zum Thema "Aktionen der Fehlerprüfung per VBA auslösen?"