hummel85
Goto Top

Alles Großbuchstaben schreiben durch eine Formel

Hi,

ich sitze hier echt vor einem Problem. Ich muss alle Zellen in der Spalte B und D mit Großbuchstaben versehen. Also momentan ist es Mal groß mal klein mal gemischt. Aber alle Buchstaben in den beiden Spalten sollen groß sein. Ich habe auch schon eine Formel gefunden =groß(b1), aber diese Funktioniert irgendwie nicht. Ich glaube auch das das ganze über ein Makro schneller und einfacher Geht oder liege ich da falsch und es geht gar nicht über ein Makro? Könnt ihr mir mal sagen was ich machen soll und wie ich es machen soll.

Ps. Die Tabelle besteht aus 5 Spalten( B und D muss ich bearbeiten) und ca 5000 Zeilen. Das währen dann knapp 10000 Zellen die ich bearbeiten muss.

Danke

Gruß Hummel

Content-ID: 43573

Url: https://administrator.de/contentid/43573

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

bastla
bastla 02.11.2006 um 15:20:51 Uhr
Goto Top
Hallo Hummel85!

Grundsätzlich müssten GROSS(B1) - nur Großbuchstaben - oder GROSS2(B1) - nur Anfangsbuchstaben groß - funktionieren.

Vorgangsweise:
In freier Spalte F die Formel eintragen und nach unten ausfüllen, alle 5000 Zellen mit neuer Schreibweise in Zwischenablage kopieren, ursprüngliche 5000 Einträge (in Spalte B) markieren, Bearbeiten / Inhalte einfügen... / Werte wählen, um die alten Einträge durch die neuen zu ersetzen, mit Esc Kopiervorgang abbrechen, überflüssige Spalte F (mit den Formeln) entsorgen; für Spalte D natürlich analog.

Sollten die Funktionen tatsächlich Probleme machen (dann bitte genau anführen, welcher Art bzw wie das Ergebnis genau aussehen sollte), kann man immer noch auf VBA ausweichen.

HTH
bastla
wakko
wakko 02.11.2006 um 15:23:18 Uhr
Goto Top
Moin,
die korrekte Schreibweise der Formel ist GROSS, sollte dann funktionieren.
Als Makro sieht das so aus:
sub machgross()
Dim i%
For i = 2 To 5000
    Sheets(1).Range("B" & i) = ucase(Sheets(1).range("A" & i).value)  
Next
End Sub
Schreibt den Wert aus Spalte A grossgeschrieben in Spalte B
MfG
Hummel85
Hummel85 02.11.2006 um 15:29:31 Uhr
Goto Top
Vielen dank. Das mit der Formel hat funktioniert. Wer lesen kann ist klar im Vorteil ich muss nur =gross schreiben und nicht =groß dann funktioniert das auch. Aber der Tipp mit dem Inhalt Einfügen hat mir auch noch gefehlt. Danke noch mal für die schnelle antwort das spart mir SEHR viel zeit.

Gruß Hummel
Hummel85
Hummel85 02.11.2006 um 15:34:27 Uhr
Goto Top
Ich habe das Problem jetzt auf einer anderen weise gelöst aber danke auch für deine Antwort.
8644
8644 02.11.2006 um 15:42:08 Uhr
Goto Top
Hi,

auch wenn's schon gelöst ist, es gibt auch eine Variante, mit der man sich den Kopieren-Einfügen-Schritt sparen kann:

Sub machgross()
   Dim mcell As Range
    For Each mcell In Range("B1:D1000").Cells  
     mcell = UCase(mcell)
   Next mcell
End Sub

Psycho
Hummel85
Hummel85 03.11.2006 um 10:22:16 Uhr
Goto Top
Hallo Psycho Dad,

mal wieder ein makro- von dir was mir gut gefällt. Ich würde dies gern in meine Makro Sammlung aufnehmen. Nun noch ein paar Fragen.

Wie baue ich das um das er mich fragt von wo nach wo das Makro die Buchstaben groß machen soll?

Mein Gedanke war:

Zelle1 = InputBox("Zelle1 Angeben!")
If Zelle1 = "" Then Exit Sub

Aber mein Problem ist. Wie kann ich in dem Aufruf InputBox 2 Felder zum eingeben habe und wie baue ich das dann in dein Makro ein?
Gibt es die Möglichkeit nicht die Spalte auszuschreiben sondern auszuwählen? Also das ich auf die Zelle klicke und die mir dann dort eingetragen wird?

