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
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 :
Gruß
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:
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
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
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
Ich möchte kostenlos eine Frage an die Mitglieder stellen:
Ähnliche Themen:
- umsetzung zahl in text ?
- kann man in einem phpchat die automatische scrollfunktion durch einen befehl in der eingabe zeile abschalten und wenn ja wie heißt der befehl
- Nach Eingabe einer Zahl - automatischer Hyperlink mit dieser Zahl
- Erstellen von Tabellen nach einer Eingabe
- Umwandeln einer Zahl in einen Text