Tag: vb.net

函数查找最后一行,但是程序忽略第一行写入

我写了下面的函数来查找任何列的最后一行: Public Function GetLastRow(ByVal rngToCheck As Excel.Range) As Long Dim rngLast As Excel.Range rngLast = rngToCheck.Find(What:="*", SearchOrder:=Excel.XlSearchOrder.xlByRows, SearchDirection:=Excel.XlSearchDirection.xlPrevious) If rngLast Is Nothing Then GetLastRow = rngToCheck.Rows.Count Else GetLastRow = rngLast.Rows.Count End If End Function 我在任何时候使用这个函数来处理一个dynamic范围,这个dynamic范围在我的项目上是好几次。 现在,我想findF列的最后一行,但从F2开始。 它必须忽略行F1,因为这是标题。 然而,它不是,我得到一个错误,它不能从string转换为双,这是预期的,因为F1是一个string(列标题),其他一切都是数据。 我不想改变我的function,因为在某些情况下,我需要从第1行下来,有时从第2行下去,这是我以为我在我的代码下面做的,但它不工作,它不断读取F1当然错误,因为F1是一个string,其余的列是双。 Dim xlWB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook) Dim xlWSEmployee As Excel.Worksheet = CType(CType(xlWB.Sheets("byEmployee"), Excel.Worksheet), Excel.Worksheet) Dim […]

如何在VB中select工作簿的工作表

我用C#编写代码,然后使用在线转换器工具在VB中进行转换 C#代码: – ExcelObj = new ExcelShet.Application(); ExcelShet.Workbook theWorkbook = ExcelObj.Workbooks.Open(filepath); ExcelShet.Sheets sheets = theWorkbook.Worksheets; ExcelShet.Worksheet worksheet = (ExcelShet.Worksheet)sheets.get_Item(1); 转换的VB代码 Dim ExcelObj As New ExcelShet.Application() Dim theWorkbook As ExcelShet.Workbook = ExcelObj.Workbooks.Open(filepath) Dim sheets As ExcelShet.Sheets = theWorkbook.Worksheets Dim worksheet As ExcelShet.Worksheet = DirectCast(sheets.get_Item(1), ExcelShet.Worksheet) 现在问题是 – VB没有函数get_item(object index) Dim worksheet As ExcelShet.Worksheet = DirectCast(sheets.get_Item(1), ExcelShet.Worksheet) […]

从Excel表导入数据