Gruß Hummel
8644
8644 03.11.2006 um 10:50:51 Uhr
Goto Top
Moin,

einen Bereich angeben kann man zum Beispiel so:

Sub machgross()
   Dim bereich As String
   Dim mcell As Range
   bereich = InputBox("Bereich angeben")  
    For Each mcell In Range(bereich).Cells
     mcell = UCase(mcell)
   Next mcell
End Sub

Die Eingabe wäre dann z.B. A1:D100.

Die Klickvariante muss ich mal überdenken.

[Edit:

Hier noch eine Variante, in der der Bereich vor Makro-Ausführung markiert wird:
Sub machgross1()
  Dim mcell As Range
  For Each mcell In Selection.Cells
     mcell = UCase(mcell)
 Next mcell
End Sub
]


Psycho
Hummel85
Hummel85 03.11.2006 um 12:34:31 Uhr
Goto Top
Und was ist mit der Variante das ich 2 Eingabefelder habe das ich einmal angeben kann A1 und in der 2. Zeile D1000. Also ich möchte nicht 2 Inputboxen haben sondern nur eine mit 2 Eingabefelder. So das ich dann schreiben kann:

For Each mcell In Range(bereich1":"bereich2).Cells

Und das mit der Auswahl habe ich vielleicht nicht gut ausgedrückt. Ich möchte bei der InputBox ein kleines Feld neben dem was ich eingeben kann, wo ich drauf klicken kann und dann die Zelle 1 oder 2 auswählen kann. Ist so etwas möglich?
8644
8644 03.11.2006 um 12:58:56 Uhr
Goto Top
OK,

dann mit einem Formular:

Du öffnest den VBA-Editor und fügst dort ein neues Formular ein.
Auf diesem Formular platzierst du zwei Textfelder und einen Button.
Per Doppelklick auf den Button ensteht eine neue Prozedur, in welche du folgenden Code einfügst:
Dim Bereich
 Dim mcell As Range
  Bereich = TextBox1.Value + ":" + TextBox2.Value  
    For Each mcell In Range(Bereich).Cells
     mcell = UCase(mcell)
   Next mcell
 UserForm1.Hide

Gegebenfalls musst du die Namen der Objekte anpassen.
Das Formular wird über ein extra Makro aktiviert:
Sub Aktivieren()
 UserForm1.Show
End Sub


Psycho
Hummel85
Hummel85 03.11.2006 um 15:00:03 Uhr
Goto Top
Hi

So vielen dank. Funktioniert alles wunderbar. Habe mir nur noch ein Abbrechen Button noch eingebaut.

Nur leider gehst du nicht auf die 2. Frage ein.

Ist es möglich bei dem UserForm noch 2 Buttons neben die Textfelder zu platzieren womit ich per Klick die Zelle Auswähle und Excel mir diese z.b. B2 in das Textfeld einträgt.
bastla
bastla 03.11.2006 um 15:45:46 Uhr
Goto Top
Hallo Hummel85!

Darf ich Dich auf das unscheinbare (ganz am Ende der Toolbox - zumindest in Excel 2003- angesiedelte) Objekt "RefEdit" und dessen Eigenschaft "Text" aufmerksam machen?

Grüße
bastla

P.S.: Intuitiver als das direkte "Vorweg-Markieren" erscheint mir diese Variante auch nicht unbedingt - aber zu Übungszwecken sicher ganz ok.
Hummel85
Hummel85 03.11.2006 um 17:52:13 Uhr
Goto Top
Hallo bastla,

danke für die Information. Genau das habe ich noch gesucht. Werde mich noch ein wenig damit beschäftigen. Mal sehen was ich damit noch machen werde.

Wünsche euch allen ein schönes Wochenende

Gruß Hummel
Holsi87
Holsi87 30.11.2006 um 14:45:36 Uhr
Goto Top
Hallo ich habe hierzu auch noch einmal eine Frage:

Ich würde gerne,dass excel mir in bestimmten Zellen alles automatisch (also mit z.B. betätigen der ENTER-Taste) GROß schreibt. Egal ob ich es klein oder wie auch immer in die Zelle schreibe. Zahlen können aber auch in der Zelle vokommen. Gibts für sowas auch irgeneine Formatierung oder ein bestimmtes Makro oder ähnliches?! Danke schonmal im voraus.

