Zellen Eingabe sperren VBA?

Ansicht  - (Microsoft, Excel, Programmierung)

4 Antworten

Ich geh mal davon aus, dass da keine böswilligen Hacker am Werk sind, sondern einfach unbedarfte User.

Da die Leute ja dann in der Zelle links daneben was eintragen sollen, würde ich das so lösen

  • Sub Worksheet_selectionchange(Byval Target as range)
  • if (not intersect(Target, columns(4).cells) is nothing) And  (Not intersect(Target, columns(6).cells) is nothing) then target.offset(0, -1).select
  • end sub.

Das lässt die angewählte Zelle nach links "abgleiten"

Die doppelte Verneinung (not...is nothing) verhindert Fehler, wenn zB ein Diagramm oder Zeichenobjekt ausgewählt wäre. Weiß nicht, ob das hier überhaupt auftreten könnte. Kürzer wäre:

if Target.column = 4 or Target.column = 6 then target.offset(0, -1).select

Da es passieren kann, dass ängstliche User beim Öffnen die Makros ausserkraft setzen, musst Du noch sicherstellen, dass Makros zugelassen sind. So kannst Du zB das Blatt oder die Formelspalten beim Workbook.close oder auch nur beim Verlassen des Blattes  verbergen und nur per Makro wieder zur Anzeige bringen (wie gesagt, ein halbwegs versierter User hebelt das ohne Mühe aus):

  • sub Workbook.close()
  • Sheets("...").Select
  • ActiveWindow.SelectedSheets.Visible = False
  • end sub


und

sub Workbook_open()
Sheets("anderesBlatt").Select 'ob das notwendig ist, hab ich nicht geprüft
Sheets("...").Visible = True
end sub

oder
Columns("D:D").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True

Dass es einmal hidden heißt und einmal visible: da kann ich nichts dafür...
Hab das übrigens per µ-Recorder aufgezeichnet, rate ich Dir ebenfalls.
kannst natürlich auch sperren/entsperren (.locked = true, locked = false) nehmen oder sonstwas.

Du kannst die Zellen schützen. Also entsperrst erstmal alle Zellen, die die Benutzer später bearbeiten dürfen (Zellen markieren, rechtsklick, auf "Zellen formatieren..." klicken, im neuen Fenster unter dem Registerblatt "Schutz" den Haken bei "gesperrt" rausnehmen), dann gehst du im Menü "Überprüfen" auf "Blatt schützen". Da kannst du einstellen, was alle Leute dürfen und kannst ein Kennwort eingeben, womit der Schutz wieder aufgehoben werden kann.

Das geht auch ohne VBA.

  • markiere alle Zellen im Arbeitsblatt
  • rechte Maustaste → Zellen formatieren
  • Schutz → () Gesperrt
  • Dann alle Zellen markieren, die gesperrt werden sollen und den Haken bei Gesperrt setzen.
  • Überprüfen → Blatt schützen

Wie ermittelt man in Excel (VBA) den Zelleninhalt bei verbundenen Zellen?

Ich durchlaufe in meinem Excel VBA-Script die Zellen einer Spalte, um den Zelleninhalt auszuwerten. Nun kann es passieren daß Zellen "verbunden" sind. In diesem Fall liefert mir das Script nur jeweils für die linke oberste Zelle der verbundenen Zellen den Wert zurück. In den anderen Zellen kommt Blank zurück. Ich würde in allen Zellen den gleichen Wert zurückerwarten?
Wie könnte man das bewerkstelligen?
Hardcopy/Beispiel: In den grünen Spalten steht was ich erwarten würde. In den gelben die tatsächliche VBA-Ausgabe.

Private Sub Worksheet_Activate()
  Dim iRow As Integer
  iRow = 4
  Do
    Worksheets("Test").Cells(iRow, 5) = Worksheets("Test").Cells(iRow, 1)
    Worksheets("Test").Cells(iRow, 7) = Worksheets("Test").Cells(iRow, 2)
    iRow = iRow + 1
    If iRow > Worksheets("Test").UsedRange.Rows.Count Then Exit Do
  Loop
End Sub
...zur Frage

Excel: Zellwert in andere Zelle übertragen, dann löschen

Wie kann ich den Inhalt einer Zelle an eine andere Zelle Übertragen?

Genauer möchte ich in bspw. Zelle A5 einen Wert eintragen, der dann zum Wert in Zelle addiert wird. Dann soll der Wert in Zelle A5 gelöscht werden und für die nächste Eingabe bereitstehen.

Ist wahrscheinlich ein VBA Problem und da ich in dieser Materie noch nicht so tief drinstecke seid nun ihr gefragt. Bitte um Hilfe

...zur Frage

vba Zellenverbinden?

Hallo zusammen,

ich habe jetzt eine ewigkeit im Internet nach einer Lösung für mein Problem gesucht, aber werde leider nicht fündig.

Ich wurde gerne wenn in Zelle I25 das Wort Für? steht, sich automatisch die Zellen K25:O25 verbinden, wenn ein anderes Wort dort steht, sollen die Zellen wieder getrennt sein.

Dafür habe ich folgendes gemacht:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("I25").Text = "Für?" Then

Range("K25:O25").connect

End If

End Sub

Aber leider funktioniert dies nicht, kann mir jemand weiterhelfen?

vielen dank :)

...zur Frage

VBA Makro Excel Letzte beschriebene Zeile vor Leerzeile, weitere Leerzeile einfügen

Guten Tag,

ich suche einen Code für ein Makro,dass in Spalte B unter der letzten beschriebenen Zelle vor einer leeren Zelle (also nicht am kompletten Ende des Sheets) eine Leerzeile einfügt. Habe schon etliche codes ausprobiert, zb

Sub letzte_Zeile()

'letzte benutzte Zelle in Spalte 2 finden DIM Ende As Long With ActiveSheet

Ende = .Cells(Rows.Count, 2).End(xlUp).Row End With

End Sub

Dieser sollte mir eig die letzte beschriebene Anzeigen,es funktioniert aber Garnichts.

Freue mich über Vorschläge. Viele Grüße

...zur Frage

Excel Zellen verschieben und Formeln auch?

Hallo Community,

Ich möchte in Excel von links nach rechts eine Summe berechnen, jetzt fallen allerdings von 10 horizontalen Zellen 2 weg. Sprich es wird die Zelle, in der die Summe berechnet werden soll um 2 Zellen nach links geschoben, die Formel ändert sich aber nicht und berechnet immer noch 10 statt 8 Zellen.

Wie ändere ich das?

...zur Frage

Excel-Problem: In einer Tabellenzelle entweder Eingabe oder Berechnung

Ich habe in einer Tabelle zur Umrechnung von Daten 2 Zellen, in denen ich eine Eingabe machen kann. Gebe ich in die Zelle 1 den Kilogramm-Wert ein, soll in der Zelle 2 das Ergebnis einer Umrechnung in Gramm erscheinen.

Gebe ich in die Zelle 2 einen Wert in Gramm ein, soll in der Zelle 1 das Ergebnis einer Umrechnung in Kilogramm erscheinen. (die Berechnungen sind in der Original-Tabelle natürlich etwas komplizierter, als hier die Umrechnung von Kilogramm in Gramm.) Das heißt, ich möchte in einer Zelle, in der eine Formel zur Berechnung eines Wertes steht, eine Eingabe machen. können, ohne dabei die Formel zu überschreiben, da sonst die nächste Eingabe nicht mehr funktioniert. Das Problematische dabei: Alles ohne Makros/VBA

...zur Frage

Was möchtest Du wissen?