wenn Buchstabe,Zeilen einblenden



Excel-Version: 8/9
nach unten

Betrifft: wenn Buchstabe,Zeilen einblenden
von: Michael E
Geschrieben am: 10.04.2002 - 17:04:01

Hi VBA-Spezis
habe folgendes mit dem Makrorekorder aufgezeichnet

Sub Makro3()

ActiveCell.Rows("1:1").EntireRow.Select
ActiveCell.Offset(0, -4).Range("A1").Activate
Selection.Insert Shift:=xlDown
Selection.RowHeight = 25.5
ActiveCell.Offset(0, 1).Range("A1:T1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Locked = False
Selection.FormulaHidden = False
ActiveCell.Offset(0, 19).Range("A1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
ActiveCell.Offset(1, -20).Range("A1").Select
Selection.Copy
ActiveCell.Offset(-1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
ActiveCell.Offset(1, 0).Range("A1").Activate
Selection.RowHeight = 0
End Sub

Das alles soll geschehen wenn in Spalte B15-45 ein Buchstabe eingetragen wird.

wenn in der neu erstellten Zeile eine Zahl eingetragen wird (Spalte B) soll wieder alles Rückgängig gemacht werden.

Wer kann helfen das Makro aufzuarbeiten?
Danke im voraus für eure Mühe.
Gruß Michael

nach oben   nach unten

Re: wenn Buchstabe,Zeilen einblenden
von: Benoit
Geschrieben am: 10.04.2002 - 18:15:51

Problem 1, für Bereich B15:B45

folgende Makro schreiben

sub Test
dim Zelle
dim ZelleInhalt

for each Zelle in selection.cells
ZelleInhalt = cells(Zelle.row, 2).value
if lcase(cstr(ZelleInhalt)) > "a" and lcase(cstr(ZelleInhalt)) < "z" then
Zelle.EntireRow.Hidden = True
end if
next
end sub

Dann Bereich B15:B45 selektiueren und Makro laufen lassen.
Nicht getestet, ohne Gewähr.

Problem 2:
Aktion, die ausgeführt werden sollen, bei Benutzer-Aktionen sind sogenannte Ereignis.

1. im Visual-Basic Editor, doppelklick im Projektfenster auf der Blatt, wo die Aktionen durchgeführt werden müssen,
2. in dem Fenster, das sich gerade geöffnet hat, oben links wo "(Allgemein)" steht, schaltet auf "Worksheet"
3. oben rechts kannst Du jetzt "Change" schalten. Es fügt sich eine
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
4. in diese Sub trägt
if target.column = 2 then
if LCase(cstr(Target.value)) > "a" and LCase(Cstr(Target.value)) < "z" then
activesheet.cells.hidden = false
end if
end if

Es soll wirken, dass wenn eine Zelle geändert wird, es getestet wird, ob es im Spalte B stattgefunden hat, und dann ob es sich um ein Buchstabe handelt.
Information über jede VBA-Funktion erhälst Du wenn Du den Cursor auf der Funktion setzt und F1 drückst. Am Anfang ist es schwer zu verstehen, aber man muss dran bleiben.

Viel Spass beim Probieren.

Benoit

nach oben   nach unten

Re: wenn Buchstabe,Zeilen einblenden
von: Michael E
Geschrieben am: 10.04.2002 - 18:28:26

Hi Benoit
Danke für deine schnelle Hilfe :-)
werde deinen Vorschlag sofort ausprobieren.
Wenn es geklappt hat lasse ich es dich wissen
Gruß
Michael

nach oben   nach unten

Bitte weiterhelfen: klappt nicht so wie ich es mir
von: Michael E
Geschrieben am: 10.04.2002 - 20:01:32


Namen--- KW---- kg/h
b-------c------ e----- f
a-------------- neu Zeile
a---- b15---- 125----
1---- b16---- 40----- 5732


Hi Benoit

Klappt leider nicht so wie ich wollte.
Das Makro Test klappt , aber es sollte beim Change Ereignis laufen,
das Makro Worksheet_Change(ByVal Target As Range) klappt nicht, es bricht bei ActiveSheet.Cells.Hidden = False ab

Was ich haben möchte: Teil 1
Wenn in Zelle B15 zB ein „a „ reinschreibe soll die Zeile 15 auf Zeilenhöhe 0 gesetzt werden ( es sind mehere Funktionen und Formel dahinter) und eine neue Zeile soll eingefügt werden (da sind ja keine Formeln drin und ich kann die Zeile normal beschreiben, weil die Zellen nicht geschützt sind) Der Buchstabe „a“ soll in die neue Zeile eingefügt werden.
Damit währe der erste Teil ok.
Teil 2
Wenn ich in die eingefügte Zeile eine Zahl schreibe soll die Zeile gelöscht werden und die Zeile die aud Zeilenhöhe 0 gesetzt wurde soll erscheinen

Hintergrund : Es werden Berechnungen durchgeführt , aber manchmal müssen Werte von Hand eingegeben werden, ( was bei den gesperrten Zellen ja nicht geht, und die Grundtabelle soll erhalten bleiben.)

Benoit kanst du oder ein andere mir weiterhelfen
Ich Danke im voraus für eure Mühe
Gruß Michael


nach oben   nach unten

Re: Bitte weiterhelfen: klappt nicht so wie ich es mir
von: Benoit
Geschrieben am: 11.04.2002 - 13:48:36

Vielleicht wärst Du glücklicher, mit einem Makros, das die Berechnung auf Abruf durchführt, statt durch durch Formeln die im Blatt eingeschrieben sind?

Probiere ev. folgende Element zu trennen: Ablagerung der Daten, Berechnung der Daten und Anzeige der Daten.
Diese Vorgehensweise ist eine Grundlage bei Datenbank. Man startet mit Excel wegen die Flexibilität, aber wenn es am Komplexität gewinnt, muss man
manchmal auf Datenbank umsteigen (Access)

nach oben   nach unten

Danke Benoit langsam klapp's
von: Michael E
Geschrieben am: 11.04.2002 - 20:41:07

Danke Benoit
habe immer eine Zeile eingefügt und ausgeblendet.
Habe Deine Formel ein bißchen umgeändert, und jetzt komme ich langsam dahin wo ich hinwollte.
Hier deine gänderte Formel:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Value >= "a" And Target.Value <= "z" Then
BlattschutzFalsch
Selection.EntireRow.Hidden = True
'activecell
ActiveCell.Offset(-1, 0).Select
Selection.EntireRow.Hidden = False
End If
End If
End Sub
jetzt muß ich noch den Buchstaben kopieren, dann habe ich den ersten Teil fertig.
Dann muß ich das ganze nur rückgängig machen.
Wenn du mir noch etwas gutes tun willst, dann sage mir wie ich in Spalte 2
nur jede Zelle ab Zeile 15 als Range nehmen kann.
Trotzdem schon mal Viiieeelen Dank
und noch einen schönen Tag oder Abend

Gruß Michael

nach oben   nach unten

Re: Danke Benoit langsam klapp's
von: Benoit
Geschrieben am: 12.04.2002 - 13:32:16

Range(Range("A15"),Range("A15").SpecialCells (xlCellTypeLastCell)).Select

Info über eine Befehl: Cursor drauf positionieren und F1 drücken

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "wenn Buchstabe,Zeilen einblenden "