Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Wie per Makro Hochkomma entfernen





Frage

Hi, teilweise erscheinen mir Imports aus anderer Anwendung (Notes) wie folgt: '456 '46546 '798977 Ich brauche sie aber in den Zellen ohne dem Hochkomma ' Also 456 46546 798977 OK, hier ein Ansatz: Sub HochkommaWech() Dim c As Range On Error Resume Next For Each c In Selection ......... ......... Next c End Sub Das Script soll also alle Hochkommas der ausgewählten Zellen entfernen. Wie kann ich das realisieren? Logic

Antwort 1 von gaga

habe mich auch schön öfters darüber geärgert. heute wende ich folgendes vorgehen an (aus ms excel xp hilfe)

  1. irgendwo in eine leere zelle die zahl 1 eingeben.
  2. diese zahl kopieren (Ctrl + C)
  3. nun die zellen mit diesen blödsinnig verkrümmten text-zahlen markieren.
  4. menü-punkt bearbeiten/inhalte einfügen -> multiplikation wählen

    -> adakadabra...



geht für 'nicht immer wiederkehrende konvertierung' am schnellsten. für immer gleichbleibende datenwandlungen (irgendwelche reports) bist Du aber ev. mit dem makro schneller (-> funktion mid... verwenden)



Antwort 2 von logic

@gaga: danke, der Tipp war mir auch bekannt.
Nun suche ich aber einen Buttonklick :-)

Für manch andere Imports klappt auch ein:
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Aber hier leider nicht.

Logic


Antwort 3 von gaga

... gehe ich recht in der annahme, dass Du die fraglichen zellen markieren willst, auf den knopf drückst und voila?

hier etwas code:
-----------------------------------
Sub gaga()
dim objCell as Object
For Each objCell In Selection
objCell.Value = Val(objCell)
Next
End Sub
-----------------------------------
... hey, habe mich vorhin mit der funktion mid völlig vertan. das ' wird ja nur deshalb gezeigt, weil excel mitteilen will, dass es sich hier um eine als text formatierte zahl handelt. das ' ist also gar nicht vorhanden und kann also mit mid nicht weggezaubert werden. also val um aus einem text eine zahl zu machen.



Antwort 4 von logic

@Gaga,
danke für das Script, klappt aber so leider nicht :-(
Beispielsweise Datumsfeld. (sorry habe oben nur Zahlen als Bsp. angegeben).
Bei Zahlen klappt es allerdings wunderbar....


Logic


Antwort 5 von gaga

... und was kommt als nächstes beispiel... ;-))

also musst Du erst die feldwerte untersuchen. vorausgesetzt, die datumsfelder haben ein 'verständliches' format solltest Du durch auswechseln der einen zeile durch folgende zwei zum ziel kommen:

' zeichen ' entfernen
objCell.Value = CStr(objCell)
' wenn inhalt in datum verwandelt werden kann ...
If IsDate(objCell) Then objCell = CDate(objCell)



Antwort 6 von logic

Gaga, und nochmal danke!

Zitat:
... und was kommt als nächstes beispiel... ;-))

Nice to have wäre halt ein Script was folgendes macht:
nimm objCell.Value in ein String
if Wert 1 in String = Hochkomma then
entferne Hochkomma
endif
next

Problem evtl. ist in VBScript, auf ein Hochkomma zuzugreifen, weil Sonderzeichen?

Logic

Antwort 7 von Mikel

Wenn du in deiner Tabelle keine Hochzeichen hast die du noch benötigst, könnte man das auch mit der Ersetzen-Funktion machen.

Z.B.:
Sub Hochzeichen_entfernen()
Cells.Replace What:="'", Replacement:=""
End Sub

Mikel

Antwort 8 von Martina

Hallo,

kannst es auch hiermit mal versuchen:


Sub Makro()
Dim Wert
    Wert = Selection
    Selection = Right(Wert, Len(Wert))
End Sub

Gruß Martina

Antwort 9 von gaga

allgemein:
wie schon gesagt, dieses hochkomma wovon logic spricht gibt es eigentlich gar nicht. excel stellt dies nur dar, um zu zeigen, dass der inhalt der zelle als text formatiert ist.
deshalb funktioniert mikels vorschlag unter keinen umständen.
martinas vorschlag funktioniert, man könnte aber genau so gut left oder mid oder nur selection=wert verwenden.
excel muss nur irgendwie eine neue eingabe erhalten in der zelle und entscheidet dann selbst, ob es dieses nun nummerisch darstellen möchte.
anders mit dem datum, dieses muss mit cdate verwandelt werden.
hiermit sollte es also gehen:
(alle zellen markieren, dann script
laufen lassen)
_---------------------------------_

