2017-06-09 6 views
2

VBAのREPLACE機能に問題があります。 たとえば、whem私はシートに入っていて、CTRL + Hを使ってすべての "。" "、"、それはうまくいく。 1VBAの置換機能の問題

  • 0.8 ---> 0,8
  • 0.9 ---> 0.9
  • より しかし、私は>私は値に問題があるマクロでそれをやろうとしています
  • 1.09978063783 --->ここ109978063783

はコードです:

Rows("10:10").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False, MatchByte:=False 
+0

はこれをチェック - https://stackoverflow.com/questions/23849437/excel-change-to – Vityata

+0

私は私が他のマクロを持って、設定を変更する必要はありません小数点記号として "、"を使用しています。 –

+0

Excelは区切り記号として評価し、整数に変換します。 あなたができることは、 'Replace'メソッドを放棄してループを採用することです。あるいは、関数に変換して 'Replace'メソッドをエミュレートすることもできます。 – L42

答えて

0

うこれはあなたのためのトリックですか?

Sub Test() 
Dim i As Integer, rng As Range, cell As Range 

For i = 10 To 1000 
Set rng = Rows(i) 
    rng.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False, MatchByte:=False 
Next i 
End Sub 
+0

動作しません。結び付けていただきありがとうございます –

+0

何が問題なのですか?私にとっては、すべてのドットを指定された行のカンマで置き換えます。 – bub

+0

値が<1より大きい場合は機能し、値が1より大きい場合はその値のみを削除します。それを何に置き換えるか –

0

このコードを試してみてください。

Sub DotsToCommas() 
    Dim Txt As String, Col As Long 
    For Col = 1 To ActiveSheet.Columns.Count 
     Txt = CStr(ActiveSheet.Cells(10, Col).Value) 
     If Txt = "" Then 
      Exit Sub 
     End If 
     Txt = Replace(Txt, ".", ",") 
     ActiveSheet.Cells(10, Col).Value = Txt 
    Next 
End Sub 

それはすべてのセルをループがそうであるように、それが空のものを見つけるまでには、もう少し時間がかかります。

0

これはそれを行う必要があります。

Sub replaceDecimalPoint() 

Dim lastRowNum As Long 
Dim lastColNum As Long 
Dim startRow As Long 
Dim tempVal As String 


lastRowNum = Cells(Rows.Count, 1).End(xlUp).Row 
lastColNum = Cells(10, Columns.Count).End(xlToLeft).Column 

startRow = 10 'Change this if row start number is required to be changed from 10 

Dim rangeArray As Variant 
rangeArray = Range(Cells(startRow, 1), Cells(lastRowNum, lastColNum)).Value 'Assuming to start at row 10 as you have used Row 10 (And Column A) - If NOT,  Change startRow 

For r = startRow To lastRowNum 'Assuming to start at row 10 as you have used Row 10 - If NOT, Change startRow 

    For c = 1 To lastColNum 
     tempVal = rangeArray(r - (startRow - 1), c) 
     If CDbl(tempVal) > 1 Then 
      tempVal = CStr((tempVal * (10^(Len(tempVal) - 1)))) 
     End If 

     rangeArray(r - (startRow - 1), c) = Replace(CStr(tempVal), ".", ",") 
    Next c 

Next r 

Range(Cells(startRow, 1), Cells(lastRowNum, lastColNum)).Value = rangeArray 

End Sub