Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

automatische Umwandlung der Eingabe einer Zahl in Text





Frage

Hallo zusammen, ich habe folgendes Problem. Die Monatsspalte einer Tabelle sollte wie folgt funktionieren: Bei Eingabe des Monats als Zahl soll Excel automatisch den entsprechenden Monat in Textform ausgeben. Gibst es für dieses Problem eine möglichst einfache Lösung? Danke im Voraus für die Hilfe. Gruss 10Deluxe

Antwort 1 von CaroS

Hallo 10Deluxe,

meinst Du folgendes: Du tippst in A1 "31.03.2006" ein, drückst Enter und in der Zelle steht "31. März 2006" oder "31. Mrz. 06" (alles ohne Anführungszeichen) ?

Dazu musst Du die Zelle(n) in dem gewünschten Datumsformat - Typ: 14. März 2001 oder 14. Mrz. 01 formatieren.

Gruß,
CaroS

Antwort 2 von fürLau

Hallo

Ich denke (ergo sum) eher :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Mid(Target.Address, 2, 1) <> "C" Then Exit Sub ´Anpassung der Spalte nötig(hier spalte C)
If Target.Value = "" Then Exit Sub
If Target.Value = "1" Then Target.Value = "Januar"
If Target.Value = "2" Then Target.Value = "Februar"
If Target.Value = "3" Then Target.Value = "März"
If Target.Value = "4" Then Target.Value = "April"
If Target.Value = "5" Then Target.Value = "Mai"
If Target.Value = "6" Then Target.Value = "Juni"
If Target.Value = "7" Then Target.Value = "Juli"
If Target.Value = "8" Then Target.Value = "August"
If Target.Value = "9" Then Target.Value = "September"
If Target.Value = "10" Then Target.Value = "Oktober"
If Target.Value = "11" Then Target.Value = "November"
If Target.Value = "12" Then Target.Value = "Dezember"
End Sub


Gruß

Antwort 3 von K.M.

Hallo 10Deluxe, hallo Spezies,

da bin ich wieder, diesmal sogar mit einem eigenen Beitrag. Hat leider ein paar Stunden länger gedauert als beim Lau über mir. Zur Erinnerung: ich lerne gerade VBA und wollte trotz Verspätung mal Eure Meinung hören.

Mein Code scheint zu funktionieren, aber das täuscht. Wenn man die Msgbox anmacht - vorletzte Zeile - und aus der Zwischenablage mehrere Zahlen (n) in die Datumsspalte - bei mir B - kopiert, dann sieht man an der Msgbox , dass die Prozedur genau (n+1)-mal durchläuft anstatt einmal. Beim ersten Mal ersetzt sie grundsätzlich gar nichts - warum? - und danach immer nur genau eine Zahl - wieso?

Ich will aber, dass sie von oben nach unten alles auf einmal macht und am Ende meldet, wie viele Ersetzungen es gewesen sind. Nur zum Test. Ebenso das If i > 30 Then Exit Sub beim Testen, reine Vorsichtsmaßnahme, wegen Endlosschleife scharf machen!

Könnten sich bitte mal ein paar Spezies meinen Code ansehen und mir sagen, was ich falsch gemacht habe? Oder was man dringend noch verbessern muss?

Danke im Voraus,
Klaus
- und hier noch der Code:

Private Sub Worksheet_Change(ByVal Target As Range)
    ´
    Dim i, j As Integer
    Dim monat, spalte As String
    
    spalte = "B" ´ Monatsspalte
    j = 0
    For i = 1 To ActiveWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    ´ If i > 30 Then Exit Sub
    j = j + 1
    monat = Range(spalte & CStr(i)).Value
    Select Case monat
        Case 1
          Range(spalte & CStr(i)).Value = "Januar"
        Case 2
          Range(spalte & CStr(i)).Value = "Februar"
        Case 3
          Range(spalte & CStr(i)).Value = "März"
        Case 4
          Range(spalte & CStr(i)).Value = "April"
        Case 5
          Range(spalte & CStr(i)).Value = "Mai"
        Case 6
          Range(spalte & CStr(i)).Value = "Juni"
        Case 7
          Range(spalte & CStr(i)).Value = "Juli"
        Case 8
          Range(spalte & CStr(i)).Value = "August"
        Case 9
          Range(spalte & CStr(i)).Value = "September"
        Case 10
          Range(spalte & CStr(i)).Value = "Oktober"
        Case 11
          Range(spalte & CStr(i)).Value = "November"
        Case 12
          Range(spalte & CStr(i)).Value = "Dezember"
        Case Else
          j = j - 1
    End Select
    Next i
    ´ MsgBox "Es wurde(n) " & CStr(j) & " Ersetzung(en) vorgenommen.", vbOKOnly, "Eingabe-Umwandlung beendet"
    
End Sub


Antwort 4 von ch_Kniephoff

Man nehme ein neues Blatt schreibe in der Erstel Zeile die Zahlen 1-12. in der zweiten Zeile die dazugehörigen Monatsnahmen. Dann geht man zurück, markiert das entsprechende Feld und gibt eine Auswahlliste an. Und diese liste ist die gerade erstellte. Nun kanst du die monatszahlen ruhig eingeben.Beim verlassen der Zelle wird der wert automatisch in den entschrechenden Monat geändert

Antwort 5 von K.M.

Hallo!

Meine erste Verbesserung ist schon mal gründlich in die Hose gegangen. Ich wollte
Range(spalte & CStr(i))
durch
zelle
ersetzen, aber VB meckert bei
zelle = Range(spalte & CStr(i))
über eine nicht festgelegte Objektvariable (Laufzeitfehler 91), obwohl ich alle meine Variablen deklariert habe. Da verstehe ich schon wieder was nicht.

Und so geht das eigentlich den ganzen Tag. Kann mir bitte jemand einen Hinweis geben, damit ich noch ein bisschen was dazulerne. Was ist mit der Objektvariablen, welche ist gemeint?

Danke, Klaus

Private Sub Worksheet_Change(ByVal Target As Range)
´
Dim i, j As Integer
Dim monat, spalte As String

spalte = "B" ´ Monatsspalte
j = 0
Dim zelle As Range
For i = 1 To ActiveWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If i > 20 Then Exit Sub
j = j + 1
zelle = Range(spalte & CStr(i))
monat = zelle.Value ´ Hier bleibt der Debugger hängen
Select Case monat
Case 1
zelle = "Januar"
Case 2
Range(spalte & CStr(i)).Value = "Februar"
´ März bis November genauso, deshalb gekürzt
Case 12
Range(spalte & CStr(i)).Value = "Dezember"
Case Else
j = j - 1
End Select
Next i
MsgBox "Es wurde(n) " & CStr(j) & " Ersetzung(en) vorgenommen.", vbOKOnly, "Eingabe-Umwandlung beendet"

End Sub