Sub gaga()
dim objCell as Object
For Each objCell In Selection
objCell.Value = objCell.value
If IsDate(objCell) Then objCell = CDate(objCell)
Next
End Sub

_---------------------------------_

geht dies?

Antwort 10 von coros

Hi an alle,

ich hätte da folgenden Code anzubieten:

Private Sub CommandButton1_Click()
Dim ERSETZ As String
For i = 1 To 100
ActiveCell.FormulaR1C1 = ActiveCell.Text
ActiveCell.Offset(1, 0).Select
Next i
End Sub



Ist im moment auf 100 Zellen begrenzt, kann aber geändert werden.

Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.

Antwort 11 von want2cu

Hallo zusammen,

hier gibt es ja schon prima Lösungen. Ich hätte noch eine Alternative, kann das aber leider nicht in VBA-Form anbieten.

Wenn man nur eine Spalte markiert und dann die OPtion "DATEN-TEXT IN SPALTEN-ENDE" wählt, verschwindet das Hochkomma ebenfalls.

So lassen sich übrigens auch andere Textwerte oder Datumswerte in ein numerisches Format umwandeln.

CU
want2cu

Antwort 12 von xxxxxxxxx

hi alle wie schon bei einem anderen prob
das selbe makro,es entfernt jede art von sonderzeichen und text und macht aus einem punkt ein komma

Sub Makro1()
Range("a1").Select
adress$ = ActiveWindow.RangeSelection.Address
adress1 = Len(adress$)
For mo = 1 To adress1
If Mid$(adress, mo, 1) = "$" Then
llp = llp + 1
Else
If llp = 1 Then
spalte$ = spalte$ + Mid$(adress, mo, 1)
End If
If llp = 2 Then
zeile$ = zeile$ + Mid$(adress, mo, 1)
zeile1 = Val(zeile$)
End If
End If
Next mo
anfangspalte$ = spalte$
anfangzeile$ = zeile$
anfang01 = Val(anfangzeile$)
Dim zahl$(100)
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
A = LastCell.Row
Do While Application.CountA(Rows(A)) = 0 And A <> 1
A = A - 1
Loop
alta = A
altb = LastCell.Column
b = LastCell.Column
Do While Application.CountA(Columns(b)) = 0 And b <> 1
b = b - 1
Loop
altb = b
lzeile = alta
lspalte = altb
For t% = Asc(anfangspalte$) To Asc(anfangspalte$) + lspalte - 1
For t1% = anfang01 To lzeile
laenge% = Len(Range(Chr$(t%) & t1%))
tt = 1
For t2% = 1 To laenge%
If Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(48) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(49) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(45) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(46) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(47) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(48) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(49) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(50) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(51) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(52) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(53) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(54) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(55) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(56) Or Mid$(Range(Chr$(t%) & t1%), t2%, 1) = Chr$(57) Then
zahl$(tt) = Mid$(Range(Chr$(t%) & t1%), t2%, 1)
tt = tt + 1
End If
Next t2%
Range(Chr$(t%) & t1%) = ""
For z = 1 To 100
If zahl$(z) <> "" And zahl$(z) <> "-" And zahl$(z) <> "." And zahl$(z) <> "," Then
Range(Chr$(t%) & t1%) = Str$(Range(Chr$(t%) & t1%)) + zahl$(z)
End If
Next z
Range(Chr$(t%) & t1%).Select
For z = 1 To 100
zahl$(z) = ""
Next z
Next t1%
Next t%
End Sub


Antwort 13 von nighty

hi alle

falls es doch noch jemanden interessiert
in dieser zeile ist der startpunkt bzw. zelle zu waehlen,falls ueberschrift vorhanden .Range("a1").Select somit es dann um eins erhoeht werden muss,eben so Range("a2").Select z.b.

gruss nighty

Antwort 14 von nighty

hi alle

noch ein paar tips von einem DAU :)

sollte man mal bei importierten dateien falsch dargestellte zeichen oder auch steuerzeichen haben,sind diese zu ermitteln welcher asci code es ist und somit leicht mit chr$(ascicode)in eine wieder holungschleife einzubinden ist,dabei spielt es wohl keine grosse rolle ob geloescht oder ausgetauscht werden soll.

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: