Spaltenversatz
21.12.2024 02:18:02
Klaus B aus D
kann mir bitte Jemand erklären, warum es zu einem Spaltenversatz kommt, wenn ich Werte aus einer UserForm in ein Tabellenblatt eintragen möchte?
Erläuterung: "txt11" ist der Name des Formular-Textfeldes mit dem Label "NK 1.1".
Private Sub cmdPunkteUebertragen_Click()
' Alternative: Spaltenüberschriften verwenden
Dim wks As Worksheet
Dim rng As Range
Dim hl As String ' HeadLine
Dim nr As Variant
Set wks = Worksheets("Wertungspunkte")
' Ziel-Überschrift
hl = "NK 1.1" ' nur für einen Test
' Zeile mit der eingegebenen StartNr. bestimmen
Set rng = wks.Range("A2:A80").Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
If rng Is Nothing Then
MsgBox "Es wurde KEINE entsprechende Startnummer gefunden."
Exit Sub
End If
nr = Application.Match(hl, wks.Rows(1), 0) ' Überschriftenzeile durchsuchen ...
If Not IsNumeric(nr) Then
MsgBox "Spaltenüberschrift mit Suchtext nicht gefunden!", vbInformation
Exit Sub
Else
' ... und Ergebnis der Spaltennummer (numerischer Wert) ausgeben
'MsgBox "Für die StartNr. " & rng & " soll der Wert eingetragen werden."
MsgBox "Es wurde Spalte " & nr & " gefunden."
rng.Offset(0, nr - 1) = CLng(txt11) ' -1 ist erforderlich, um Spaltenversatz zu verhindern !?
End If
End Sub
Obwohl mir die Variable "nr" die richtige Spaltennummer (5) für die gesuchte Überschrift "NK 1.1" vorgibt, muss ich die Spaltennummer "nr" um 1 reduzieren, damit der Eintrag aus der UserForm1 im richtigen Tabellenfeld landet.
Wo ist mein Gedankenfehler in der "Offset" Funktion?
Gruß Klaus
Anzeige