Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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
Wenn best Spalten alle eingeblendet sind,dann...
08.05.2017 14:06:52
Nati
Hi Leute,
Falls Spalten h-p eingeblendet, sind dann soll messagebox erscheinen.
Mein Code:
 If ws4.Columns("H:P").Hidden = False Then
MsgBox "EN: More than 10 process steps not possible!" _
& Chr(13) & Chr(13) & "DE: Es können maximal 10 Prozessschritte erstellt werden!", vbOKOnly +   _
_
vbInformation, _
"Information"

Problem: wenn z.b Spalte o ausgeblendet ist, läuft der Code trotzdem...
Viele Grüße,
Nato

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn best Spalten alle eingeblendet sind,dann...
08.05.2017 14:39:21
Michael
Hallo!
Eine Möglichkeit:
Sub a()
Dim r As Range
Set r = Range("H1:P1")
On Error Resume Next
If r.SpecialCells(xlCellTypeVisible) Is Nothing Then
'...Code wenn Spalten H:P vollständig ausgeblendet sind
MsgBox "Passt, H:P ausgeblendet"
Else:
'...Code wenn eine oder mehrere Spalten H:P eingeblendet sind
MsgBox "Not more than... "
End If
End Sub
Passt?
LG
Michael
AW: Wenn best Spalten alle eingeblendet sind,dann...
08.05.2017 15:19:54
Nati
Hallo Michael,
vorerst vielen Dank für deinen Vorschlag!. Anbei der ganze Code..., denn leider kommt die msgbox... "Not more..." immernoch auch wenn nicht alle Spalten eingeblendet sind.
Public Sub AddingProcess()
Application.ScreenUpdating = False
Dim ws4 As Worksheet
Dim intLastC As Integer
Dim i As Integer
Set ws4 = ThisWorkbook.Worksheets("Calculation")
ActiveSheet.Unprotect
'wenn  Prozessschritt (Spalte) eingeblendet ist, dann blende die nächste ein, und zwar nur  _
diese
'Zähler Rückwärts
' Anfang: Spalte P, bis Spalte H
For i = 16 To 8 Step -1
'Blende zuerst die letzte Spalte hinter der letzt eingeblendeten ein
If ws4.Columns(i).Hidden = False Then
ws4.Columns(i + 1).Hidden = False
'wenn eine Spalte von P bis H ausgeblendet ist, dann blende diese ein
ElseIf ws4.Columns(i).Hidden = True Then ws4.Columns(i).Hidden = False
Exit For
End If
Next i
Dim r As Range
Set r = Range("H1:P1")
On Error Resume Next
If r.SpecialCells(xlCellTypeVisible) Is Nothing Then
'...Code wenn Spalten H:P vollständig ausgeblendet sind
MsgBox "Passt, H:P ausgeblendet"
Else:
'...Code wenn eine oder mehrere Spalten H:P eingeblendet sind
MsgBox "Not more than... "
End If
'If ws4.Columns("H:P").Hidden = False Then
'MsgBox "EN: More than 10 process steps not possible!" _
'& Chr(13) & Chr(13) & "DE: Es können maximal 10 Prozessschritte erstellt werden!", vbOKOnly +  _
vbInformation, _
'"Information"
'End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B5").Select
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Was soll denn genau passieren?
08.05.2017 15:37:00
Michael
Nati?
Das ist mir nämlich jetzt nicht mehr klar, wenn Du schreibst kommt die msgbox... "Not more..." immernoch auch wenn nicht alle Spalten eingeblendet sind.
Vielleicht kannst Du nochmal klar ausführen, WANN eine Msg-Box erscheinen soll, bezogen auf die Spalten im Bereich H:P. Aus meiner Sicht gibt's da drei Varianten:
a) Die Spalten H:P sind ALLE eingeblendet
b) Die Spalten H:P sind ALLE ausgeblendet
c) Eine oder mehrere Spalten in H:P sind ausgeblendet, die restlichen eingeblendet
Wann soll also die Msg-Box erscheinen, wann nicht?
Ich bin allerdings heute schon weg, kann erst morgen wieder antworten.
LG
Michael
Anzeige
AW: Was soll denn genau passieren?
09.05.2017 11:02:28
Nati
Hi Michael,
die Msgbox soll erscheinen, wenn ALLE SPalten von H:P eingeblendet sind. Denn wenn zb SPalte I ausgeblendet ist, bedeutet das, dass der User die Möglichkeit hat nochmal ein Prozess hinzufügen( in Form von Spalte einblenden und dann dort Daten eintragen kann).
Liebe Grüße,
Nati
AW: Also so...
09.05.2017 11:15:31
Michael
Hallo,
Sub a()
Dim r As Range: Set r = Range("H1:P1")
Dim c As Range, i&
For Each c In r
If c.EntireColumn.Hidden = False Then i = i + 1
Next c
If i = r.Cells.Count Then MsgBox "Not more than..."
Set r = Nothing: Set c = Nothing
End Sub
LG
Michael
Anzeige
AW: Also so...
09.05.2017 11:51:55
Nati
Hallo Michael,
danke dir!, der Code läuft. Mit dem Spalten einblenden, gibt es ein paar Anforderungen.
Wie bau ich dein Code am besten ein ?

