Google
 
Web itpro-blogger.blogspot.com
火曜日, 1月 27, 2009

[VB2005]Date型のOptional

▼質問
Date型をOptionalで指定したいんだ。

Nowを定数にしようとしたけどうまくいかないんだ。

どうしたらよいか教えてくれ!!


▼回答
次の様に指定すればできるから試してみてくれ!!

Optional ByVal pDate As Date = #1/1/2000#
Optional ByVal pDate As Date = #1/1/2000 1:00:00 AM#


■参考サイト
VB.NET/文法/型/Date型 - Security Akademeia
http://wiki.akademeia.info/index?VB.NET%2F%CA%B8%CB%A1%2F%B7%BF%2FDate%B7%BF


[VB2005]半角から全角に変換

▼質問
半角の数字を全角に変換したいんだ。

どうしたらできるか教えてくれ!


▼回答
StrConv関数を使えばできるよ!!

StrConv(CStr(数字), VbStrConv.Wide)

この関数は、数字以外でも変換してくれるか便利だ!

反対に全角を半角にしたい時は、次の様にすればOKだ。

StrConv(CStr(数字), VbStrConv.Narrow)


■参考サイト
@IT:.NET TIPS 文字列を全角/半角に変換するには?(VB.NET関数活用) - C#
http://www.atmarkit.co.jp/fdotnet/dotnettips/265vbhanzen/vbhanzen.html


日曜日, 1月 18, 2009

[VB2005]ExcelのValue値取得

▼質問
ExcelのValue値を取得したいんだ。

どうしたらできるか教えてくれ!

▼回答
サンプルを示すから参考にしてくれ!!



Public Shared Sub GetExcelValue(ByVal strFilePath As String, _
ByRef val(,) As Object, _
Optional ByVal maxRow As Integer = 65536)
Dim xlApp As Excel.Application = Nothing

Try

xlApp = CreateObject("Excel.Application")

If IsNothing(xlApp) Then Exit Sub

xlApp.Workbooks.Open(Filename:=strFilePath)
xlApp.WindowState = Excel.XlWindowState.xlMinimized
xlApp.Visible = False
xlApp.DisplayAlerts = False
xlApp.ScreenUpdating = False

Dim wWorksheet As Excel.Worksheet = _
CType(xlApp.ActiveWorkbook.ActiveSheet, Excel.Worksheet)

With wWorksheet
.Unprotect()

Application.DoEvents()

'Value値取得(全セルを取得するとメモリのエラーになるので注意が必要!)
val = .Range("A1:IV" & maxRow).Value

End With

GC.Collect()

Catch ex As Exception

Finally

If (Not IsNothing(xlApp)) Then xlApp.Quit()
xlApp = Nothing

GC.Collect()

End Try

End Sub



これを実行すると面白い事が起きる。

配列の始まりが1から始まるのだ!

VB6では、Dim obj(1 To 3) As Object ができたけどね!

VB.NETからは、0始まりしか作れない。痛い(>_<)

なぜ、Excelだけ1からの配列が作れるんだ!?

不思議だ!!


金曜日, 1月 16, 2009

[VB2005]System.InvalidOperationException はハンドルされませんでした。

▼質問
いきなり、次のエラーが出るようになった。

System.InvalidOperationException はハンドルされませんでした。
Message="フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクト インスタンスに設定されていません。"
Source="アセンブリ名"
StackTrace:
場所 アセンブリ名.My.MyProject.MyForms.Create__Instance__[T](T Instance) 場所 17d14f5c-a337-4978-8281-53493378c1071.vb:行 190
場所 アセンブリ名.My.MyProject.MyForms.get_frmTrendAnalyzeMenu()
場所 アセンブリ名.My.MyApplication.OnCreateMainForm() 場所 C:\パス\TrdAnalyze\My Project\Application.Designer.vb:行 35
場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
場所 アセンブリ名.My.MyApplication.Main(String[] Args) 場所 17d14f5c-a337-4978-8281-53493378c1071.vb:行 81
場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
場所 System.Threading.ThreadHelper.ThreadStart()

▼回答


This page is powered by Blogger. Isn't yours?