我正在尝试编写一个VBA函数,它接受一个包含两列的表作为输入。我想返回第2列中相应行为3的元素。基本上相当于SQL中的where子句。
代码的逻辑看起来很好,但是我得到了一个类型不匹配错误。我声明了函数As Variant,并且我想返回的数组也是As Variant。
Function FilterTable(tableName As String) As Variant
Dim table As range
Dim cell As range
Dim names As range
Dim i As Integer
Dim names_2(10
使用Angular2/4并使用服务,但我不确定为什么这种类型错误总是出现。我相信我的字体设置正确,但这显然是错误的……
错误:
ERROR in C:/Users/rutherfordc.AA/Documents/GitHub/Sweeper/src/app/people.service.ts (19,12): The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the t
ype arguments explicitly.
Type
我已经有一段时间没有使用ASP了,但是我在一个看起来很简单的赋值语句上遇到了类型不匹配错误。有人能解释一下为什么会发生这种情况吗?
这是可行的,但是当我尝试访问一个未分配的问题块时,我得到的是一个对象,而不是一个集合错误
Class Survey
public ID
public Title
public Questions
End Class
Sub Test()
Dim oSurvey
Set oSurvey = new Survey
Dim aQuestions(2)
Set aQuestions(0) = new Question
' Othe
任务是将来自不同文件的数据合并到一个要选择的file.The范围是4 cells.the输出的列向量需要在数组中(n*4分布)
Option Explicit
Option Base 1
Sub RalphieReactor()
Dim filenames() As Variant, i As Integer, A() As Variant, j As Integer, nw As Integer
Dim twb As Workbook, awb As Workbook, userrange As Range, importrange As String
Set twb = ThisWor
圆(SUMIFS($L$3:$L$14,$K$3:$K$14,0.5)/1000,0)
Dim A As Range
Dim B As Range
Set A = Range("L" & FirstRow, "L" & LastRow2)
Set B = Range("K" & FirstRow, "K" & LastRow2)
Range("T7").Formula = "=Round(SumIfs(" & A & "," &
我正在编写以下代码,它将电子表格中的值放入数组中,对它们进行排序(这里是三重排序--三个数组同时排序),最后将结果放在另一个工作表中……
问题是我得到一个子脚本超出范围“的错误信息,我真的不知道如何修复它,我似乎每次尝试对数组进行排序时都会遇到这个问题。所以一定是排序有问题... (这里称为TriFonds )
如有任何帮助,我们将不胜感激。
Option Explicit
Option Base 1
Sub Class()
Dim i As Integer, j As Integer, k As Integer
Dim nb_Actions As Long
With Workshee
根据蒸汽的压力,我使用阵列来存储蒸汽的特性。现在,我有精确的9压力特性,所以我使用静态数组。我希望更灵活,所以我想切换到动态数组。
当我在循环中使用ReDim foo(1 to i, 1 to 10)时,除了最后一行之外,我完全松散了所有数据。
当我使用ReDim Preserve foo(1 to i, 1 to 10)或ReDim Preserve(i,10)程序时,抛出“运行时错误‘9:超出范围”的错误。i从1到9。
如何在不丢失数据的情况下向数组中添加行/列?
作为VBA的初学者,我对以下问题感到困惑:
Dim DynArray() As Double
ReDim DynArray(0 To 0)
DynArray(0) = 100
ReDim Preserve DynArray(5 To 5) 'subscript out of range
DynArray(5) = 100
为什么不起作用?以及如何在VBA中更改数组的上界和/或下界,同时保留原始数组的值?谢谢。
我有这个子例程: Sub AssertTrue(condition, success, error)
If condition Then
%><div style='color:black'><%=success%></div><%
Else
%><div style='color:red'><%=error%></div><%
End If
End Sub 当我这么叫它的时候: AssertTrue IsNu
这段代码是由MySQL工作台创建的,不是我。我只是使用了GUI。
Operation failed: There was an error while applying the SQL script to the database.
Executing:
ALTER TABLE `isometr1_keyboard`.`records`
ADD CONSTRAINT `fk_records_layout_id`
FOREIGN KEY ()
REFERENCES `isometr1_keyboard`.`layouts` ()
ON DELETE NO ACTION
ON U
以下程序具有未定义的行为:
#include <stdio.h>
int main(void)
{
unsigned int x = -100; // This is fine, becomes UINT_MAX - 100
printf("%d\n", x); // This is undefined behavior.
return 0;
}
C99 7.19.6.1p8状态%d需要一个int参数。
C99 7.19.6.1p9声明“如果任何参数不是对应的转换规范的正确类型,则行为是未定义的”。
然而,gcc -Wformat
我正在阅读OCaml和wiki,上面写着:
*its static type system renders runtime type mismatches impossible*
我理解为什么,但我想,为什么这在OCaml (和FP)中如此特殊?在Java中,如何导致运行时类型不匹配?例如:
boolean a = true;
int b = a + 1;
将在编译时返回一个错误。
编辑1:
Haskell
func :: Int -> Bool
func i = if i > 0 then True else False
Java
boolean func (int i) {
我在Excel表中有几个命名范围,在这些范围中,我在会话之间存储VBA宏的数据。在加载时,我需要将数据放入多个数组(String和Booleans)。
Dim arr() As Variant
Dim rg As Range
Set rg = Sheets("Calc").Range("myRange")
arr = rg.Value2
如何将arr()键入到String或Boolean数组中,以便在宏中使用?
如果我尝试使用Variant数组,则在函数调用时得到ByRef argument mismatch errors。
或者,是否有另一种方法将范围的内容
这个程序基本上转到一个网站,并获取特定div标签中的所有链接。然后导航到每个链接,并获取这些页面中的链接。
然而,在成功获得第一个链接并转到第一个网站后,它会重新检查windows表单数据,并将类变量重置为其原始值,从而丢失所有链接。
为什么要重新加载windows表单数据,以及如何保留以前的数据?
Imports System.Text.RegularExpressions
Public Class Form
Private stage As String = "Getting Page Links"
Dim PageUrls() As String = {}
Dim P
我真的很感谢在这件事上能得到的任何帮助。
我试图遍历一个列,寻找重复的名称,然后从同一行中获取该列和其他几个数据,并将它们放入一个二维数组中,我想使用另一个函数,但它不起作用。
我真的需要你的帮助来弄清楚为什么我不能在不保留数据的情况下重定向这个数组。
Dim oRange As Range, aCell As Range, bCell As Range
Dim ws As Worksheet
Dim SearchString As String, FoundAt As String
Dim tArray() As Variant
Dim iR As Long
Dim LastRow As L
作为VBA的新手,我非常了解数组,特别是动态数组是如何工作的。我是一名工业工程专业的学生,所以我的大部分代码都是用MatLab完成的。
我的问题是:为什么下面的代码总是出现运行时错误'9‘"Subscript out out range“:
Sub FunWithArrays()
Dim DynArray()
Dim i As Integer
Dim j As Integer
j = 1
For i = 1 To 10
DynArray(j) = i
j = j + 1
ReDim DynArray(UBound(DynArray) + 1)
我有一个泛型类型的T数组,我想检查它的长度是否为0。但是,我做了一个错误,而不是Array.Length is 0,而是输入了Array is 0。当我注意到这个错误时,我想知道为什么它没有给我一个编译时错误,当我使用任何具体类型的数组,比如string、int、object,甚至dynamic时,都会出现编译时错误。显然,无论数组的底层类型是什么,数组都不能是int值为零,因此这是值得怀疑的。我尝试过其他各种int字面值、字符串字面值,甚至尝试过较少和更大的模式,所有这些都奏效了。我尝试更改数组的维度或空不稳定性(因为我最初的示例是T[,]?),我甚至尝试向T泛型添加一些约束,但这些都没有改
对于Debug.Print,一切都可以正常工作,这意味着Option Explicit捕获了一个错误,并显示了一个关于一个未定义变量的弹出。
但是,如果删除Debug.Print行(我添加了该行以查看Option Explicit是否工作),则代码将成功执行。编译也是成功的。在第二个vDailBuys语句中,不应该是"vDailyBuys“,而不是”ReDim“。
为什么这个错误没有被发现?
我使用第二个ReDim来清除数组内容,螺母确定它是否是推荐的方式,但它的工作方式像一个魅力。
Option Explicit
Option Base 1
Sub test()
Dim vDai
使用单变量时,一切都很好,而动态数组则会出现问题。
有一个带有全局变量的模块:
Option Compare Database
Option Explicit
Global gbl_numberOfPositions As Integer
Global gbl_numberOfDisciplines As Integer
Global gbl_mv_clsJobPostions() As clsJobPostion
Public Sub Init_Globals()
gbl_numberOfPositions = 0
gbl_numberOfDisciplines = 0
在VBA中,我在名为Unlock的函数中将值存储到名为PidArr的动态数组中。数组开始如下所示:
Dim PidArr() As String
ReDim PidArr(1 To 2)
插入的数据如下所示:
...within a loop
PidArr(Count) = LineStr 'this is a string containing the data.
Logging "Inserted " & PidArr(Count) 'this correctly shows the data has in
以下代码很好:
func intTest() -> Int? {
var res : Int
res = 5
return res
}
从返回类型为可选的Int的方法返回非可选Int没有问题。
现在让我们看看当返回值是可选值的元组时会发生什么:
func tupleTest() -> (Int?, Int?) {
var res : (Int, Int)
res = (5, 5)
return res
}
return res行导致错误:
错误:无法表示元组转换“(Int,Int)”到“(Int?,Int?)”(“(可选,可
我正在尝试做一个脚本,从一个2维数组返回一个单一的列,它将被用作在Rhino中绘制各种东西的数据。但是,在尝试执行此操作时,我总是遇到错误,并且我似乎找不出我的代码出了什么问题。我将我当前的函数复制如下:
Function ReturnColumn(ByVal col, ByVal array)
Dim colsize, i
colsize = UBound(array, 1)
ReDim vector(colsize)
For i = 0 To colsize
vector(i) = array(i, col)
Next
ReturnColumn = vector
End
为什么在最后一行中会出现类型不匹配错误?
Dim LineArray()
Dim Line
Dim FilePath as String
FilePath = "X:\Path\To\File.txt"
Open FilePath For Input As #1
Line Input #1, Line
Close #1
LineArray = Split(Line, vbTab)
LineArray是一个变体/变量()
行是变体/字符串。
如果我把它们都作为变体,我仍然会得到错误。
我有一个三维数组。我想从Excel中的几个模块访问这个数组。出于这个原因,我使用Public来声明它。目前,我使用以下代码:
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
我希望在启动代码时,根据数据的大小,在一定值下初始化第一个和第三个变量。
由于ReDim只能用于数组中的最后一个变量,所以我尝试这样做,尽管这是不可能的:
If x < 400 and z < 3000 Then
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
End If
对于vItemsNotInMaster(k) = vCheckItems(i)代码,一旦填充数组vItemsNotInMaster,行vItemsNotInMaster就会抛出一个类型不匹配错误。我不知道为什么-因为调用者的子变量和函数数组变量都被声明为Variants,并且类型没有根据局部变量窗口改变。
我尝试过不同的数据类型,但这确实会引发其他错误消息。
Public Sub Testing()
Dim myArray1(1 To 4) As Variant
Dim myArray2(1 To 4) As Variant
Dim myArray3 As Variant
myArra
我试图用工作表中的数据填充动态数组。我得到“错误9下标超出范围”。为什么?
Sub correct()
Dim row As Integer, i As Long
Dim constants() As Double 'this declares the dynamic array
row = 1
i = 0
ReDim constans(0) 'this resizes the array(rediminsion's the array)
Do Until ThisWorkbook.Sheets("Deg 4").Cells(row, 1).Val
可能重复:
关于一个相关但切线的问题( ),我想问一个与函数的返回类型不被视为函数签名的一部分这一事实有关的问题。
考虑以下代码:
#include <iostream>
int foo()
{
return 0;
}
int main()
{
long n = static_cast<long(&)()>(foo)(); // Error: incorrect return type
int p = static_cast<int(&)()>(foo)(); // Compiles just fine
假设我在VBScript中创建了一个动态数组
Dim myArray()
稍后,我如何检查该数组是否从未被标注维度?
Ubound(myArray) 'sub script out of range
Lbound(myArray) 'sub script out of range
IsEmpty(myArray) 'returns false
我正在尝试使用下面的代码将工作表名称添加到Excel VBA中的数组中。它只选取一个值(始终是最后一个工作表名称)。例如,如果我有两个工作表: List1和List2,它只选取List2,并为第一个工作表显示一个空值。如果我加上4,它只显示第4个,依此类推。我不确定为什么会得到空值。
Dim curSheet As Worksheet
Dim ArraySheets() As String
Dim x As Variant
For Each curSheet In ActiveWorkbook.Worksheets
If curSheet.Name Like "*List*
为什么这样做:
Dim Arr As Variant
p = 1
For i = 1 To LRow
If Sheets("Data").Range("U" & 4 + i).Value > 0 Then
ReDim Preserve Arr(1 To p, 1 To 2)
Arr(p, 1) = Sheets("Data").Range("U" & 4 + i).Value
Arr(p, 2) = Sheets("Data").Range("N" &a
我不明白为何要这样做:
Function ToNumber(ByVal sVal As String) As Double
sVal = Replace(sVal, ",", ".")
If IsNumeric(sVal) Then
ToNumber = CDbl(sVal)
Else
ToNumber = 0
End If
End Function
而这个没有(我得到的是类型错配):
Function ToNumber(ByVal sVal As String) As Double
sVal = Replace(sVal, ","
我有这样的密码。
Dim sums() As Single
dim n as integer
For n = 0 To ActiveCell.Value - 2
sums(n) = Abs(Application.WorksheetFunction.SumIf(Range(Cells(i + m, 6), Cells(j - 1, 6)), Range("F" & i + m).Value, Range(Cells(i + m, 17), Cells(j - 1, 17))))
Next n
我收到了sums(n)= ....的错误消息,我想按照公式填充数组中的
在下面的代码中,我得到了一个编译时错误:
ByRef Argument type mismatch.
但如果我将i,j的声明改为:
Dim i As Integer
Dim j As Integer
错误就会消失。为什么?
Private Sub Command2_Click()
Dim i, j As Integer
i = 5
j = 7
Call Swap(i, j)
End Sub
Public Sub Swap(ByRef X As Integer, ByRef Y As Integer)
Dim tmp As Integer
tmp = X
我正在尝试使用VBA创建一个varcov矩阵,但尽管我花了几个小时来寻找这个问题的答案,但还是无法解决它。我的问题是,我一直在下面的两个带星号的行中得到运行时错误'9‘:
Sub varcovmmult()
Dim returns()
Dim trans()
Dim Excess()
Dim MMult()
ReDim trans(ColCount, RowCount)
ReDim Excess(RowCount, ColCount)
ReDim MMult(ColCount, ColCount)
ReDim retu
我必须在一个循环中创建许多变量,所以我需要创建通用变量名(注意,为了代码的目的,我不能仅仅将要创建的对象附加到列表或集合中)
我想的代码看起来像这样(n是一个用户定义的变量,它是一个整数)。
Dim var_name As String
For i = 1 To n
var_name = "test" & i
Set var_name = Range(Cells(1, 1), Cells(i * 2, i))
Next i
我想获得这样的变量:
test1是从A1到B2的范围
test2是从A1到C4的范围
test3是从A1到D6的范围