Public Sub AddingProcess()
Application.ScreenUpdating = False
Dim ws4 As Worksheet
Dim intLastC As Integer
Dim i As Integer
Set ws4 = ThisWorkbook.Worksheets("Calculation")
ActiveSheet.Unprotect
'wenn  Prozessschritt (Spalte) eingeblendet ist, dann blende die nächste ein, und zwar nur  _
diese
'Zähler Rückwärts
' Anfang: Spalte P, bis Spalte H
'  For i = 16 To 8 Step -1
'  'Blende zuerst die letzte Spalte hinter der letzt eingeblendeten ein
'  If ws4.Columns(i).Hidden = False Then
'   ws4.Columns(i + 1).Hidden = False
'  'wenn eine Spalte von P bis H ausgeblendet ist, dann blende diese ein
'   ElseIf ws4.Columns(i).Hidden = True Then ws4.Columns(i).Hidden = False
'   Exit For
' End If
' Next i
Dim r As Range: Set r = Range("H1:P1")
Dim c As Range
For Each c In r
If c.EntireColumn.Hidden = False Then i = i + 1
Next c
If i = r.Cells.Count Then MsgBox "EN: More than 10 process steps not possible!" _
& Chr(13) & Chr(13) & "DE: Es können maximal 10 Prozessschritte erstellt werden!", vbOKOnly +  _
vbInformation, _
"Information"
Set r = Nothing: Set c = Nothing
'If ws4.Columns("P").Hidden = False Then
'MsgBox "EN: More than 10 process steps not possible!" _
'& Chr(13) & Chr(13) & "DE: Es können maximal 10 Prozessschritte erstellt werden!", vbOKOnly +  _
vbInformation, _
'"Information"
'Else: MsgBox "ok"
'End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B5").Select
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Schreibst Du manchmal Codes auch selbst...
09.05.2017 13:06:50
Michael
Nati,
...oder lässt Du Dir hier kontinuierlich Deine Projekte für lau erweitern/erstellen?
Sowas
Mit dem Spalten einblenden, gibt es ein paar Anforderungen. Wie bau ich dein Code am besten ein?
lapidar hinzuwerfen inkl. einem wirren Codeblock klingt für mich nach: "ICH brauch das JETZT, hab zwar selbst keine Lust mich damit zu beschäftigen, aber Du/Ihr habt die Ehre mich hiermit zu beliefern...".
Ich hab jetzt nicht wirklich Lust mich durch Dein Code-Exzerpt zu wühlen, und aus den kommentierten bzw. funktionalen Zeilen die von Dir erwähnten Anforderungen herauszulesen.
LG
Michael
Anzeige
AW: Schreibst Du manchmal Codes auch selbst...
09.05.2017 13:12:49
Nati
Hi Michael,
ich mach mich später mal dran. Wenn ich die Lösung hab, schreibe ich es hier rein.
LG Nati
AW: Ich würd's schon schreiben...
09.05.2017 13:20:15
Michael
Nati,
...wenn Du mir klar sagst, was Du mit den paar Anforderungen meinst. Mein Punkt war: Man kann es Helfern schwer oder leicht machen, und das hat dann unterschiedliche Wirkung ;-).
LG
Michael
AW: Ich würd's schon schreiben...
09.05.2017 13:47:32
Nati
Hi Michael,
ich habe hier die Datei ohne sensible Daten nochmal erstellt.Sorry, ich bin nicht so gut im ausdrücken :) Vielleicht ist es mit der Datei klarer.
Anforderung:
beim Einfügen von Spalten kommt keine Fehlermeldung, auch wenn gar keine Spalte eingefügt wird/werden kann (weil z.B. schon alle 10 möglichen belegt sind);
kann man da noch ne Fehlermeldung einfügen, wenn schon 10 Spalten drin sind
Problem derzeit: Fehlermeldung kommt immer beim einblenden von Spalten, auch wenn noch nicht alle Spalten eingeblendet sind und somit es noch möglich ist Spalten einzuügen(Prozesse hinzuzufügen)
https://www.herber.de/bbs/user/113444.xlsm
ICh muss dazu sagen, dass die remove funktion( Spalten ausblenden) derzeit noch nicht läuft, dh. man muss die Spalten manuell ausblenden, um die AddingProcess Funktion zu testen.
LG Nati
Anzeige
AW: Das macht's nicht wirklich einfacher...
09.05.2017 14:01:58
Michael
Nati,
...jetzt muss ich mich ja mit noch mehr Code und (!) einer Datei auseinandersetzen, die mir bisher völlig unbekannt ist. Ich hab aktuell die Zeit nicht, mich in Deine Datei einzuarbeiten - ich kann Dir schneller einen kompletten Code (neu)schreiben, wenn ich weiß was dieser machen soll. Aber das aus der Datei aufdröseln kann ich aktuell nicht leisten.
LG
Michael
AW: Das macht's nicht wirklich einfacher...
09.05.2017 14:15:11
Nati
Hi Michael,
nun gut, also ich hoffe ich kann mich klar genug ausdrücken. Habe einen Button, der mir Spalten einblendet von den Spalten H:P, ich habe auch einen Button, der Spalten ausblenden kann. Wenn z.B Spalte J ausgeblendet ist, und ich dann den Button zum einblendet betätige, wird die Spalte J eingeblendet,das ist auch richtig so. Sind nun alle Spalten eingeblendet von H:P und man betätigt den Button wird keine Spalte mehr eingeblendet, was richtig ist, bloß sollte dazu dann noch eine Meldung kommen: Not more.... Dass eben schon alle Spalten von H:P eingeblendet worden sind.
Anzeige
AW: Also...
09.05.2017 16:48:58
Michael
Nati,
...Du solltest saubereren Code schreiben, dann kannst Du selbst auch leichter nachverfolgen, was, wann und wo passiert und entsprechend anpassen. Das aber nur nebenbei.
Auf Basis Deiner Bsp-Datei verwende für die Sub "AddingProcess" folgenden Code, der sollte erledigen, was Du Dir vorstellst, das ist aus meiner Sicht:
- wenn noch nicht alle Spalten H:P eingeblendet sind, die jeweils "hinterste" Spalte einblenden
- die Msg-Box anzeigen, wenn bereits alle Spalten aus diesem Bereich eingeblendet sind
Sub AddingProcess()
Dim ws4 As Worksheet: Set ws4 = ThisWorkbook.Worksheets("Calculation")
Dim r As Range: Set r = ws4.Range("H1:P1")
Dim c As Range, i As Integer, j As Integer
With ws4
.Unprotect
For Each c In r
If c.EntireColumn.Hidden = False Then i = i + 1
Next c
If i = r.Cells.Count Then
MsgBox "Not more than..."
Else:
For j = r.Cells.Count To 1 Step -1
If r(j).EntireColumn.Hidden = True Then
r(j).EntireColumn.Hidden = False
Exit For
End If
Next j
End If
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
.Range("B5").Select
End With
End Sub
Deinen restlichen Code hab ich jetzt mal außer Acht gelassen.
LG
Michael
Anzeige
AW: Also...
10.05.2017 12:10:59
Nati
Hi Michael,
klappt wunderbar! Ich danke dir vielmals :).
Ja das mit dem sauberen Code stimmt, bin Anfängerin und werd besser drauf achten.
LG Nati
Freut mich! Danke für die Rückmeldung, owT
10.05.2017 13:44:57
Michael

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige