作为VBA的新用户,我尝试在自己的工作表中添加自定义滚动条。通过自定义,我的意思是我可以使用Userform来确定滚动条的最小值,最大值和小变化,在那里我询问了所需的值。到目前为止,我已将值存储在以下公共变量中: screen of the Userform
Option Explicit
Public A As Integer
Public B As Integer
Public C As Integer
Private Sub Valider_Click()
If IsNumeric(TextBox1.Value) Then
A = TextBox1.Value
Unload Me
Else
MsgBox "Valeur mimimale incorrecte"
End If
If IsNumeric(TextBox2.Value) Then
B = TextBox2.Value
Unload Me
Else
MsgBox "Valeur maximale incorrecte"
End If
If IsNumeric(TextBox3.Value) Then
C = TextBox3.Value
Unload Me
Else
MsgBox "Pas incorrect"
End If
MsgBox A & " " & B & " " & C
End Sub
我刚刚重新分配了#34; .Min"," .Max"和" .SmallChange。"在Excel给出的defaut滚动条代码中使用A,B和C:
Sub curseur()
ActiveSheet.ScrollBars.Add(180, 45.75, 119.25, 13.5).Select
With Selection
.Value = 0
.Min = A
.Max = B
.SmallChange = C
.LargeChange = 10
.LinkedCell = "$G$4"
.Display3DShading = True
End With
Range("F4").Select
ActiveCell.FormulaR1C1 = "=RC[1]/100"
Range("G4").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
End With
End Sub
所以我有3个文本框和一个Commandbutton(" Valider")。基本上我的想法是用前面的值(min,max,...)来实现这3个盒子并将它们存储在公共变量中。目前我只是使用F5从开发者选项卡运行我的代码。
我首先运行用户表单。一旦完成文本框并按下CommandButton,MessageBox就会返回变量A,B和C中包含的值。 然后我想用它们来定义"我的滚动条。当我按F5时,滚动条显示自己(见截图),但如果我转到属性,则所有值都设置为零。似乎我没有以正确的方式调用变量A,B,C:scrollbar properties
提前感谢您的帮助。
答案 0 :(得分:0)
问题是你的第二个子(curseur)不知道你从表单中分配了什么值。变量被销毁了#39;在你的代码的最后一点结束之后。所以curseur()中的变量A,B,C没有任何价值。
如果您将程序调用添加到valider_click sub的末尾,这应该可以解决您的问题。如果您的值不是数字:
,您应该退出子Private Sub Valider_Click()
If IsNumeric(TextBox1.Value) Then
A = TextBox1.Value
Else
MsgBox "Valeur mimimale incorrecte"
Exit Sub
End If
If IsNumeric(TextBox2.Value) Then
B = TextBox2.Value
Else
MsgBox "Valeur maximale incorrecte"
Exit Sub
End If
If IsNumeric(TextBox3.Value) Then
C = TextBox3.Value
Else
MsgBox "Pas incorrect"
Exit Sub
End If
MsgBox A & " " & B & " " & C
Call curseur
Unload Me
End Sub