Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro abbrechen, wenn ... NEU

Makro abbrechen, wenn ... NEU
WalterK
Hallo,
ich hatte mein Vorhaben eigentlich schon aufgegeben (hier mein 1. Versuch https://www.herber.de/forum/archiv/1216to1220/t1217358.htm), habe dann aber doch weiter gegoogelt und habe die Lösung schon fast erreicht.
Ich möchte erreichen, dass der Beispielcode "Sortieren" mit einer MSG-Box abgebrochen wird, wenn neben der aktuellen Arbeitsmappe noch andere Mappen oder Instanzen offen sind.
Inzwischen habe ich es geschafft, dass in einer MSG-Box die Instanzen und Mappen gezählt werden.
Folgende Änderungen/Ergänzungen sollte ich im Code noch haben:
1.) Bei der MSG-Box sollte im Bereich " & intCounter & " folgende Summierung erfolgen: " & Summe(ExcelInstanzen + intCounter - 1) & " d.h. zu der Zahl für intCounter soll die Zahl für ExcelInstanzen addiert und dann eine 1 subtrahiert werden.
2.) MSG-Box und Exit Sub soll nicht ausgeführt werden, wenn 1 Instanz und 1 Mappe offen ist.
Hier der Code:
Option Explicit
Sub Tabelleneusortieren()
Dim objWorkbook As Workbook, objWindow As Window
Dim intCounter As Integer
For Each objWorkbook In Application.Workbooks
For Each objWindow In objWorkbook.Windows
If objWindow.Visible Then
intCounter = intCounter + 1
Exit For
End If
Next
Next
MsgBox "Derzeit ist/sind " & ExcelInstanzen & " EXCEL - INSTANZ(EN) mit insgesamt " &  _
intCounter & " Arbeitsmappe(n) geöffnet. Es darf nur 1 Excel-Instanz mit 1 Arbeitsmappe offen sein!"
Exit Sub
'***Hier beginnt der Beispiel-Code zum sortieren der Tabelle.
'***Der SortierCode soll nur ausgeführt werden, wenn nur noch 1 ExcelInstanz und 1 Arbeitsmappe  _
offen ist.
Dim Lz As Long
Dim Ls As Long
Ls = Cells(2, Columns.Count).End(xlToLeft).Column
Lz = Range(Columns(1), Columns(Ls)).SpecialCells(xlCellTypeLastCell).Row
Range(Cells(3, 1), Cells(Lz, Ls)).Select
Application.Dialogs(xlDialogSort).Show , , , , , , , xlNo
End Sub
Function ExcelInstanzen() As Integer
Dim objWMI As Object
Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("select * from win32_process where  _
name='excel.exe' ")
ExcelInstanzen = objWMI.Count
End Function
Besten Dank für die Hilfe, Servus Walter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro abbrechen, wenn ... NEU
06.06.2011 22:55:44
Mustafa
Hallo Walter,
baue doch um die MsgBox noch eine If Abfrage drumrum ala :
If ExcelInstanzen > 1 or intCounter > 1 then
MsgBox "Derzeit ist/sind " & ExcelInstanzen & " EXCEL - INSTANZ(EN) mit insgesamt " &  _
intCounter & " Arbeitsmappe(n) geöffnet. Es darf nur 1 Excel-Instanz mit 1 Arbeitsmappe offen  _
sein!"
Exit Sub
End If
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.
AW: Makro abbrechen, wenn ... NEU
06.06.2011 23:25:41
WalterK
Hallo Mustafa,
ok, guter Tipp, funktioniert wie gewollt.
Hast Du für den 2. Punkt auch eine Lösung: In der MSG-Box möchte ich an der Stelle wo die Zahl für die Bezeichnung " & intCounter & " steht statt dessen eine Zahl haben, die wie folgt berechnet wird: Zahl für ExcelInstanzen + die Zahl für intCounter - die Zahl 1
Danke und Servus, Walter
Anzeige
AW: Makro abbrechen, wenn ... NEU
07.06.2011 00:13:19
Daniel
Hallo Walter
Hier mein Vorschlag. Über die Variable "Totalcounter" wird Deine Summe erstellt. Entsprechend habe ich Deine MSGBox Abfrage angepasst. Müsstest Du wieder abändern, falls Du es nicht so haben möchtest
Sub Tabelleneusortieren()
Dim objWorkbook As Workbook, objWindow As Window
Dim intCounter, Totalcounter As Integer
For Each objWorkbook In Application.Workbooks
For Each objWindow In objWorkbook.Windows
If objWindow.Visible Then
intCounter = intCounter + 1
Exit For
End If
Next
Next
Totalcounter = ExcelInstanzen + intCounter - 1
If Totalcounter > 1 Then
MsgBox "Derzeit ist/sind " & Totalcounter & " EXCEL - INSTANZ(EN) geöffnet. Es darf nur 1 Excel-Instanz offen sein!"
Exit Sub
End If
'***Hier beginnt der Beispiel-Code zum sortieren der Tabelle.
Grüsse aus der Schweiz
Dani
Anzeige
Ja, genau so ...
07.06.2011 07:09:17
WalterK
Hallo Dani,
... wollte ich es haben.
Besten Dank und Servus, Walter

88 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige