Tag: 全局variables

在Excel中使用一个variables为COUNTIF

第一次问题,我希望比我做这个更容易。 我可以在COUNTIF公式中使用一个variables吗? 目前我的公式是: =COUNTIF($C$2:$C$415,R6) 我想有$415作为我的variables。 我已经尝试了一些方法: D1=415=COUNTIF($C$2:$C$(D1),R6) .. 但显然会得到一个错误。 我需要这个的原因是列C将不断增加,因为我添加更多的行。 而不是去我的每个公式,并更新415至416,417等,我想只定义一个单元格,可以是我的variables,或总行。 目前列C可以有空白的单元格,所以我不能有一个macrosfind下一个空单元格..但是我确实有列A与常量填充单元格,并停在最后一张票。 但是,列A与COUNTIF无关。 更新1 我也想提一下,我会在电子表格的许多公式中使用这个variables。 不仅COUNTIF的。 另外, COUNTIF包含文本。 更新2 其实我知道了! 我正在使用这个公式: =COUNTIF(INDIRECT("C"&D1&":A"&D2),R6) 我把D1=2和D2=415 ,并将更新单元格D2,我有多less行。 我想我只需要彻底地问这个问题来完全理解我想要的东西! 提前感谢您的帮助,提示和build议。

`Array`和`Array()`有什么区别?

我可以这样声明一个数组: Dim arrTest() As Variant 或者如此: Dim arrTest2 As Variant arrTest2 = Array() 然而,第一个只能作为这样的一个parameter passing: Sub(ByRef arrTest() As Variant) 第二个是这样的: Sub(ByRef arrTest2 As Variant) 你可以用第二个来做到这一点: ReDim arrTest2(UBound(arrTest2) + N) 但不是第一个。 声明第一种方法的variables数组和第二个声明的variables数组之间有什么区别? 它们都是相同的vartype() – 8204 – Array of variants 为什么macros对待他们不同?

VBA全局variables

我有以下代码来处理电子表格VBAmacros上的用户表单: Option Explicit Public saved_vocab As String Public saved_num As String Public saved_def As String Public saved_ex As String Private Sub Save_Click() Dim low As Integer Dim high As Integer Dim selected As Integer low = 1 high = Cells(1, 1).End(xlDown).Row Range(Cells(low, 1), Cells(high, 1)).Find(what:=vocab.Text, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate selected […]

我应该使用公式中的布尔值,true,“true”还是true()

在编写Excel公式时,是否将值设置为true,“true”或true()会有所帮助? 换句话说,以下哪个是最好的? 还是取决于情况? if (A1 = 1, true, false) if (A1 = 1, "true", "false") if (A1 = 1, true(), false())

使用VBA引用已命名的Excelvariables

情况:我正在使用Excel 10.我有一个命名variables,使用公式来计算它的值。 这是一个命名variables,而不是命名范围(在“名称pipe理器”中,名称“MaxDate”是指“= MAX(Sheet1!B:B)”,其中B列是date列表)。 计算的值本身并不出现在任何单元格中,而是用于电子表格中的各种公式中。 我的问题:如何在VBA代码中引用这个命名variables? 使用范围(“MaxDate”)。值不起作用。 我知道我可以简单地把这个值放到一个单元格中,然后引用这个单元格,但是我想find一个直接引用这个variables的方法。 任何想法?谢谢。

有一个常量为Datevariablestypes的默认值,一个la vbNullString为stringtypes?

我有一列date。 这些将被合并到对象中,每行一个,以及该行中的其他数据。 但是,date列中的某些单元格是空的。 当我testing我创build一个datevariables,并将其值设置为空单元格的值。 我msgbox'ddate的新值,发现它是“上午12:00”。 是否有一个常量内置于VBA来表示这个值,所以我可以做类似的testing: If myDate = vbNullDate Then

全局variables自动重置

我想定义一个全局variables作为打开文件的工作表,所以我使用了下面的代码: 在Module1中: Public mySheet As Worksheet 在ThisWorkbook: Sub Workbook_Open() Set mySheet = Sheet1 End Sub 然后,我想使用mySheet在各个过程中引用这个特定的工作表,其中一些引用了这个工作表打开了一个新文件。 它最初工作 – 当我打开文件的variables设置,并涉及mySheet.Unprotect , mySheet.Protect和mySheet.Range("A1")的macros的作品。 但是,当我尝试再次运行它时,我得到一个错误的Object variable or With block variable not set ,debugging带我到mySheet.Unprotect行,这是第一次引用表。 我怎样才能定义这个工作表在一个全局variables,使定义坚持? 作为参考,我指的特定的macros是在下面,虽然我有一个类似的问题与不同的代码位: Sub mySub() mySheet.Unprotect With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = False If .Show <> 0 Then mySheet.Range("A1") = .SelectedItems(1) End If End With mySheet.Protect End Sub

Excelvariables范围创build图表

所以基本上我需要能够select最后一行来创build一个图表使用这种方法。 Sub createchart2() lastA = Range("A1").End(xlDown).Row ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Range("Main!$A$3:$A$10") End Sub 我需要A10的范围才能够selectA列中的最后一行。

XLmacros可以select一个范围,可变的起始和结束行?

我是一个前线技术。 macros编码并不是新鲜事物,但我的大部分经验是在WordPerfectmacros中。 我正在尝试编写一个Excelmacros,它将select一系列文件中的范围并对其执行操作。 期望的范围是在一组常量列中,但是是一组可变的行。 静态值标记开始和结束行,但这些行将随每个数据文件而变化。 我遇到的问题是,当我录制macros时,XL不会logging我的光标移动(Ctrl-Up,Ctrl-Shift-Home等),它会logging我正在处理的绝对单元格地址。 由于起始行和结束行随每个数据文件而不同,所以绝对单元格引用将不起作用。 任何人都可以提供任何提示,如何我可以/应该这样做? 在此先感谢詹姆斯

用户窗体中的命名范围(Excel)的variables给我一个错误

我对Excel-VBA(实际上任何一种编程)都很陌生,我正在寻求帮助。 我正在尝试在Userform(Excel-VBA)中创build一个命名范围的variables,但是当我尝试使用创build的variables的macros时,我收到一个错误: 运行时错误'1004':对象'_Worksheet'的方法'范围'失败 如何重现: 1)用一个标签(在我的代码中命名为test1)制作一个用户窗体。 2)为macros制作模块。 这是Userform和模块的代码。 用户表单 Private Sub UserForm_Initialize() Dim wsTest As Worksheet Dim rnTest As Range Set wsTest = Sheets("Test") MsgBox wsTest.Name Set rnTest = wsTest.Range("NamedRange") MsgBox rnTest.Name Me.Test1.Caption = Format(wsTest.Range("rnTest")(1).Value, "$#,##0") End Sub 和模块 Sub NR_Test() UserForm1.Show False End Sub variables'wsTest'起作用。 我知道这一点,因为当我input名称pipe理器(NamedRange)中看到的命名范围名称时,macros的工作。 我search了Stackoverflow和其他资源来寻找一个解决scheme。 大多数post告诉我,我需要使用“设置”从一个范围,使一个variables,但不幸的是,这是不够的。 我错过了一些重要的东西,我不能把手指放在上面。 任何帮助将非常感激。 如果有任何问题,请不要犹豫,问。 干杯,西蒙