gpt4 book ai didi

VBA:在用户窗体中一次移动多个元素

转载 作者:行者123 更新时间:2023-12-04 21:51:58 25 4
gpt4 key购买 nike

当我单击复选框时,我想扩展我的用户表单。一些元素应该移动我的用户窗体扩展的相同值,以便它们始终与窗体的底部边框保持相同的距离。

目前我像这样单独移动每个元素,其中“Ausklapphoehe”是移动/扩展的值(它工作得很好,但我认为编码不好):

Private Sub Filtereigenschaften_Click()
If Filtereigenschaften.Value = False Then
Filtergruppe.Visible = False

UserForm.Height = UserForm.Height - Ausklapphoehe
Button.Top = Button.Top - Ausklapphoehe
FHLabel.Top = FHLabel.Top - Ausklapphoehe
FHBox.Top = FHBox.Top - Ausklapphoehe
NutenabstandLabel.Top = NutenabstandLabel.Top - Ausklapphoehe
NutenabstandBox.Top = NutenabstandBox.Top - Ausklapphoehe
SpinButton.Top = SpinButton.Top - Ausklapphoehe
VersionLabel.Top = VersionLabel.Top - Ausklapphoehe
End If
If Filtereigenschaften.Value = True Then
Filtergruppe.Visible = True

UserForm.Height = UserForm.Height + Ausklapphoehe
Button.Top = Button.Top + Ausklapphoehe
FHLabel.Top = FHLabel.Top + Ausklapphoehe
FHBox.Top = FHBox.Top + Ausklapphoehe
NutenabstandLabel.Top = NutenabstandLabel.Top + Ausklapphoehe
NutenabstandBox.Top = NutenabstandBox.Top + Ausklapphoehe
SpinButton.Top = SpinButton.Top + Ausklapphoehe
VersionLabel.Top = VersionLabel.Top + Ausklapphoehe
End If
End Sub

我有三个想法来缩短代码:
  • 将元素“ID”存储在数组中,并通过遍历数组执行重复任务(不知道如何将元素存储在数组中)
  • 只需对元素进行分组并仅对组执行任务(不知道如何在 vba 代码中寻址组)
  • 给元素一个相互的标签,然后只对标签上的元素进行寻址(不知道如何寻址标签)
  • 最佳答案

    有一个Tag每个对象的属性,您可以分配所有要移动的对象,例如 toBeMoved .那么代码会很清晰:

    Private Sub Filtereigenschaften_Click()
    Dim obj As Object
    Dim adj As Variant

    Filtergruppe.Visible = IIf(Filtereigenschaften.Value, True, False)
    adj = IIf(Filtereigenschaften.Value, Ausklapphoehe, -Ausklapphoehe)

    UserForm.Height = UserForm.Height + adj
    For Each obj In Controls
    If obj.Tag = toBeMoved Then obj.Top = obj.Top + adj
    Next obj
    End Sub
    .Tag的赋值方法可以写成 UserForm_Initialize() ,或通过“属性”窗口手动编辑(如果隐藏,请按 F4)。

    关于VBA:在用户窗体中一次移动多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52513821/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com