注册 登录
编程论坛 Python论坛

关于def 自定义函数的问题

螭蛊 发布于 2023-03-05 17:34, 707 次点击
下面是我用excel VBA写的两个代码,请教各位大神,能不能用python写一下,最好能写成def 自定义函数,,imput的内容就做为参数传进去
调用也顺便写下,新手见谅!!感谢大神


Sub 时间标尺()
        Dim i, j, n
        Dim rng As Range
        Set rng = Range("B3:C" & Range("c65536").End(xlUp).Row)
        x = Application.Min(rng)
        y = Application.Max(rng)
        Z = InputBox("请输入时间间隔,单位:天", "北仙出品")
        Application.DisplayAlerts = False
        n = (y - x) \ Z + 1: i = 0
        If x > 44310 And y < 45300 Then
            Do While x + Z * i <= y
                Cells(2, 4 + i) = x + Z * i
                i = i + 1
            Loop
        Else: MsgBox "时间超限,请与作者联系!"
        End If
        Cells(2, 4 + i) = x + Z * i
        Cells(2, 5 + i) = "备注"
        rng.NumberFormatLocal = "yyyy-mm-dd"
        Range(Cells(2, 4), Cells(2, 4 + i)).NumberFormatLocal = "mm/dd"
        Range(Cells(2, 2), Cells(2, 5 + i)).EntireColumn.AutoFit
        Range(Cells(1, 2), Cells(1, 5 + i)).Merge
        Application.DisplayAlerts = True
    End Sub
    Sub 留白()
        Dim i, j, k
        j = InputBox("请输入行高", "北仙出品")
        If Len(j) = 0 Or Len(j) = 5 Then
            j = 20
        End If
        For i = Range("a65536").End(xlUp).Row To 3 Step -1
            If Cells(i, 1) <> "" Then
                Rows(i).RowHeight = j
                Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Rows(i + 1).RowHeight = j * 0.4
                Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Rows(i).RowHeight = j * 0.4
            End If
        Next i
    End Sub
3 回复
#2
sheeboard2023-03-06 08:36
我有个疑问,x轴日期间隔是6天,成品表里开始日期和结束日期并没有落在对应的日期范围里,这个逻辑怎么理解?

[此贴子已经被作者于2023-3-6 18:19编辑过]

#3
螭蛊2023-03-06 16:43
回复 2楼 sheeboard
只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


把原始状态和成图发你看一下就明白了,多刷新几次,这个网站总有打不开的时候
#4
sheeboard2023-03-06 18:13
横道图我看过了,看第一条场地平整结束日期是5-10,但图里显示是5-8,明显不对,所以问是什么逻辑。还有现成的图像绘制库不用,要自己画,而且是画在cell上,就算是excel自带的绘图功能也不会这么做,甚是奇怪。

[此贴子已经被作者于2023-3-6 22:53编辑过]

1