编辑字符串

时间:2017-08-29 16:18:20

标签: excel vb.net excel-vba replace vba

所以目前我正在尝试更新旧的excel文件的宏代码,以便我们可以将它与新程序一起使用。虽然我是VB的新手,但是我从大学那里学到了一些C ++和Java,所以我能够得到所有工作但这段代码。所以基本上,我们正在将excel信息转换为.CVS,当我们进行转换时,似乎在一边提供了一些信息,而不是像excel文档中列出的那样的单个集合。

为了进行简单的修复,我只是添加了这组额外的代码来搜索每个字符串中的引号并删除除了单个集合之外的所有字符串。相反,它似乎只是继续替换整个字符串的各个部分,直到只剩下1个引号...做y'所有人都知道问题可能是什么?

我知道这是一些写得不好的代码,特别是因为我没有继续修复无限循环但是现在的主要问题是我如何滥用Replace函数。

    For X = 1 To 56
    String2 = Sheets(1).Cells(X, 1)
    Z = 1
    Do While Z <> Len(String2)
        If Mid(String2, Z, 1) = Chr(34) Then
            If Mid(String2, Z + 1, 1) = Chr(34) Then
                String2 = Replace(String2, """", "", Z, 1) 
                        ' Replace(String2, Char(34) + Char(34), "", Z, 1)
                Sheets(1).Cells(X, 1) = String2
                Z = 1
            Else
                Z = Z + 1
                End If
        Else
            Z = Z + 1
            End If
    Loop
    Next

正在更改文件信息:

  

&#34; MH 7 to Tipton1&#34;,7.942,1,1,0.22
  4.9,1,18.8
  &#34; SINGLE CABLE&#34;,15,206.8
  &#34;&#34; - &#34;&#34;&#34;,0,0 ^^这是一个被替换吃掉的字符串   几个循环后的功能。它一直持续到(&#34;,0,0&#34;)上一个   字符串在操作中没有改变   0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; H&#34;&#34 ;&#34;&#34;&#34;&#34; - &#34;&#34;&#34;,100,21.1
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VU&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,200,5.1
  5.1&#34;&#34;&#34; U&#34;&#34;&#34;,0,&#34;&#34;&#34; N&#34;&#34;& #34;&#34;&#34;&#34; - &#34;&#34;&#34;,0,0
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; H&#34;&#34 ;&#34;&#34;&#34;&#34; - &#34;&#34;&#34;,100,21.4
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VU&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,200,6.5
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VD&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,100,11.5
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; N&#34;&#34 ;&#34;&#34;&#34;&#34; - &#34;&#34;&#34;,0,0
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VU&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,100,11.5
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VD&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,100,11.5
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,23.1,&#34;&#34;&#34; N&#34;&#34 ;&#34;&#34;&#34;&#34; - &#34;&#34;&#34;,0,0
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VU&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,100,3.6
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; VD&#34;&#34 ;&#34;&#34;&#34;&#34; U&#34;&#34;&#34;,100,3.6
  0,&#34;&#34;&#34; U&#34;&#34;&#34;,120.8&#34;&#34;&#34; N&#34;&#34;& #34;&#34;&#34;&#34; - &#34;&#34;&#34;,0,0
  0,&#34;&#34;&#34; - &#34;&#34;&#34;,0,&#34;&#34;&#34; H&#34;&#34 ;&#34;&#34;&#34;&#34; - &#34;&#34;&#34;,12,30.9
  &#34; Test4.pll&#34;

1 个答案:

答案 0 :(得分:0)

我不能从你的问题中说出来,但如果你要做的就是用三个引号替换单引号然后你就可以删除整个do循环而只是放

$('.upload-file').on("change", function (e) {
    if (this.files[0] != null) {
        var fileSize = this.files[0].size;
        if (fileSize > 50) {
            alert("File too large!");
            var control=$("#"+$(this).attr('id'));//get the id
            control.replaceWith(control = control.clone().val(''));//replace with clone
            return;
        }
        else {
            alert("File ok");
        }
    }
});
在for循环中

替换整个字符串的内容而不是每个字符。

所以

string2=replace(string2,"""""""","""") 

甚至

For X = 1 To 56
    String2 = Sheets(1).Cells(X, 1).value

    String2 = Replace(String2, """""""", """")

    Sheets(1).Cells(X, 1).value = String2

Next

编辑

您还需要使用.value来获取单元格值