MfG
8644
8644 30.11.2006 um 14:50:12 Uhr
Goto Top
Hi,

falls ich dich richtig verstanden habe (Beim Verlassen der Zelle in Großbuchstaben umwandeln), geht das so wohl nicht. Entweder hinterher, wie oben beschrieben oder halt gleich richtig eingeben. Aber vielleicht kennt ja jemand anders doch eine Lösung!

Psycho
8644
8644 30.11.2006 um 15:02:58 Uhr
Goto Top
Ich noch mal!

hier habe ich einen Lösungsansatz gefunden.

Psycho
Holsi87
Holsi87 04.12.2006 um 14:56:14 Uhr
Goto Top
Oh achso okay...dann geht das scheinbar nicht ganz so, wie ich mir das gedacht hatte. Naja egal. Auf jedenfall erstmal danke für die Bemühungen.

MfG Holsi
bastla
bastla 05.12.2006 um 01:10:33 Uhr
Goto Top
Hallo Holsi87!

Meintest Du etwas in der Art:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
If Intersect(Target, Range("B2:B20")) Is Nothing Then Exit Sub  
On Error Resume Next 'nur zur Sicherheit  
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
On Error GoTo 0
End Sub
Damit wird für alle Zellen des Bereiches B2:B20 (siehe Zeile "If Intersect ...") die gewünschte Umwandlung in Großbuchstaben vorgenommen.
Bitte beachten: Der Code ist einer Tabelle, nicht einem Modul, zuzuordnen.

HTH
bastla
8644
8644 05.12.2006 um 07:39:09 Uhr
Goto Top
Moin,

das meinte ich, als ich schrieb:
Aber vielleicht kennt ja jemand anders doch eine Lösung!
Hätte auch heissen können: "Vielleicht kennt ja bastla doch noch eine Lösung!" face-wink

Psycho
bastla
bastla 05.12.2006 um 09:24:10 Uhr
Goto Top
@psycho
... alles nur geklaut. face-wink

Grüße
bastla
Biber
Biber 05.12.2006 um 10:04:56 Uhr
Goto Top
Aber, ganz abgesehen von bastla's und Psycho Dad's Workarounds:

Das darf doch wohl nicht wahr sein, dass ich nicht mal ein "Eingabeformat" für Zellen oder Bereiche festlegen kann in diesem merkwürdigen Tabellentool des sympathischen Weltmarktführers??!!???
M$ selbst hat doch da ganz offensichtlich auch eigene "Sonderformate" hinterlegt für so häufig benutzte Formate wie "Sozialversicherungsnummer" oder, was wir im Bremen fast rund um die Uhr brauchen, das "Postleitzahlenformat (CH)".
Also, nichts gegen die Schwyzer, darum gehts mir nicht, @psycho *gg

Wenn da noch jemand eine andere Möglichkeit posten würde, wäre ich sehr angetan.

Und BTW: Wie ist das denn in OpenOffice gelöst? Waren die schlauer?

Grüße
Biber
8644
8644 05.12.2006 um 10:10:48 Uhr
Goto Top
@Biber:

Ich hab gerade mal nachgesehen. OpenOffice beherrscht dieses Feature offensichtlich auch nicht! Ich bin da auch schon öfter drüber gestolpert und musste mir immer mit irgend welcher Friemelei helfen!
Also, nichts gegen die Schwyzer, darum gehts mir nicht, @psycho *gg

Was hab ich denn bitte mit der Schweiz zu tun?

Psycho
Biber
Biber 05.12.2006 um 10:17:32 Uhr
Goto Top
Was hab ich denn bitte mit der Schweiz zu tun?
Rate mal, worin ich besser bin: Bei Bätschen oder in Erdkunde?

Irgendwie dachte ich immer, Suhl liegt in diesem Tal zwischen Matterhorn und Genfer See?? face-wink
8644
8644 05.12.2006 um 10:20:51 Uhr
Goto Top
Du bist ja fast noch besser, als die Dame von der DB, die mich nach Südkorea schicken wollte, als ich ihr meinen Heimatort nannte! Für alle, die es nicht wissen: Suhl liegt im schönen Thüringen, also im grünen Herzen von Deutschland!

Psycho
Holsi87
Holsi87 05.12.2006 um 10:57:48 Uhr
Goto Top
Ja, Danke, genau sowas meinte ich. ;)

Also, Mfg Holsi