Hallo ihr Lieben,
ich brauche für eine Makroprogrammierung einen Code, der wenn in Spalte A die Textlänge= 5 ist, er mir immer an das Ende dieses Textes den Text hinzufügt: „.0“.
Wenn Textlänge ungleich 5 dann soll er eine Zeile weitergehen.
Kann mir einer weiterhelfen?
Also, das ist ganz einfach. Man kann jede Zelle einer Tabelle adressieren, [Sheets(„name“).]Cells(row,col)
row ist die Zeile, col die Spalte
dim row as long ’ mehr als 32768 Zeilen möglich!
dim col as integer
row =1
col = 1 ’ Spalte A
do while cells(row,col) vbnullstring
if len(cells(row,col)) = 5 then
cells(row,col) = cells(row,col) & „.0“
end if
loop
Aber: .0 anhängen klingt so nach Formatierung von Zahlen, das geht u.U. über die Darstellung mit einer Nachkommastelle leichter.
Viel Erfolg
Rainer
Kurz und Präzise:
Option Explicit
Sub Ergaenze()
Dim I As Double
Dim EndZeile As Double
Dim MyCell As String
EndZeile = 600 'Musst Du selbst wissen!
For I = 1 To EndZeile
MyCell = Cells(I, 1)
If Len(MyCell) = 5 Then
Cells(I, 1) = MyCell & ".0"
End If
Next I
End Sub
sub programm()
dim intAnfang as integer 'startzeile
dim intEnde as integer 'Endzeile
intEnde = 20 'z.B.
for intAnfang = 1 to intEnde
if len(cells(intAnfang, 1).value) = 5 then
cells(intAnfang,1).value = cells(intAnfang,1).value & „.0“
end if
next intAnfang
end sub
Liebe Grüße
OVM
Hallo Tschejtx,
ich hoffe die Fragestellung richtig interpretiert zu haben und sende Ihnen meinen Vorschlag:
Sub text()
Dim vari As String
Dim i, letzte As Integer
'Es werden Zellen mit Text und Text-Zahlenmischung markiert
’
'Zähler setzen
i = 1
'letzte verwendete Zeile ermitteln
letzte = Tabelle1.Range(„A65536“).End(xlUp).Row
'Schleife starten
For i = 1 To letzte
'Länge des Inhaltes prüfen ob 5
If Len(Cells(i, 1)) = 5 Then
'an Inhalt der aktuellen Zelle .0 anhängen
Cells(i, 1) = Cells(i, 1) & „.0“
End If
'nächste Zelle aufrufen
Next i
End Sub
Gruß Hugo
Hallo,
dieses lässt sich zwar auch sehr einfach per Zellenformel lösen [Zellenformel =WENN(A1="";"";WENN(UND(NICHT(ISTZAHL(A1));LÄNGE(A1))=5;A1&".0";A1)) zB. in B1 eingeben, anschliessend in die Spalte „B“ oder deinen Tabellenbereich kopieren], aber auch gut per Code…
Nachfolgenden Code in der Modulebene hineinkopieren ggf. anpassen.
Sub textumwandler()
'Statt ‚Anzahl‘ kannst du auch irgendeine Zahl bis 65536 eingeben.
'Sollte deine Tabelle auch Leerzelle in der Spalte A haben, so gib für ‚Anzahl‘ einen Festwert an.
Application.ScreenUpdating = False 'Macht die Ausführung dieses Codes schneller.
Dim i As Long
Dim Anzahl As Long
Anzahl = Application.WorksheetFunction.CountA(Sheets(1).Columns(„A“))
With Sheets(1)
For i = 1 To Anzahl
If Len(.Cells(i, 1)) = 5 And Not IsNumeric(.Cells(i, 1)) Then .Cells(i, 1) = .Cells(i, 1) & „.0“ 'wenn länge =5 und keine Zahl dann…
Next i
End With
Application.ScreenUpdating = True
End Sub
Gruß Andreas
Hallo Tschejtx,
mangels Information gehe ich mal von Excel aus und dass Du einen Knopf drücken willst um die Spalte zu durchsuchen und verändern.
[Für Tabellenblatt würde z. B. folgende Formel funzen: =WENN(LÄNGE(A2)>5;A2 & „.0“;A2)]
Hier mal der VB-Code:
Sub Spaltepruefen()
Dim zeile As Integer
With ActiveWorkbook.Worksheets(„Tabelle1“) 'Hier den Namen der Tabelle ändern
For zeile = 1 To 5 'Hier die Zeilennummern ändern
If Len(.Cells(zeile, „A“)) > 5 Then
.Cells(zeile, „A“) = .Cells(zeile, „A“).Text & „.0“
Else
End If
Next zeile
End With
End Sub
Gruß
Harry
Hallo
Sorry das ich erst jetzt antworte. hatte noch keine zeit.
Wennst noch hilfe brauchst, kann dir helfen.
gruß fred
sub zumbsp()
for zaler= 1to 100
text=cells(zaler,1).value
if len(text) =5 then
text= text &".=0"
cells(zaler,1).value=text
next
else
next
end sub:
das muesste in VBA funktionieren ,ciao