- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
过去几周的大部分时间里,我都在努力制作一些用户表单(这不是我的强项之一)。使用我的预期用户表单,用户可以在电子表格上选择他们想要的任何值(例如 Assets 价格),然后应用微调器,这模拟了这些 Assets 价格的增加/减少 % 等,然后他们可以观察如何这会影响业务的各个方面。然后他们有两个按钮,一个可以保留调整后的值,另一个可以重置值。
到目前为止,我有一个似乎可以在各种工作表上工作的用户表单,但所选范围必须是连续的,并且一个在这里有很大帮助(请参阅我自己的上一个问题),它非常适用于不连续的选择,但是它们必须在相同的工作表。但是,理想情况下,我希望能够在多个工作表中选择多个不连续的范围并能够对其进行编辑。我被可靠地告知范围变量只能引用特定工作表上的范围,我认为这是我出错的地方。
适用于非连续范围的代码如下,老实说,我不能因为我需要从这里得到很多帮助,而且我还没有完全整理好它,但我真的不能把它归功于它,任何人都可以建议我如何编辑或修改它以同时跨多个工作表和非连续范围工作?
打开用户表单;
Public myRange As Range, myArea As Range
Public myCopy As Variant
Public i As Long, numAreas As Long
Public pvar As Double
Sub Button2_Click()
Spinner.Show
End Sub
Option Explicit
'on opening userform this sets the variables
Private Sub UserForm_Activate()
pvar = 1
Set myRange = Selection
numAreas = myRange.Areas.Count
If numAreas = 1 Then
myCopy = myRange.Value
Else
ReDim myCopy(1 To numAreas)
For i = 1 To numAreas
myCopy(i) = myRange.Areas(i).Value
Next i
End If
End Sub
'Useful Subs
Sub RestoreVals(R As Range, V As Variant)
Dim A As Range
Dim i As Long, n As Long
n = R.Areas.Count
If n = 1 Then
R.Value = V
Else
For i = 1 To n
R.Areas(i).Value = V(i)
Next i
End If
End Sub
Sub Multiply(R As Range, p As Double)
Dim c As Range
For Each c In R.Cells
c.Value = p * c.Value
Next c
End Sub
'Spin Up button
Private Sub SpinButton1_SpinUp()
Dim myRange As Range, myCopy As Variant
Set myRange = Selection
'Reset Values so that pvar is * by the right values
CopyVals myRange, myCopy
Multiply myRange, (1 / pvar)
'Now * by pvar
CopyVals myRange, myCopy
pvar = pvar + UpBox.Value / 100
Multiply myRange, pvar
End Sub
' Spin Down button
Private Sub SpinButton1_SpinDown()
Dim myRange As Range, myCopy As Variant
Set myRange = Selection
'Reset Values so that pvar is * by the right values
CopyVals myRange, myCopy
Multiply myRange, (1 / pvar)
'Now * by pvar
CopyVals myRange, myCopy
pvar = pvar - DownBox.Value / 100
Multiply myRange, pvar
End Sub
'Button to return to starting values
Public Sub DefaultButton_Click()
If numAreas = 1 Then
myRange.Value = myCopy
Else
For i = 1 To numAreas
myRange.Areas(i).Value = myCopy(i)
Next i
End If
End Sub
'button to maintain adjusted values
Private Sub CommandButton1_Click()
UserForm3.Show
End Sub
最佳答案
作为概念证明,我创建了以下用户表单。在编辑器中,我将 ShowModal 设置为 False。这很重要,因为它允许用户在显示表单时切换到不同的工作表。它看起来像这样:
以下代码显示了一种允许用户在单独的工作表上选择可能不连续的范围,通过乘法因子修改它们,然后恢复原始值的方法:
Option Explicit
Dim valCopies As Collection
Dim ranges As Collection
Private Sub UserForm_Initialize()
Dim r As Range
tbChangeFactor.Value = "1.0"
Set ranges = New Collection
Set valCopies = New Collection
For Each r In Selection.Areas
ranges.Add r
valCopies.Add r.Value
Next r
End Sub
Private Sub btnChange_Click()
Dim r As Range, c As Range, p As Double
Application.ScreenUpdating = False
p = tbChangeFactor.Value
For Each r In ranges
For Each c In r.Cells
c = c * p
Next c
Next r
Application.ScreenUpdating = True
End Sub
Private Sub btnRestore_Click()
Dim i As Long, n As Long
n = ranges.Count
For i = 1 To n
ranges(i).Value = valCopies(i)
Next i
End Sub
Private Sub btnSelect_Click()
Dim choice As Range, A As Range
Dim home As Worksheet, ws As Worksheet
Set valCopies = New Collection
Set ranges = New Collection
Set home = ActiveSheet
For Each ws In Sheets
ws.Select
Set choice = Nothing
On Error Resume Next 'when the user hits cancel
Set choice = Application.InputBox("Select cells from " & ws.Name, "Change/Restore", Selection.Address, , , , , 8)
On Error GoTo 0
If Not choice Is Nothing Then
choice.Select 'for future reference
For Each A In choice.Areas
ranges.Add A
valCopies.Add A.Value
Next A
End If
Next ws
home.Select
End Sub
关于vba - 修改用户表单以在多个工作表上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31293361/
前言: 有时候,一个数据库有多个帐号,包括数据库管理员,开发人员,运维支撑人员等,可能有很多帐号都有比较大的权限,例如DDL操作权限(创建,修改,删除存储过程,创建,修改,删除表等),账户多了,管理
这个问题已经有答案了: Condition variable deadlock (2 个回答) 已关闭 5 年前。 在研究多线程时,我编写了以下代码,但在屏幕上没有观察到输出。我在这里做错了什么?我期
复制代码 代码如下: <IfModule mod_rewrite.c> RewriteEngineOn RewriteBase/ #将www.zzvips.com跳转到www.zzv
复制代码 代码如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 把 www.zzvips.com
复制代码 代码如下: Const T_GATEWAY = "1.1.1.1" '网关 Const T_NEWDNS1 = "2.2.2.2" 'DNS1
0. 修改索引 大文本字段支持排序 PUT http://localhost:9200/lrc_blog/_mapping //请求体 { "properties": { "title": { "t
仅 react 当状态发生变化时重新渲染 . 那么为什么我会直接看到我对真实 DOM 所做的更改呢? 我知道我正在修改真实的 DOM,但是当我根本没有改变状态时触发重新渲染的是什么。 import R
Xcode beta 5 推出 @FetchRequest对于 SwiftUI。 我有一个 View ,它有一个 @FetchRequest . NSFetchRequest是在管理器中创建的,该管理
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
我有一个表达式[text][id]应替换为链接 text 解决方案是( id 是整数) $s = preg_replace("/\[([^\]]+)(\]*)\]\[([0-9]+)\]/","$1$
我在 repo 中有一个文件,我不想让任何人更新。 我能做什么? 最佳答案 你想要svn锁:http://www.linxit.de/svnbook/en/1.2/svn.ref.svn.c.lock
说我有项目 list 。我想导出到csv,但在此之前我想做一些计算/修改。 基本上,设置如下所示: PS C:\Files> gci Directory: C:\Files Mode
我有一个非常简单的问题 - 是否可以修改 Java API 的源代码,例如Junit,JABX ? 我知道这似乎是一个非常愚蠢的问题,但它一直困扰着我一段时间。 最佳答案 如果您可以掌握源代码,那么请
我有一个带有变量/列的小标题,其中包括不同形状的小标题列表。我想为其中一个变量中的每个(子)标题添加一个变量/列。 例如此类数据 library("tibble") aaa aaa # A tibb
我有几个菜单,可以在单击时向当前链接添加变量。这是一个例子: 1 2 3 x y z 我的问题是,如果我选择“y”2次,它会添加“&cord=y”2次。相反,我希望它替
我有两个项目:一个服务项目和一个服务安装程序项目。服务项目具有适合我的产品的装配信息。它包括公司信息和正确的服务名称。一旦服务实际安装,所有这些似乎都会被忽略。安装服务时,它使用在服务安装程序的ini
以下代码何时可能产生副作用? @some = map { s/xxx/y/; $_ } @some; perlcritic 将其解释为危险的,因为例如: @other = map { s/xxx/y/
我想知道以下哪种解决方案更好:我想修改一些 .class 文件,我意识到有两种方法可以做到这一点: 反编译.class文件,修改它,最后再次编译。 - 直接用十六进制编辑器修改。 谢谢 最佳答案 在这
这是我的按钮代码 onclick 我希望我的程序等待用户单击一个 JPanel,并且当用户单击 JPanel 时,它应该在控制台上打印其名称。 此按钮代码未显示输出 JPopupMenu popu
我正在使用一个具有“getName()”方法的特定 API。 getName() 返回一个字符串。是否可以修改该字符串? API 中不包含修饰符方法,并且 String getName() 返回的是私
我是一名优秀的程序员,十分优秀!