以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Excel单元格复制过来时变成好几个单元格  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104865)

--  作者:君子性非异也
--  发布时间:2017/8/7 12:03:00
--  Excel单元格复制过来时变成好几个单元格
从Excel复制信息到自建foxtable表中时,出现了一个单元格,在Excel当中是一个,在foxtable却占用了好几个,这样就错位了。只有一个单元格这样,其他很正常。
--  作者:有点甜
--  发布时间:2017/8/7 12:55:00
--  

处理一下

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=101071&replyID=695003&skin=1

 


--  作者:君子性非异也
--  发布时间:2017/8/7 15:21:00
--  
具体怎么使用?代码贴在哪儿运行?
--  作者:有点甜
--  发布时间:2017/8/7 15:23:00
--  

做一个按钮,放入下面的代码。

 

然后,复制你excel的内容后,点击一下按钮,再粘贴。

 

Dim str As String = ClipBoard.GetText
Dim nstr As String = ""
Dim tempstr As String = ""
Dim flag As Boolean = False
For i As Integer = 0 To str.length - 1
    If str(i) = """" Then
        If i = 0 OrElse str(i-1) = chr(9) OrElse str(i-1) = chr(10) Then \'开始
            flag = True
        ElseIf i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(13) Then \'结束
            tempstr = tempstr.Replace(chr(13), "")
            nstr &= tempstr
            tempstr = ""
            flag = False
        End If
    End If
    If flag = True Then
        tempstr &= str(i)
    Else
        nstr &= str(i)
    End If
Next
ClipBoard.SetText(nstr)


--  作者:有点甜
--  发布时间:2017/8/7 15:27:00
--  

或者是,你可以把代码写到表格的keydown事件去。但代码要对应改一下

 

If e.control = True AndAlso e.keycode = keys.v Then
    Dim str As String = ClipBoard.GetText
    Dim nstr As String = ""
    Dim tempstr As String = ""
    Dim flag As Boolean = False
    For i As Integer = 0 To str.length - 1
        If str(i) = """" Then
            If i = 0 OrElse str(i-1) = chr(9) OrElse str(i-1) = chr(10) Then \'开始
                flag = True
            ElseIf i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(13) Then \'结束
                tempstr = tempstr.Replace(chr(13), "")
                nstr &= tempstr
                tempstr = ""
                flag = False
            End If
        End If
        If flag = True Then
            tempstr &= str(i)
        Else
            nstr &= str(i)
        End If
    Next
    ClipBoard.SetText(nstr)
End If