使用MS VS 2013和SQL Server 2012 我正在编写一个控制台应用程序,从Excel复制一些数据到一个SQL表。 我不是很远。 下面的代码打开文件,然后2-3秒后,我得到一个错误。 有错误是 – 其他信息:无法将“System .__ ComObject”types的COM对象转换为“Microsoft.Office.Interop.Excel.Worksheet”types的接口。 此操作失败,因为具有IID“{000208D8-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(exception来自HRESULT:0x80004002(E_NOINTERFACE)) 。 Imports Microsoft.Office.Interop.Excel Imports Microsoft.Office.Interop Imports System.Data.SqlClient Imports System.IO Module Module1 Sub Main() Dim xlApp As Application Dim xlWorkBookSrc As Excel.Workbook Dim xlWorkBookDest As Excel.Workbook Dim xlWorkSheetSrc As Excel.Worksheet Dim xlWorkSheetDest As Excel.Worksheet xlApp = New Excel.Application xlApp.Visible = True xlApp.DisplayAlerts […]

Visual Basic和Javascript之间的舍入误差

我在一个Excel文件中find一个VB脚本来实现Runge-Kutta积分来求解一个微分方程。 我把这个实现一行一行地转换成Javscript。 但是,Javascript程序并没有像VB那样产生完全相同的结果……这些数字已经足够接近于可以接受的程度,但是我相信VB的实现是正确的,因为它是博士论文的一部分。 所以这让我相信我在NodeJS上运行的Javascript实现受到一些四舍五入的影响。 特别是,我注意到,当我不断地加0.01到我的时间计数器,值最终不能被正确地表示,并且我得到像5.299999999999999934而不是5.3值。 这对我来说是有道理的,因为我已经在一些书中读到了Javascript的怪癖。 我的问题是 我的观察是否正确,Visual Basic不会遭受同样的精度缺点? 这是否意味着简单的香草JavaScriptmath本质上比普通香草VBmath更不准确? (不使用其他math库)。 如果我把我的时间variables夹紧,如在强制值为5.30,而不是5.299999999,这实际上会使我的结果更正确吗? 编辑:使用Math.round(X*100)/100钳位将所有时间值的输出更改为只有2个小数位,但实际上并没有改变任何计算的值。

使用vb.net查找Excel表格中的特定数据

我一直试图通过WinForm应用程序在Excel中查找特定数据,然后尝试使用vb.net获取同一行中的下一个值。 Example: ElementName Value Age 24 Name John Clan Music Rock 假设,如果我想find年龄。 那么我想让代码返回为24从Excel文件中search它。 我尝试将整个Excel数据拖入数据集,但没有帮助。 请引导我。

为什么我必须投Excel.Cells但不Excel.End?

我从MSDN得到以下代码片段。 我很好奇:为什么我必须将rng.Cells Object转换为Excel.Range ,为什么我不必将rng.End Object转换为Excel.Range 。 由于离开Directcast给我的错误,虽然Option Strict On从Object到Excel.Range的隐式转换是不允许的。 所以我查了MSDN的Range.End属性 ,它说,返回types是一个Range对象,这就是为什么我不必将该types转换为Excel.Range 。 但看着Range.Cells属性我很困惑,因为它说, Range.Cells返回一个Excel.Range object 。 所以任何人都可以向我展示为什么我必须施放Range.Cells而不是Range.End ? Private Function GetDocPropRange() As Excel.Range Dim rng As Excel.Range = _ ThisApplication.Range("DocumentProperties") Dim rngStart As Excel.Range = _ DirectCast(rng.Cells(1, 1), Excel.Range) Dim rngEnd As Excel.Range = _ rng.End(Excel.XlDirection.xlDown).Offset(0, 1) Return ThisApplication.Range(rngStart, rngEnd) End Function

为什么我的GUI不能更新?

我正在创build一个程序,通过成千上万的Excel单元格,并分割string和表单,并根据这些数据填充图表。 我遇到的问题是与GUI。 我把程序分成两个独立的类。 一个处理Excel数据,另一个是WPF窗体的MainWindow类。 问题在于MainWindow没有随着信息的更新而更新。 它应该更新一个对话框和一个进度条,通过这些步骤进行显示。 它没有做任何事情,但终于出现在最后完全充满,就好像它一直在这样做。 最初是build议我把职责分成多个线程,我已经这样做了,但似乎并不奏效。 这是我处理线程的方式吗? 我可以根据要求发布尽可能多的代码,但是这是很多的,所以如果它是简单的,我不想把它全部转储。 Private Sub runButton_Click(sender As Object, e As RoutedEventArgs) Handles runButton.Click If FillCheck() = True Then program = New ExcelClass(dataText.Content.ToString, saveText.Content.ToString) Dim excelThread As New System.Threading.Thread(AddressOf program.beginProgram) excelThread.Start() checkUpdate() ElseIf FillCheck() = False Then MsgBox("You must select both the file to get the data from and […]

按要求退出Excel实例作为类成员

我试图创build一个类,我想用excel实例工作,我想要退出excel实例按要求(正如在这个答案中提到的。仍然能够正确debugging我分离垃圾收集器的方式如下: Imports Excel = Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim xlsInst As New ExcelInst GC.Collect() GC.WaitForPendingFinalizers() End Sub End Class Public Class ExcelInst Sub New() Dim myxlApp As New Excel.Application Dim myxlWb As Excel.Workbook '~~> Add a new Workbook myxlWb = myxlApp.Workbooks.Add '~~> Display Excel myxlApp.Visible […]

当从vb.net中删除单元格时,从'Object(,)'types转换为'String'types无效

我试图删除在范围B2到T5000,以字hello开头的所有单元格,但是我不断得到从types'对象(,)'到types'string'的转换不是有效的错误。 任何帮助,将不胜感激。 Dim xlCell As Excel.Range = Nothing xlCell = xlWsheet2.Range("B2:T5000") For Each cell In xlCell If xlCell.Value IsNot Nothing Then If CStr(xlCell.Value).StartsWith("Hello") Then xlCell.Delete() End If End If Next End If End If Next

VB.NET TryParse返回False,虽然有效的date通过

我在VB.NET中创build了一个检查有效date的函数。 function如下: Public Shared Function IsDate(obj As [Object]) As Boolean Dim strDate As String = obj.ToString() Dim dt As DateTime = DateTime.MinValue If DateTime.TryParse(strDate, dt) AndAlso dt <> DateTime.MinValue AndAlso dt <> DateTime.MaxValue Then Return True Else Return False End If End Function 我将一个值传递给我认为是有效date的函数。 我的testing值是49278,应该对应于2034年11月30日的date。 然而我的function告诉这不是一个有效的date。 我不明白为什么。 这里发生了什么?