Zeile einfügen ohne Formelverschiebung?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Zeile einfügen ohne Formelverschiebung?
von: Silvio
Geschrieben am: 28.06.2002 - 19:00:19

Über eine User-Form realisiere ich die Aufnahme von Klientnamen
das funktioniert soweit ganz gut.
Jetzt mein Problem... Die Klientnamen sollen später von einem anderen Benutzer eingeben. Ich stelle somit nur die Vorlage...
Zusätzlich möchte ich aber vorher Formel in die Tabelle einbauen.
Die Formel werden aber ständig von Excel selbständig verändert nach einer Aufnahme eines Klienten...
Bsp. Ab der Zeile 7 kommt der neue Klientname rein über eine Userform (wenn diese Frei ist). Leider aktualisiert sich die Formel in einer anderen Zelle danach so... vorher =B7 nacher =B8
wie kann ich das verhindern. So das die Formel (die bereits vor dem Klientnamen) eingegeben wurde - sich nicht aktualisiert...
Mein Code: im Modul

' Die nachfolgenden Konstanten beziehen sich
' auf die Beispielanwendung
Const SpalteZeilennummer% = 2
Const SpalteKlientname% = 3
Const SpalteKlientvorname% = 4
Const SpalteKlientnummer% = 5
Const SpalteKlientversnummer% = 6
Const SpalteKlientplz% = 7
Const SpalteKlientort% = 8
Const SpalteKlientstrasse% = 9

Sub EintragSetzen(S As Worksheet, ByVal Klientname$, ByVal Klientvorname$, ByVal Klientnummer$, ByVal Klientversnummer$, ByVal Klientplz$, ByVal Klientort$, ByVal Klientstrasse$)
   
' Ab der 7. Zeile können Beträge eingegeben werden:
    Frei = 7
    
' Ein freies Plätzchen für den neuen Eintrag suchen
    Do Until IsEmpty(S.Cells(Frei, SpalteKlientname))
        Frei = Frei + 1
    Loop

' <<< Blattschutz aufheben...:
    S.Unprotect
    
    Dim As Range
    Set r = S.Cells(Frei, SpalteZeilennummer)
    
    If IsEmpty(r) Then
        r.EntireRow.Insert
        Set r = r.Offset(rowoffset:=-1, columnoffset:=0)
        r.Formula = "=ROW() - 7 + 1"
    End If
        
    Application.ScreenUpdating = False
        
' Value-Eigenschaft ist Standard-Eigenschaft
' eines Textfeldes und auch eines Range-Objektes
' Auslesen und Zuweisen der Werte fallen deshalb recht kurz aus:
    S.Cells(Frei, SpalteKlientname) = Klientname
    S.Cells(Frei, SpalteKlientvorname) = Klientvorname
    S.Cells(Frei, SpalteKlientnummer) = Klientnummer
    S.Cells(Frei, SpalteKlientversnummer) = Klientversnummer
    S.Cells(Frei, SpalteKlientplz) = Klientplz
    S.Cells(Frei, SpalteKlientort) = Klientort
    S.Cells(Frei, SpalteKlientstrasse) = Klientstrasse
        
'  >>> ... und Blattschutz wieder einschalten
    S.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Und der Code in der User Form sieht so aus:

~begin~
Private Sub cmdOk_Click()
' Einordnen der Eingabe in die genannte Stelle

Dim Frei%

EintragSetzen Worksheets(cmboListe.Text), Klientname:=txtKlientname, Klientvorname:=txtKlientvorname, _
Klientnummer:=txtKlientnummer, Klientversnummer:=txtKlientversnummer, _
Klientplz:=txtKlientplz, Klientort:=txtKlientort, _
Klientstrasse:=txtKlientstrasse

'Einträge für nächsten Eintrag löschen
txtKlientnummer = ""
txtKlientname = ""
txtKlientvorname = ""
txtKlientversnummer = ""
txtKlientplz = ""
txtKlientort = ""
txtKlientstrasse = ""

Application.ScreenUpdating = True

txtKlientnummer.SetFocus

Exit Sub
End Sub
~end~
Eventuell gibt es ja eine Lösung vielen Dank an alle Excel-Helfer!!!
Silvio

nach oben   nach unten

Re: Zeile einfügen ohne Formelverschiebung?
von: L.Vira
Geschrieben am: 29.06.2002 - 00:20:13

Füg doch am Ende der Prozedur einfach wieder die ursprüngliche Formel ein.

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Mit Excel97 auf eine mdb zugreifen"