小编T.M*_*.M.的帖子

删除VBA数组的第一个元素

有没有办法删除数组的第一个元素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

arrays excel vba excel-vba

10
推荐指数
2
解决办法
1万
查看次数

VBA - 正确销毁无模式UserForm实例

介绍:

我知道 - 显示UserForms - 这是最好的做法

  • 处理QueryCloseuserform代码(If CloseMode = vbFormControlMenu ...)
  • Unload Me其中不做,只是一个胆小的Me.Hide指令(在阻止[x] -it和最终的自毁之后Cancel = True)
  • 在[class]代码中设置相关变量/ [property](例如.IsCancelled=True)
  • 为了能够通过调用代码卸载UF .

有用的链接

一个出色的概述"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)

excel vba excel-vba userform

7
推荐指数
1
解决办法
3391
查看次数

获取字符值大于十六进制FFFF的Unicode字符

问题

ChrW则charCode参数是一个Long标识字符,但不允许值大于65535(十六进制值&HFFFF) -见MS帮助

例如可以在Unicode十六进制块中 找到其他符号和象形文字1F300-1F5FF。因此,我找不到任何方法来表示建议的十六进制值?1F5121F513对于 恰好在此charcode块中的打开或关闭的挂锁符号,从当然开始,将导致无效的过程/参数调用。ChrW(&H1F512)

最近的答案找到了一个较低的字符码 (通过ChrW(&HE1F7)ChrW(&HE1F6))的可能不稳定的选择,但是我正在寻找一种方法来获取较高的字符码表示形式。

有没有一种系统的方法来表达在十六进制代码块中找到的Unicode字符,而不是FFFF通过VBA或其他方法来解决?

unicode excel vba

7
推荐指数
2
解决办法
1062
查看次数

Excel-VBA - 在没有循环或 API 调用的情况下在数据字段数组中插入新的第一列

介绍

去年@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)

arrays excel vba matrix

4
推荐指数
1
解决办法
2980
查看次数

查找数组名称

我有这个代码:

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)

我想更改它以打印变量名称 Array1Array2. 这可能吗?

arrays vba

1
推荐指数
1
解决办法
84
查看次数

有没有办法在VBA中使用Array函数创建二维数组>

我想快速创建一个 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)是无效的。

我想我太懒了,无法设置循环,但单行方法会紧凑且有用。

arrays vba type-2-dimension

1
推荐指数
1
解决办法
4582
查看次数

VBA过滤超过2个条件

我正在寻找一种简单的解决方案来解决我遇到的过滤问题。我想在现场9过滤掉下面的字母组合:RBRCRG。我尝试了几种方法。我尝试的第一种方法是:

  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)

excel vba filter

0
推荐指数
1
解决办法
328
查看次数

如何在所有工作表的特定单元格中写入相同的信息?

我有一个大约有 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)

问题是我只得到了活动工作表的名称。我想要我的工作簿中所有工作表的名称。

你能建议一些修改吗?

提前致谢!

excel vba

0
推荐指数
1
解决办法
564
查看次数

标签 统计

vba ×8

excel ×6

arrays ×4

excel-vba ×2

filter ×1

matrix ×1

type-2-dimension ×1

unicode ×1

userform ×1