▼質問
Excelを使った印刷はしたことがあるんだけど、テキスト文字列を直接印刷したことはないんだ。
どうしたらいいんだい!?
▼回答
PrintDocumentコンポーネント(System.Drawing.Printing名前空間)を使えばできるよ。
サンプルを教えてやるから参考にしてくれ!
ボタンのクリックイベントに下記を記述する。
'印刷処理実行
Me.PrintDocument1.Print()
PrintDocument1コンポーネントのイベントを下記のように記述すればOK!
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim yPos As Single = 0
Dim count As Integer = 0
Dim line As String = Nothing
'フォント設定
Dim printFont As Font = New Font("MS 明朝", 10)
'ページ余白(内側部分)を取得
Dim topMargin As Single = e.MarginBounds.Top
Dim leftMargin As Single = e.MarginBounds.Left
'ページ行数取得.
Dim linesPerPage As Single = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)
Dim stream As New IO.StringReader(テキスト文字列)
'文字列ストリーム印刷.
While (count < linesPerPage)
line = stream.ReadLine()
If (line Is Nothing) Then
Exit While
End If
yPos = topMargin + count * printFont.GetHeight(e.Graphics)
e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
count += 1
End While
'追加ページの印刷があるかチェックする.
If Not (line Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
stream.Close()
End Sub
■参考サイト
Windowsアプリケーションで印刷を行うには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/393printdoc/printdoc.html
印刷のテストは、PDFに出力するようにすれば印刷のデバックがやり易くなるので、下記の
ソフトはお奨めだ。しかも、フリーソフトだからお得!?
XLsoft エクセルソフト : activePDF 無料 PDF 作成/変換ソフトウェア PrimoPDF 日本語版 - ホーム
http://www.xlsoft.com/jp/products/primopdf/index.html
木曜日, 11月 22, 2007
水曜日, 11月 21, 2007
[VB2005]フォルダやファイルの列挙方法
▼質問
コンボボックスに決められたフォルダのファイルを一覧で表示したいんだ。どうしたらいいの?
▼回答
次のようにすればできるよ。
For Each strPath As String In System.IO.Directory.GetFileSystemEntries("C:\temp", "*")
Dim strDir() As String = Split(strPath, "\")
ComboBox1.Items.Add(strDir.GetValue(strDir.Length - 1))
Next strPath
■参考サイト
Visual Basic 6.0 と Visual Basic .NET とのフォルダやファイルの列挙方法の違いについて
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/File/
コンボボックスに決められたフォルダのファイルを一覧で表示したいんだ。どうしたらいいの?
▼回答
次のようにすればできるよ。
For Each strPath As String In System.IO.Directory.GetFileSystemEntries("C:\temp", "*")
Dim strDir() As String = Split(strPath, "\")
ComboBox1.Items.Add(strDir.GetValue(strDir.Length - 1))
Next strPath
■参考サイト
Visual Basic 6.0 と Visual Basic .NET とのフォルダやファイルの列挙方法の違いについて
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/File/
土曜日, 11月 17, 2007
[VB2005]Namespace My(ApplicationEvents.vb)
▼質問
「Namespace My(ApplicationEvents.vb)」って何?
▼回答
・VB2005から新しく導入された機能らしい。
・「My」を使うと、いろいろなことがとても簡単にできるらしい。
・My.Applicationを使うと、開いているすべてのフォームにアクセスしたり、ハンドルしていない
すべての例外をキャッチしたりできるらしい。
↑これはいろいろできそうな機能である。使えそうである!
・My.Computerを使うと、ファイルやフォルダを簡単に制御したり、レジストリにアクセスしたり
できるらしい。
■参考サイト
VB Myの用法 - My, My.Application, My.Computer
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard37.htm
「Namespace My(ApplicationEvents.vb)」って何?
▼回答
・VB2005から新しく導入された機能らしい。
・「My」を使うと、いろいろなことがとても簡単にできるらしい。
・My.Applicationを使うと、開いているすべてのフォームにアクセスしたり、ハンドルしていない
すべての例外をキャッチしたりできるらしい。
↑これはいろいろできそうな機能である。使えそうである!
・My.Computerを使うと、ファイルやフォルダを簡単に制御したり、レジストリにアクセスしたり
できるらしい。
■参考サイト
VB Myの用法 - My, My.Application, My.Computer
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard37.htm
月曜日, 11月 12, 2007
[VBA]リストボックス(ListBox)
▼質問
複数の列を表示するリストボックス(ListBox)を作成するにはどうしたらいいの?
▼回答
ユーザフォーム(UserForm)にリストボックス(ListBox)を貼り付けて次のコードを
UserForm_Initialize()に記述する。
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = 20 & ";" & 10
Call ListBox1.AddItem(",", 0)
ListBox1.list(0, 0) = "列1"
ListBox1.list(0, 1) = "列2"
これでもいける?
Dim column(1, 1) As Variant
column(0, 0) = "列1": column(1, 0) = "列2"
ListBox1.column() = column
▼質問
見出しを作成するにはどうしたらいいの?
▼回答
次のコードを書いてみたがエラーが発生してしまう。なぜ?
ListBox1.ColumnCount = 2
ListBox1.RowSourceType = "Value List"
ListBox1.RowSource = "列1;列2"
ListBox1.TextColumn = 3
ListBox1.ColumnWidths = 20 & ";" & 10
ListBox1.ColumnHeads = True
エラーの内容は、RowSourceTypeで実行時エラー'13'の「型が一致しません。」が発生する。
RowSourceTypeはAccessしか使えないのかな?
今度は、RowSourceTypeをコメントにして実行してみると次行のRowSourceでエラーが発生する。
エラーの内容は、実行時エラー'380'の「RowSourceプロパティを設定できません。プロパティの
値が不正です。」と・・・。
ダメダメだー!!
諦めよう。。。(T_T)
複数の列を表示するリストボックス(ListBox)を作成するにはどうしたらいいの?
▼回答
ユーザフォーム(UserForm)にリストボックス(ListBox)を貼り付けて次のコードを
UserForm_Initialize()に記述する。
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = 20 & ";" & 10
Call ListBox1.AddItem(",", 0)
ListBox1.list(0, 0) = "列1"
ListBox1.list(0, 1) = "列2"
これでもいける?
Dim column(1, 1) As Variant
column(0, 0) = "列1": column(1, 0) = "列2"
ListBox1.column() = column
▼質問
見出しを作成するにはどうしたらいいの?
▼回答
次のコードを書いてみたがエラーが発生してしまう。なぜ?
ListBox1.ColumnCount = 2
ListBox1.RowSourceType = "Value List"
ListBox1.RowSource = "列1;列2"
ListBox1.TextColumn = 3
ListBox1.ColumnWidths = 20 & ";" & 10
ListBox1.ColumnHeads = True
エラーの内容は、RowSourceTypeで実行時エラー'13'の「型が一致しません。」が発生する。
RowSourceTypeはAccessしか使えないのかな?
今度は、RowSourceTypeをコメントにして実行してみると次行のRowSourceでエラーが発生する。
エラーの内容は、実行時エラー'380'の「RowSourceプロパティを設定できません。プロパティの
値が不正です。」と・・・。
ダメダメだー!!
諦めよう。。。(T_T)
火曜日, 10月 30, 2007
[VB2005]「Option Strict On では、遅延バインディングを使用できません。」エラー
▼質問
「Option Strict On では、遅延バインディングを使用できません。」のエラーが発生する。
▼回答
問題1
Private Sub TrnPictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox.Click
Dim x as Double
x = sender.MousePosition.X()
End Sub
対応1
x = PointToClient(MousePosition).X
問題2
Dim obj As Object
obj = OraDataBase.CreateDynaset(strSql, 0)
Debug.Print obj.Fields("FIELDS_NAME").Value
対応2
下記の参照を追加する。
参照名:Oracle InProc Server 5.0 Type Libray
Imports OracleInProcServer
Dim obj As OracleInProcServer.OraDynaset
obj = CType(CType(OraDatabase, OracleInProcServer.OraDatabase).CreateDynaset(strSql, 0), OraDynaset)
Debug.Print DirectCast(DirectCast(obj.Fields, OracleInProcServer.OraFields)("FIELDS_NAME"), OracleInProcServer.OraField).Value)
「Option Strict On では、遅延バインディングを使用できません。」のエラーが発生する。
▼回答
問題1
Private Sub TrnPictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox.Click
Dim x as Double
x = sender.MousePosition.X()
End Sub
対応1
x = PointToClient(MousePosition).X
問題2
Dim obj As Object
obj = OraDataBase.CreateDynaset(strSql, 0)
Debug.Print obj.Fields("FIELDS_NAME").Value
対応2
下記の参照を追加する。
参照名:Oracle InProc Server 5.0 Type Libray
Imports OracleInProcServer
Dim obj As OracleInProcServer.OraDynaset
obj = CType(CType(OraDatabase, OracleInProcServer.OraDatabase).CreateDynaset(strSql, 0), OraDynaset)
Debug.Print DirectCast(DirectCast(obj.Fields, OracleInProcServer.OraFields)("FIELDS_NAME"), OracleInProcServer.OraField).Value)
水曜日, 10月 24, 2007
[HTML]INPUTタグのdisabled
▼質問
INPUTタグでdisabledを指定しても有効にならないのはどうしてかな?
▼回答
スタイルシート(CSSファイル)などでcursorにpointerを指定していないか確認してみてくれ!
これをしているとdisabledを指定しても有効にならないんだ。
cursorのpointerをautoにしてみてくれ!!
どうだったかな?
これでも駄目でした(T_T)
FORMタグが悪さしているようです?!
諦めて他の方法にすることにしました。。。。
と、思ったら気がつきました。
下記の関数をフォームロードで処理をしていました。(T.T)
function buttonDisabled( flag ) {
var loop ;
with ( document.form1 ) {
for ( loop = 0 ; loop < elements.length ; loop++ ) {
if ( elements[loop].type == "button" ) {
elements[loop].disabled = flag;
}
}
}
}
これは、FORMタグで囲まれたボタンのみをパラメータフラグの内容でdisabledを
制御している関数で、これが悪さしていたようです。(涙)
■参考サイト
cursor CSS辞典
http://www.seo-equation.com/html/css/cursor
INPUTタグでdisabledを指定しても有効にならないのはどうしてかな?
▼回答
スタイルシート(CSSファイル)などでcursorにpointerを指定していないか確認してみてくれ!
これをしているとdisabledを指定しても有効にならないんだ。
cursorのpointerをautoにしてみてくれ!!
どうだったかな?
これでも駄目でした(T_T)
FORMタグが悪さしているようです?!
諦めて他の方法にすることにしました。。。。
と、思ったら気がつきました。
下記の関数をフォームロードで処理をしていました。(T.T)
function buttonDisabled( flag ) {
var loop ;
with ( document.form1 ) {
for ( loop = 0 ; loop < elements.length ; loop++ ) {
if ( elements[loop].type == "button" ) {
elements[loop].disabled = flag;
}
}
}
}
これは、FORMタグで囲まれたボタンのみをパラメータフラグの内容でdisabledを
制御している関数で、これが悪さしていたようです。(涙)
■参考サイト
cursor CSS辞典
http://www.seo-equation.com/html/css/cursor
金曜日, 10月 12, 2007
[VB2005]数値入力制限
▼質問
テキストボックスで数値だけを入力できるようにしたいんだ。どうすればいい?
▼回答
KeyPressイベントで下記の関数を呼べばできるよ。
Public Sub KeyNumericOnly(ByRef e As System.Windows.Forms.KeyPressEventArgs)
'数値キーをチェックする.
If (Not e.KeyChar Like "[0-9]") Then e.KeyChar = ""
End Sub
これだけでは駄目なのね(?.?)
これだとバックスペースが使えなくなるのね。
だからこの関数を呼ぶ前に次のコードを記述するのね。
If (Asc(e.KeyChar) = System.Windows.Forms.Keys.Back) Then Exit Sub
他にも、プロパティのMaxLengthを指定しないと入力桁数の制限ができないのね。
これで、OKかな!?
テキストボックスで数値だけを入力できるようにしたいんだ。どうすればいい?
▼回答
KeyPressイベントで下記の関数を呼べばできるよ。
Public Sub KeyNumericOnly(ByRef e As System.Windows.Forms.KeyPressEventArgs)
'数値キーをチェックする.
If (Not e.KeyChar Like "[0-9]") Then e.KeyChar = ""
End Sub
これだけでは駄目なのね(?.?)
これだとバックスペースが使えなくなるのね。
だからこの関数を呼ぶ前に次のコードを記述するのね。
If (Asc(e.KeyChar) = System.Windows.Forms.Keys.Back) Then Exit Sub
他にも、プロパティのMaxLengthを指定しないと入力桁数の制限ができないのね。
これで、OKかな!?
木曜日, 10月 11, 2007
[Access]オラクルODBCドライバ
▼質問
ODBCの設定でOracle(オラクル)に接続しようとすると下記のエラーで接続できないんだ。
接続できませんでした。SQLState=IM004
[Microsoft][ODBC Driver Manager] SQL_HANDLE_ENVでのドライバの SQLAllocHandle は失敗しました。
どうしてなんだ?
▼回答
ODP.NETをインストールしたことはないかい?
それをインストールするとODBCに接続できなくなることがあるんだ。
原因は、Oracle Homeの優先順位が変わるからなんだ。
対策方法の手順は下記の通りだ。
1.「Oracle - OraDb10g_home1」→「Oracle Installation Products」→「Universal Installer」を
起動する。
2.「インストールされた製品(P)...」をクリックする。→「インベントリ」ダイアログが表示される。
3.「環境(E)」タブをクリックする。
4.「ODACHome1」より「OraClient10g_home1」の順位が上位になるように「↑」「↓」ボタンで
変更する。
5.「適用(A)」→「閉じる(C)」ボタンの順にボタンをクリックして終了。
■参考サイト
yukotan hour: 6月 2007
http://yukotan.blogspot.com/2007_06_01_archive.html
ODBCの設定でOracle(オラクル)に接続しようとすると下記のエラーで接続できないんだ。
接続できませんでした。SQLState=IM004
[Microsoft][ODBC Driver Manager] SQL_HANDLE_ENVでのドライバの SQLAllocHandle は失敗しました。
どうしてなんだ?
▼回答
ODP.NETをインストールしたことはないかい?
それをインストールするとODBCに接続できなくなることがあるんだ。
原因は、Oracle Homeの優先順位が変わるからなんだ。
対策方法の手順は下記の通りだ。
1.「Oracle - OraDb10g_home1」→「Oracle Installation Products」→「Universal Installer」を
起動する。
2.「インストールされた製品(P)...」をクリックする。→「インベントリ」ダイアログが表示される。
3.「環境(E)」タブをクリックする。
4.「ODACHome1」より「OraClient10g_home1」の順位が上位になるように「↑」「↓」ボタンで
変更する。
5.「適用(A)」→「閉じる(C)」ボタンの順にボタンをクリックして終了。
■参考サイト
yukotan hour: 6月 2007
http://yukotan.blogspot.com/2007_06_01_archive.html
日曜日, 10月 07, 2007
[VBA]R1C1形式とA1形式
▼質問
R1C1形式をを英文字のA1形式に変換するにはどうしたらいいの?
▼回答
アクティブセルのR1C1形式・A1形式を取得するサンプルを教えておくよ。
Dim strRowCol As String
Dim strTXlA1 As String
Dim strTXlR1C1 As String
Dim strFXlA1 As String
Dim strFXlR1C1 As String
'1:1
strRowCol = Excel.ActiveCell.Row & ":" & Excel.ActiveCell.Column
'$A$1
strTXlA1 = Excel.ActiveCell.Address(True, True, Excel.XlReferenceStyle.xlA1)
'R1C1
strTXlR1C1 = Excel.ActiveCell.Address(True, True, Excel.XlReferenceStyle.xlR1C1)
'A1
strFXlA1 = Excel.ActiveCell.Address(False, False, Excel.XlReferenceStyle.xlA1)
'R[1]C[1]
strFXlR1C1 = Excel.ActiveCell.Address(False, False, Excel.XlReferenceStyle.xlR1C1)
'A$1
Debug.Print Excel.ActiveCell.Address(True, False, Excel.XlReferenceStyle.xlA1)
'R1C[1]
Debug.Print Excel.ActiveCell.Address(True, False, Excel.XlReferenceStyle.xlR1C1)
'$A1
Debug.Print Excel.ActiveCell.Address(False, True, Excel.XlReferenceStyle.xlA1)
'R[1]C1
Debug.Print Excel.ActiveCell.Address(False, True, Excel.XlReferenceStyle.xlR1C1)
R1C1形式をを英文字のA1形式に変換するにはどうしたらいいの?
▼回答
アクティブセルのR1C1形式・A1形式を取得するサンプルを教えておくよ。
Dim strRowCol As String
Dim strTXlA1 As String
Dim strTXlR1C1 As String
Dim strFXlA1 As String
Dim strFXlR1C1 As String
'1:1
strRowCol = Excel.ActiveCell.Row & ":" & Excel.ActiveCell.Column
'$A$1
strTXlA1 = Excel.ActiveCell.Address(True, True, Excel.XlReferenceStyle.xlA1)
'R1C1
strTXlR1C1 = Excel.ActiveCell.Address(True, True, Excel.XlReferenceStyle.xlR1C1)
'A1
strFXlA1 = Excel.ActiveCell.Address(False, False, Excel.XlReferenceStyle.xlA1)
'R[1]C[1]
strFXlR1C1 = Excel.ActiveCell.Address(False, False, Excel.XlReferenceStyle.xlR1C1)
'A$1
Debug.Print Excel.ActiveCell.Address(True, False, Excel.XlReferenceStyle.xlA1)
'R1C[1]
Debug.Print Excel.ActiveCell.Address(True, False, Excel.XlReferenceStyle.xlR1C1)
'$A1
Debug.Print Excel.ActiveCell.Address(False, True, Excel.XlReferenceStyle.xlA1)
'R[1]C1
Debug.Print Excel.ActiveCell.Address(False, True, Excel.XlReferenceStyle.xlR1C1)
水曜日, 9月 26, 2007
スクリプト
■参考サイト
【Microsoft TechNet: スクリプト センター】
http://www.microsoft.com/japan/technet/scriptcenter/scripts/default.mspx
【Microsoft TechNet: スクリプト センター】
http://www.microsoft.com/japan/technet/scriptcenter/scripts/default.mspx
右クリック(コンテクストメニュー)
■参考サイト
【WEBプログラミング NOW!: IE7β2(日本語版)とGoogle検索】
http://shimax.cocolog-nifty.com/search/2006/05/ie72google_ce28.html
【【JavaScript】外部プログラム実行できますか? IEの選択文字列を、Perlスクリプトに渡したい http://www.hatena.ne.jp/1131762882 という質問をしたら、JavaScriptででき.. - 人力検索はてな】
http://q.hatena.ne.jp/1131779952
【WEBプログラミング NOW!: IE7β2(日本語版)とGoogle検索】
http://shimax.cocolog-nifty.com/search/2006/05/ie72google_ce28.html
【【JavaScript】外部プログラム実行できますか? IEの選択文字列を、Perlスクリプトに渡したい http://www.hatena.ne.jp/1131762882 という質問をしたら、JavaScriptででき.. - 人力検索はてな】
http://q.hatena.ne.jp/1131779952
日曜日, 9月 23, 2007
[VBA]月の日数
▼質問
月の日数をを知りたいんだけど・・・。どうしたらできるの?
▼回答
次の関数で取得することができるよ。
Public Function DaysInMonth(ByVal day As Date) As Integer
Dim NextMonth As Variant
Dim EndOfMonth As Variant
NextMonth = DateAdd("m", 1, day)
EndOfMonth = NextMonth - DatePart("d", NextMonth)
DaysInMonth = DatePart("d", EndOfMonth)
End Function
■参考
[AC97]指定された月の日数を取得する方法
http://support.microsoft.com/kb/109703/ja
月の日数をを知りたいんだけど・・・。どうしたらできるの?
▼回答
次の関数で取得することができるよ。
Public Function DaysInMonth(ByVal day As Date) As Integer
Dim NextMonth As Variant
Dim EndOfMonth As Variant
NextMonth = DateAdd("m", 1, day)
EndOfMonth = NextMonth - DatePart("d", NextMonth)
DaysInMonth = DatePart("d", EndOfMonth)
End Function
■参考
[AC97]指定された月の日数を取得する方法
http://support.microsoft.com/kb/109703/ja
金曜日, 9月 21, 2007
[VBA]印刷関連
▼質問
改ページ数を知りたいんだけど、どうしたらできるの?
▼回答
次のコードで取得できるよ。①が横方向の改ページ数で、②が縦方向だよ。
①Worksheets(シート名).VPageBreaks.Count
②Worksheets(シート名).HPageBreaks.Count
▼質問
改ページを削除するにはどうすればいいの?
▼回答
下記のコードを記述すればできるよ。
Worksheets(シート名).ResetAllPageBreaks
垂直方向の改ページを無くすには下記のコードを記述すると自動で行うことができる。
Worksheets(シート名).ResetAllPageBreaks
Worksheets(シート名).PageSetup.PrintArea = "A1:P" & Worksheets(シート名).range("A65536").End(xlUp).row
If (Worksheets(シート名).VPageBreaks.Count > 0) Then
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
ActiveWindow.View = xlNormalView
End If
ActiveWindow.LargeScroll Down:=-(Worksheets(シート名).HPageBreaks.Count + 1)
■参考
【Shun's Page】印 刷
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page20.htm
改ページ数を知りたいんだけど、どうしたらできるの?
▼回答
次のコードで取得できるよ。①が横方向の改ページ数で、②が縦方向だよ。
①Worksheets(シート名).VPageBreaks.Count
②Worksheets(シート名).HPageBreaks.Count
▼質問
改ページを削除するにはどうすればいいの?
▼回答
下記のコードを記述すればできるよ。
Worksheets(シート名).ResetAllPageBreaks
垂直方向の改ページを無くすには下記のコードを記述すると自動で行うことができる。
Worksheets(シート名).ResetAllPageBreaks
Worksheets(シート名).PageSetup.PrintArea = "A1:P" & Worksheets(シート名).range("A65536").End(xlUp).row
If (Worksheets(シート名).VPageBreaks.Count > 0) Then
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
ActiveWindow.View = xlNormalView
End If
ActiveWindow.LargeScroll Down:=-(Worksheets(シート名).HPageBreaks.Count + 1)
■参考
【Shun's Page】印 刷
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page20.htm
水曜日, 9月 19, 2007
[VBA]数値入力制限
▼質問
テキストボックスで数値だけを入力できるようにしたいんだ。どうすればいい?
▼回答
KeyPressイベントで下記の関数を呼べばできるよ。
Public Sub KeyNumericOnly(ByRef KeyAscii As ReturnInteger)
'数値キーをチェックする.
If (Not Chr(KeyAscii) Like "[0-9]") Then KeyAscii = 0
End Sub
これだけじゃ駄目だった!
日本語入力ができちゃうー!!
IMEを使えないようにするにはどうしたらいいのか調べることに・・・。
テキストボックスのプロパティIMEModeをfmIMEModeDisableにすれば良いみたい。(^^)v
このやり方のほかに次のコードでも良いみたい。
TextBox1.IMEMode = fmIMEModeDisable
00=fmIMEModeNoControl:IME のモードを変更しません (既定値)。
01=fmIMEModeOn:IME をオンにします。
02=fmIMEModeOff:IME をオフにして英語モードにします。
03=fmIMEModeDisable:IME をオフにします。このモードにするとユーザーは、キー操作によっても IME をオンにすることができなくなります。
04=fmIMEModeHiragana:全角ひらがなモードで IME をオンにします。
05=fmIMEModeKatakana:全角カタカナ モードで IME をオンにします。
06=fmIMEModeKatakanaHalf:半角カタカナ モードで IME をオンにします。
07=fmIMEModeAlphaFull:全角英数モードで IME をオンにします。
08=fmIMEModeAlpha:半角英数モードで IME をオンにします。
09=fmIMEModeHangulFull:全角ハングル モードで IME をオンにします。
10=fmIMEModeHangul:半角ハングル モードで IME をオンにします
■参考
テキストボックスで数値のみを受け取る方法
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/NumericEdit/
テキストボックスで数値だけを入力できるようにしたいんだ。どうすればいい?
▼回答
KeyPressイベントで下記の関数を呼べばできるよ。
Public Sub KeyNumericOnly(ByRef KeyAscii As ReturnInteger)
'数値キーをチェックする.
If (Not Chr(KeyAscii) Like "[0-9]") Then KeyAscii = 0
End Sub
これだけじゃ駄目だった!
日本語入力ができちゃうー!!
IMEを使えないようにするにはどうしたらいいのか調べることに・・・。
テキストボックスのプロパティIMEModeをfmIMEModeDisableにすれば良いみたい。(^^)v
このやり方のほかに次のコードでも良いみたい。
TextBox1.IMEMode = fmIMEModeDisable
00=fmIMEModeNoControl:IME のモードを変更しません (既定値)。
01=fmIMEModeOn:IME をオンにします。
02=fmIMEModeOff:IME をオフにして英語モードにします。
03=fmIMEModeDisable:IME をオフにします。このモードにするとユーザーは、キー操作によっても IME をオンにすることができなくなります。
04=fmIMEModeHiragana:全角ひらがなモードで IME をオンにします。
05=fmIMEModeKatakana:全角カタカナ モードで IME をオンにします。
06=fmIMEModeKatakanaHalf:半角カタカナ モードで IME をオンにします。
07=fmIMEModeAlphaFull:全角英数モードで IME をオンにします。
08=fmIMEModeAlpha:半角英数モードで IME をオンにします。
09=fmIMEModeHangulFull:全角ハングル モードで IME をオンにします。
10=fmIMEModeHangul:半角ハングル モードで IME をオンにします
■参考
テキストボックスで数値のみを受け取る方法
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/NumericEdit/
[VBA]有効な行数を取得する
▼質問
有効な行数を取得するにはどうしたらいいの?
▼回答
A列の終端セル行を取得するには、下記のようにすると取得できる。
Worksheets(シート名).Range("A65536").End(xlUp).Row
この方法では、A列の65536行目から上(xlUp)に終端セルを検索している。
下記のように、上から検索する方法もある。
Worksheets(シート名).Range("A1").End(xlDown).Row
この場合では、途中に空白があるとそこが終端セルと判断してしまうので本当の
終端セルを取得したい場合は、前者の方法を使用した方が良い。
空白が途中に絶対無いとわかっていれば問題はないと思うが・・・。
■参考
Worksheets(シート名).Range("A1").End(direction)
directionは検索の方向を指定する。
xlToLeft:左へ検索
xlToRight:右へ検索
xlUp:上へ検索
xlDown:下へ検索
有効な行数を取得するにはどうしたらいいの?
▼回答
A列の終端セル行を取得するには、下記のようにすると取得できる。
Worksheets(シート名).Range("A65536").End(xlUp).Row
この方法では、A列の65536行目から上(xlUp)に終端セルを検索している。
下記のように、上から検索する方法もある。
Worksheets(シート名).Range("A1").End(xlDown).Row
この場合では、途中に空白があるとそこが終端セルと判断してしまうので本当の
終端セルを取得したい場合は、前者の方法を使用した方が良い。
空白が途中に絶対無いとわかっていれば問題はないと思うが・・・。
■参考
Worksheets(シート名).Range("A1").End(direction)
directionは検索の方向を指定する。
xlToLeft:左へ検索
xlToRight:右へ検索
xlUp:上へ検索
xlDown:下へ検索
日曜日, 9月 16, 2007
[VBA]オブジェクト名でプロパティにアクセスする
▼質問
オブジェクト名でメソッドやプロパティにアクセスしたいんだけどできるの?
▼回答
できるよ!オブジェクト名で設定取得が可能だ。
Me.Controls.Item(オブジェクト名).メソッド名又はプロパティ名
オブジェクト名でメソッドやプロパティにアクセスしたいんだけどできるの?
▼回答
できるよ!オブジェクト名で設定取得が可能だ。
Me.Controls.Item(オブジェクト名).メソッド名又はプロパティ名
木曜日, 9月 06, 2007
[VBA]時刻の設定
▼質問
Date型の変数に時刻を設定するにはどうしたらいいの?
▼回答
Dim NowDate As Date
Dim MakeDate As Date
Dim strDate As String
NowDate = Now
strDate = Format(NowDate, "yyyy") & "/" & _
Format(NowDate, "mm") & "/" & _
Format(NowDate, "dd")
MakeDate = CDate(strDate)
MakeDate = DateTime.DateAdd("h", 24, MakeDate)
MsgBox Format(MakeDate, "yyyy/mm/dd hh:nn:ss")
MakeDate = DateTime.DateAdd("h", 1, MakeDate)
MsgBox Format(MakeDate, "yyyy/mm/dd hh:nn:ss")
Date型の変数に時刻を設定するにはどうしたらいいの?
▼回答
Dim NowDate As Date
Dim MakeDate As Date
Dim strDate As String
NowDate = Now
strDate = Format(NowDate, "yyyy") & "/" & _
Format(NowDate, "mm") & "/" & _
Format(NowDate, "dd")
MakeDate = CDate(strDate)
MakeDate = DateTime.DateAdd("h", 24, MakeDate)
MsgBox Format(MakeDate, "yyyy/mm/dd hh:nn:ss")
MakeDate = DateTime.DateAdd("h", 1, MakeDate)
MsgBox Format(MakeDate, "yyyy/mm/dd hh:nn:ss")
金曜日, 8月 31, 2007
[EXCEL]アドイン
▼質問
Excelでアドインを作るにはどうしたらいいのかな?
▼回答
保存の時に「Microsoft Excel アドイン (*.xla)」を選択して保存するだけだよ。
§Excelのアドインソフトの作り方
http://members.at.infoseek.co.jp/kenchan_h/index15.html
@IT:Windows TIPS -- Tips:Excelでユーザー定義関数をアドインとして提供する
http://www.atmarkit.co.jp/fwin2k/win2ktips/471funcadin/funcadin.html
▼質問
プロパティウィンドウ(ショートカットメニュー・右クリックメニュー・メニューバー)に項目を追加するには
どうしたらいいの?
▼回答
次のプログラムをワークブックオープンのWorkbook_Open()で呼べば追加できるよ。
Dim Obj As Object
Set Obj = Application.CommandBars("Cell").Controls.Add()
With Obj
.Caption = "コマンド表示名称"
.OnAction = "プログラム名"
.BeginGroup = False ' セパレータ追加表示(True:追加表示、False:追加無し)
End With
追加したものはワークブッククローズのWorkbook_BeforeClose(Cancel As Boolean)で削除すること
が必要だよ。
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
やってみたがうまくいかなかった。(T_T)アドインファイルにするとWorkbook_BeforeCloseは呼ばれ
ないことが判明。
そこで、次のクラスファイルを作成してExcelが閉じられた時に呼ぶようにやってみた。
Option Explicit
Public WithEvents App As Application
Public WithEvents Wb As Workbook
' クラスモジュールの初期化処理(Workbook_Openで呼出すが、Bookを呼出した後でないとダメ)
Public Sub Class_Initialize()
Set App = Application
Set Wb = Application.ActiveWorkbook
End Sub
' クラス内Applicationのワークブッククローズ処理(Excel終了時に呼出される)
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
End Sub
' クラス内Workbookのワークブッククローズ処理(Book終了時に呼出される)
Private Sub Wb_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
Application.DisplayAlerts = True
End Sub
標準モジュールでクラスの生成が必要
Public myApp As New クラス名
■参考サイト
Excel のメニューおよびメニュー バーをカスタマイズする方法
http://support.microsoft.com/kb/830502/ja
Office TANAKA - VBA Tips
http://officetanaka.net/excel/vba/tips/index.htm
Excelでアドインを作るにはどうしたらいいのかな?
▼回答
保存の時に「Microsoft Excel アドイン (*.xla)」を選択して保存するだけだよ。
§Excelのアドインソフトの作り方
http://members.at.infoseek.co.jp/kenchan_h/index15.html
@IT:Windows TIPS -- Tips:Excelでユーザー定義関数をアドインとして提供する
http://www.atmarkit.co.jp/fwin2k/win2ktips/471funcadin/funcadin.html
▼質問
プロパティウィンドウ(ショートカットメニュー・右クリックメニュー・メニューバー)に項目を追加するには
どうしたらいいの?
▼回答
次のプログラムをワークブックオープンのWorkbook_Open()で呼べば追加できるよ。
Dim Obj As Object
Set Obj = Application.CommandBars("Cell").Controls.Add()
With Obj
.Caption = "コマンド表示名称"
.OnAction = "プログラム名"
.BeginGroup = False ' セパレータ追加表示(True:追加表示、False:追加無し)
End With
追加したものはワークブッククローズのWorkbook_BeforeClose(Cancel As Boolean)で削除すること
が必要だよ。
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
やってみたがうまくいかなかった。(T_T)アドインファイルにするとWorkbook_BeforeCloseは呼ばれ
ないことが判明。
そこで、次のクラスファイルを作成してExcelが閉じられた時に呼ぶようにやってみた。
Option Explicit
Public WithEvents App As Application
Public WithEvents Wb As Workbook
' クラスモジュールの初期化処理(Workbook_Openで呼出すが、Bookを呼出した後でないとダメ)
Public Sub Class_Initialize()
Set App = Application
Set Wb = Application.ActiveWorkbook
End Sub
' クラス内Applicationのワークブッククローズ処理(Excel終了時に呼出される)
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
End Sub
' クラス内Workbookのワークブッククローズ処理(Book終了時に呼出される)
Private Sub Wb_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Cell").Controls("コマンド表示名称").Delete
Application.DisplayAlerts = True
End Sub
標準モジュールでクラスの生成が必要
Public myApp As New クラス名
■参考サイト
Excel のメニューおよびメニュー バーをカスタマイズする方法
http://support.microsoft.com/kb/830502/ja
Office TANAKA - VBA Tips
http://officetanaka.net/excel/vba/tips/index.htm
木曜日, 7月 12, 2007
[HTML]ラジオボタンとタイトルの連動
▼質問
ラジオボタンのタイトルをクリックした時にタイトルと一緒にラジオボタンを連動させる にはどうしたらよいの?
▼回答
タイトルをラベルタグで囲って、ラジオ(input)ボタンのid属性とラベル( label )タグの for 属性を一緒
の名称にすれば実現することができるよ。
<input type="radio" id="opt_1" name="opt" value="1" checked>
ラジオボタンのタイトルをクリックした時にタイトルと一緒にラジオボタンを連動させる にはどうしたらよいの?
▼回答
タイトルをラベルタグで囲って、ラジオ(input)ボタンのid属性とラベル( label )タグの for 属性を一緒
の名称にすれば実現することができるよ。
<input type="radio" id="opt_1" name="opt" value="1" checked>
火曜日, 7月 03, 2007
[ORACLE]データベース・リンク
▼質問
データベースリンクって何?
▼回答
データベースリンクとは、他のマシンのOracleデータベースを自分のマシンにマッピングする機能。
■参考サイト
Oracle・Tips集
http://ash.jp/db/ora_tips.htm
ORACLE(テクニック)
http://www.geocities.jp/principal_focuses/tech/ora/ora_tech/index.html
データベースリンクって何?
▼回答
データベースリンクとは、他のマシンのOracleデータベースを自分のマシンにマッピングする機能。
■参考サイト
Oracle・Tips集
http://ash.jp/db/ora_tips.htm
ORACLE(テクニック)
http://www.geocities.jp/principal_focuses/tech/ora/ora_tech/index.html
登録:
投稿 (Atom)