以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]选定单元格能连续左移和右移  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192137)

--  作者:tygzjsl
--  发布时间:2024/5/30 21:06:00
--  [求助]选定单元格能连续左移和右移
大神老师,如何选定单元格能连续左移和右移,也就是能通过按钮点击能左移或右移,调整专业顺序,专业代码和专业名称一起移动,求按钮点击代码,感谢大神老师图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2024/5/30 21:10:08编辑过]

--  作者:有点蓝
--  发布时间:2024/5/30 21:40:00
--  
左移
dim t as table = tables("表A")
dim r as row = t.current
dim n as integer = t.colsel
dim c as col = t.cols(n)
if c.name like "*专业_*" andalso not(c.name like "第一专业_*") then
if c.name like "*_专业名称" then
n = n -1
c = t.cols(n)
end if
dim s1 as string = r(n-2)
dim s2 as string = r(n-1)
r(n-2) = r(n)
r(n-1) = r(n+1)
r(n) = s1
r(n+1) = s2
end if

--  作者:tygzjsl
--  发布时间:2024/5/31 8:36:00
--  
非常感谢老师,那么右移怎么改,全指望你啦图片点击可在新窗口打开查看
dim t as table = tables("表A")
dim r as row = t.current
dim n as integer = t.colsel
dim c as col = t.cols(n)
if c.name like "*专业_*" andalso not(c.name like "第六专业_*") then
if c.name like "*_专业名称" then
n = n -1
c = t.cols(n)
end if
dim s1 as string = r(n-2)
dim s2 as string = r(n-1)
r(n-2) = r(n)
r(n-1) = r(n+1)
r(n) = s1
r(n+1) = s2
end if

--  作者:tygzjsl
--  发布时间:2024/5/31 8:38:00
--  
然后老师你在帮我看一下这个呗

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240530195938.jpg
图片点击可在新窗口打开查看
大神老师,想把除某些列外选定行连续上或下移动,按钮事件代码怎么改啊

Dim cs() As String = {"批次", "序号"}

Dim cr As Row = Tables("表A").Current
If cr IsNot Nothing AndAlso cr.Index < Tables("表A").Rows.Count - 1 Then
    Dim nr As Row = Tables("表A").Rows(cr.Index + 1)
    For Each c As String In cs
        Dim temp As String = nr(c)
        nr(c) = cr(c)
        cr(c) = temp
    Next
End If

要把选定行除批次和序号这两列外其它列内容能连续上移或下移(上移按钮和下移按钮事件),这个怎么改图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/5/31 8:49:00
--  
以下是引用tygzjsl在2024/5/31 8:36:00的发言:
非常感谢老师,那么右移怎么改,全指望你啦图片点击可在新窗口打开查看
左移的说明
dim t as table = tables("表A")
dim r as row = t.current
dim n as integer = t.colsel
dim c as col = t.cols(n)
if c.name like "*专业_*" andalso not(c.name like "第六专业_*") then 判断选中的是不是专业单元格
if c.name like "*_专业名称" then 如果选中列的是专业名称
n = n -1 定位到代码单元格
c = t.cols(n)
end if
这里开始互换位置
dim s1 as string = r(n-2) 上一个专业的代码
dim s2 as string = r(n-1) 上一个专业的专业名称
r(n-2) = r(n) 左移代码
r(n-1) = r(n+1) 左移专业名称
r(n) = s1 上一个专业代码右移
r(n+1) = s2 上一个专业名称右移
end if

根据上面说明,参照下图,自己思考右移应该怎么改

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2024/5/31 8:51:00
--  
以下是引用tygzjsl在2024/5/31 8:38:00的发言:
然后老师你在帮我看一下这个呗

要把选定行除批次和序号这两列外其它列内容能连续上移或下移(上移按钮和下移按钮事件),这个怎么改图片点击可在新窗口打开查看

参考:http://www.foxtable.com/webhelp/topics/1793.htm
--  作者:tygzjsl
--  发布时间:2024/5/31 9:02:00
--  
你真的是一个好老师!!!!图片点击可在新窗口打开查看
Dim t As Table = Tables("填报表")
Dim r As Row = t.current
Dim n As Integer = t.colsel
Dim c As Col = t.cols(n)
If c.name Like "*专业_*" AndAlso not(c.name Like "第六专业_*") Then
If c.name Like "*_专业名称" Then
n = n -1
c = t.cols(n)
End If

Dim s1 As String = r(n+2)
Dim s2 As String = r(n+3)
r(n+2) = r(n) 
r(n+3) = r(n+1)
r(n) = s1
r(n+1) = s2
End If

--  作者:tygzjsl
--  发布时间:2024/5/31 9:25:00
--  
With CurrentTable
    .Current.Move(.Position - 1)
End With
这个代码!但要除了批次和序号不动,只动其它怎么改,谢谢图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2024/5/31 9:27:00
--  
那就只能使用4楼的用法,这个用法有啥问题?
--  作者:tygzjsl
--  发布时间:2024/5/31 9:29:00
--  
上移是这个代码
With CurrentTable
    .Current.Move(.Position - 1)
End With

下移是+1,但要除了批次和序号内容不动,只移动其它行内容怎么改,谢谢