Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何对输入宏的单元格选择进行编码,该宏填充另一个变量输入预定义的单元格数量?_Vba_Excel - Fatal编程技术网

Vba 如何对输入宏的单元格选择进行编码,该宏填充另一个变量输入预定义的单元格数量?

Vba 如何对输入宏的单元格选择进行编码,该宏填充另一个变量输入预定义的单元格数量?,vba,excel,Vba,Excel,首先,对不起,我不能显示有用的代码。我怀疑我自己在试图解决问题时产生的可怜的片段是否有任何帮助,对于其他部分,我甚至不知道该使用什么命令;归咎于我不存在的经验。我能提供的所有代码都是已经在工作的代码,目前不需要关注 我正在为一个用excel制作的用户界面设置表制作一个命令按钮宏,它是Android广泛定制的移动应用程序的一部分。通过Windows浏览器插入文件名的命令按钮已成功实现,代码可重复使用 只剩下文件的一部分,可以通过按钮进行编辑。这就是我描述的单元格在填充示例名称时的外观: 为了更好地

首先,对不起,我不能显示有用的代码。我怀疑我自己在试图解决问题时产生的可怜的片段是否有任何帮助,对于其他部分,我甚至不知道该使用什么命令;归咎于我不存在的经验。我能提供的所有代码都是已经在工作的代码,目前不需要关注

我正在为一个用excel制作的用户界面设置表制作一个命令按钮宏,它是Android广泛定制的移动应用程序的一部分。通过Windows浏览器插入文件名的命令按钮已成功实现,代码可重复使用

只剩下文件的一部分,可以通过按钮进行编辑。这就是我描述的单元格在填充示例名称时的外观:

为了更好地理解整个过程,按钮最终应该是这样工作的。我遇到问题的部件将使用粗体字:

按钮1

打开用于插入正整数值x的输入框,如果输入不是正整数,则返回错误;将该值安全地保存在隐藏变量中以供以后使用 用从1到x的数字填充与前一个输入相等的列中的单元格数量 对于后面的nice,可以选择:创建一个单元格空间,从一个特定的单元格到垂直向下的x单元格,再到水平方向的3个单元格,在这个空间中,只接受后面提示的输入 按钮2

提示用户选择一个非常特定格式的文件,将文件名放入我已经有代码的单元格中;取消,如果未选择任何内容,则不覆盖;突出显示将由提示填充的单元格 转到下面的单元格,打开另一个提示,用文件名字符串填充该单元格 重复此操作,直到到达第x个单元格 跳转到起始单元格的右相邻单元格 同样的提示一直到第x个单元格,还有另一个过滤器 跳转到第二个到下一个单元格的右边开始,用提示符填充单元格,另一个过滤器;如果程序没有取消,现在应该填充空间中的每个单元格。 按钮3很好

与上述提示相同,但不重复;适用于活动单元 如果选择了空间之外的单元格或选择了多个单元格,则返回错误消息 若操作被取消,则选定单元格的值不会被删除 有没有办法有效地完成突出的任务?我在网上找不到任何有用的东西


提前谢谢

事实上,我发现一个令人满意的解决方案与我最初计划做的略有不同,把这个问题算作过时了

它涉及到回收我之前拼凑的浏览器代码,以及一种比我之前计划的更具体的单元格选择方式,但它可以满足最初表达的需求

以下是我生成的代码:

这基本上是计划按钮1的主要功能:

Private Sub CommandButton6_Click()
    'PreviousNumber saves the value existent before the main program 
    'will run, modified for a function ativated later
    Dim PreviousNumber As String
    PreviousNumber = Range("B11").Value + 14
    'FailSafe is installed for preventing a mismatch
    'error when the following input is cancelled
    Dim FailSafe As Variant
    Dim MyInt As Integer
    FailSafe = InputBox("Wie viele Fragen möchten Sie integrieren?", "Anzahl Fragen", Range("B11").Value)
    If FailSafe = Empty Then
        MyInt = Range("B11").Value
    Else
        MyInt = CInt(FailSafe)
    End If
    Range("B11").Value = MyInt
    'All functions called from here until the end are for
    'actually filling the cells following the input given.
    Dim Counter As Integer
    Counter = 1
    Dim Checker As Boolean
    Checker = True
    Dim SpecifyCell As Integer
    Range("A15:A" & PreviousNumber).Clear
    Do
        If Counter < MyInt Then
            Checker = True
        Else
            Checker = False
        End If
        SpecifyCell = 14 + Counter
        Range("A" & SpecifyCell).Value = Counter
        Counter = Counter + 1
    Loop While Checker = True
End Sub
Browser和CutPath是上述可循环使用的功能。浏览器打开Windows浏览器并将文件路径作为字符串输入变量单元格;CutPath从单元格中获取一个值,并删除字符串中最后一个\之前的所有内容,同时删除文件扩展名

由于对某些单元格值的高度依赖,这些函数使我需要保护他们正在处理的工作表

总结:

所有主要功能都包括在内,运行干净。 包含的按钮数量将超过计划,但总数不会太高。 后一种类型的大多数按钮在任何情况下都需要多次单击。
大家好,欢迎来到StackOverflow。这里的人只会愿意帮助我们,如果你给我们一些努力,所以你的代码将是必需的。我建议阅读并帮助主题,我想知道伪代码是否也可以。我不熟悉VBA的基础知识之外的任何东西,我知道没有人能够帮助我获得一些有用的VBA代码来开始工作。好吧。。。我希望有人读到这个。这是我的第一个问题,allready被否决了,很可能很多人很快就会看到,也许应该问一些更简单的问题。那么,对于如何改进这个问题,你有什么具体的进一步建议吗?还是我应该放弃它,从明天更简单的事情开始?感谢对新手的任何帮助。。。求你了。我会试着录制一些宏来满足你的要求,因为它似乎太难处理了,然后回来为我们提供一些代码。很高兴您尝试解释了所有您试图做的事情,但是没有任何代码,很难帮助您。你说你不能生成任何代码,但是你提到你已经有了一些可用的代码,所以你应该检查你的语句swell,我已经有了一些代码片段的拼凑
我在互联网上发现了最简单的功能,所以它不是我自己真正的作品。。。不过,谢谢你的反馈!我会试试看。这就是你开始学习编程语言的方式,通过在线研究、收集有用的代码,然后在理解它们之后,能够修改它们以满足你的需要,并且在将来的某个时候,开始从头开始生成你自己的代码。这真是太好了,我很高兴你找到了适合你的东西。快乐的编码。谢谢你留下的反馈,我很感激!
Private Sub CommandButton8_Click()
    Dim FailSafe As Variant
    Dim MyInt As Integer
    FailSafe = InputBox("Welche Station möchten Sie bearbeiten?", "Wählen Sie eine Station", 1)
    If FailSafe = Empty Then
    MsgBox "Bitte geben Sie nur eine positive Ganzzahl ein."
    Else
        If CInt(FailSafe) > CInt(Range("B11").Value) Then
            MsgBox "Bitte geben Sie eine Nummer zwischen 1 und der Anzahl der von zu integrieren beabsichtigten Fragen ein."
        Else
            MyInt = CInt(FailSafe)
            MyInt = MyInt + 14
            Browser "PNG", "*.png", "B" & MyInt
            CutPath "B" & MyInt
        End If
    End If
End Sub