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
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
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
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)
Gruß Michael
Info über eine Befehl: Cursor drauf positionieren und F1 drücken