有没有办法删除数组的第一个元素VBA?
像javascript shift()方法的东西?
Option Explicit
Sub Macro1()
Dim matriz() As Variant
Dim x As Variant
matriz = Array(0)
ReDim Preserve matriz(1)
matriz(1) = 5
ReDim Preserve matriz(2)
matriz(2) = 10
ReDim Preserve matriz(3)
matriz(3) = 4
ReDim Preserve matriz(1 To UBound(matriz))
For Each x In matriz
Debug.Print x
Next x
End Sub
Run Code Online (Sandbox Code Playgroud)
这是在回避错误: Subscript out of range
介绍:
我知道 - 显示UserForms - 这是最好的做法
QueryCloseuserform代码(If CloseMode = vbFormControlMenu ...)Unload Me其中不做,只是一个胆小的Me.Hide指令(在阻止[x] -it和最终的自毁之后Cancel = True).IsCancelled=True) 有用的链接
一个出色的概述"UserForm1.Show?" 可以在https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/ 以及许多示例性的SO答案中找到(thx到@ Mats'Mug和RubberDuck).
1)模态UserForms的工作示例
据我所知 - 我确实尝试学习 - ,对于模态 UF ,以下代码应该没问题:
案例1a) ..使用UF实例的局部变量,如常见:
Public Sub ShowFormA
Dim ufA As UserForm1
Set ufA = New UserForm1
' show userform
ufA.Show ' equivalent to: ufA.Show vbModal
' handle data after user …Run Code Online (Sandbox Code Playgroud) 问题
该ChrW则charCode参数是一个Long标识字符,但不允许值大于65535(十六进制值&HFFFF) -见MS帮助。
例如,可以在Unicode十六进制块中 找到其他符号和象形文字1F300-1F5FF。因此,我找不到任何方法来表示建议的十六进制值?1F512而1F513对于
恰好在此charcode块中的打开或关闭的挂锁符号,从当然开始,将导致无效的过程/参数调用。ChrW(&H1F512)
最近的答案找到了一个较低的字符码
(通过ChrW(&HE1F7)和ChrW(&HE1F6))的可能不稳定的选择,但是我正在寻找一种方法来获取较高的字符码表示形式。
题
有没有一种系统的方法来表达在十六进制代码块中找到的Unicode字符,而不是FFFF通过VBA或其他方法来解决?
介绍
去年@PrzemyslawRemin 提出了一个问题,即如何在 VBA 中将计数器列添加到现有矩阵中, 而无需额外循环且无需修改工作表。
本示例中的原始矩阵是一个(基于 1 的 2 维)数据字段数组,源自(源单元格仅包含它们的地址字符串;要填充数字的插入行)
Dim matrix As Variant
matrix = Range("A1:C5").value
Run Code Online (Sandbox Code Playgroud)
输入矩阵:------------ ? 想要的结果:
+----+----+----+ +----+----+----+----+
| A1 | B1 | C1 | | 1 | A1 | B1 | C1 |
+----+----+----+ +----+----+----+----+
| A2 | B2 | C2 | | 2 | A2 | B2 | C2 |
+----+----+----+ +----+----+----+----+
| A3 | B3 | C3 | | 3 | A3 | B3 | C3 |
+----+----+----+ …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
Array1 = Array("apple", "pear")
Array2 = Array("Dog", "Cat")
All_Arrays = Array(Array1, Array2)
For each item in All_Arrays
Debug.print item
Next item
Run Code Online (Sandbox Code Playgroud)
我想更改它以打印变量名称 Array1和Array2. 这可能吗?
我想快速创建一个 6X4 的小整数数组。对于一个小的一维数组,我喜欢使用类似的东西
Dim MyArr()
MyArr = Array(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
有没有类似的方法来创建二维数组?我尝试用 ; 分隔行 但
MyArr = Array (1, 2, 3; 4, 5, 6)是无效的。
我想我太懒了,无法设置循环,但单行方法会紧凑且有用。
我正在寻找一种简单的解决方案来解决我遇到的过滤问题。我想在现场9过滤掉下面的字母组合:RB,RC和RG。我尝试了几种方法。我尝试的第一种方法是:
Set Bigpic = Workbooks.Open("S:\NFInventory\groups\CID\CID Database\BigPic Files\BigPic 2018.xlsx", , , , , , , , True)
lrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("A1:CU" & lrow).AutoFilter Field:=9, Criteria1:="<>RB", Operator:=xlAnd, Criteria2:="<>RC", Operator:=xlAnd, Criteria3:="<>RG"
Run Code Online (Sandbox Code Playgroud)
这失败了,所以我尝试使用一个数组,但这似乎也失败了。它返回时仅RG被过滤,而其他则保留。向正确方向的任何推动都会有所帮助。
Set Bigpic = Workbooks.Open("S:\NFInventory\groups\CID\CID Database\BigPic
Files\BigPic 2018.xlsx", , , , , , , , True)
lrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("A1:CU" & lrow).AutoFilter Field:=9,
Criteria1:=Array("<>RB", "<>RC", "<>RG")
Run Code Online (Sandbox Code Playgroud) 我有一个大约有 50 张纸的 Excel 文件,我在数据的开头插入了一行。现在我想写变量名。例如:在单元格中A1我想写"code",在B1我想写"price",依此类推直到F1。
我想对所有 Excel 工作表同时执行此操作。
我尝试使用此代码:
Sub mycode()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Range("A1") = "code"
Range("B1") = "denom"
Range("C1") = "location"
Range("D1") = "area_m2"
Range("E1") = "price_$m2"
Range("F1") = "zoning"
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是我只得到了活动工作表的名称。我想要我的工作簿中所有工作表的名称。
你能建议一些修改吗?
提前致谢!