2017年06月 / 05月≪ 123456789101112131415161718192021222324252627282930≫07月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2008.11.07 (Fri)

VBAで独自構造体

まとまった値の保持には構造体が良いなということで、
VBAでユーザー定義した構造体を使う場合。

「Type」と「End Type」でくくって宣言すれば独自構造体。

'ユーザーデータみたいなの
Type UserData
ID As Integer
Name As String
Age As Integer
End Type

'使う場合はこんな感じ
Sub test()
Dim ud As UserData

ud.ID = 1234
ud.Name = "ueno"
ud.Age = 24

End Sub


Typeを使って宣言したらこんな感じで表示されるので便利。

b000043.jpg
b000044.jpg

ちなみにユーザー定義型を使う場合、使用箇所より上に宣言を書く必要がある。


Sub test()
'宣言より先にUserData型を使ってる
Dim ud As UserData

ud.ID = 1234
ud.Name = "ueno"
ud.Age = 24

End Sub

'宣言
Type UserData
ID As Integer
Name As String
Age As Integer
End Type

↑こんな感じで、宣言を後に書いちゃった場合は、
「ユーザ定義型は定義されていません。」っていうエラーが出るので注意。

VBA上から読んでるんだなあと感じた。

あと構造体なんでFunctionとかSubは入れられない・・・・と思う。
スポンサーサイト


 |  16:23  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.10.01 (Wed)

Excel開いたら真っ白で何もできない

Excel開いたらメニューバーとか数式バーとかシート見出しがなく、つるっつるで何もできないことがある。
特にメニューバー。これが出てないと辛い。

そんな時はAlt+F11でVisual Basic Editorを開き、イミディエイトから直接表示するコードを叩く。しかないのかな?

メニューバー表示
Application.CommandBars("Worksheet Menu Bar").Enabled = True

シート見出し表示
ActiveWindow.DisplayWorkbookTabs = True

数式バー表示
Application.DisplayFormulaBar = True

シートの行列番号表示
ActiveWindow.DisplayHeadings = True

シートのグリッドライン(枠線)表示
activewindow.DisplayGridlines = True

とりあえずメニューバーさえ出せれば、あとは「ツール>オプション」で設定できるけどね。


詳しくは以下

 |  17:11  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.07.16 (Wed)

VBAでプロパティ

C#.NETでいうこんな感じのプロパティを
public string MyFileName
{
get { return myFileName; }
set { myFileName = value; }
}

// 使用時
MyFileName = "aaa.xxx";
string tmp = MyFileName;


VBAで作る場合は
'Get
Property Get MyFileName() As String
MyFileName = myFileName
End Property
'Set
Property Let MyFileName(v As String)
myFileName = v
End Property

'使用時
MyFileName = "aaa.xxx"
Dim tmp as String
tmp = MyFileName


こんな感じ。
LetがsetでGetがget。
パブリック変数にアクセスされるのか確かめたいときとかに
変数をプロパティに置き換えてブレークポイントを置くと楽だね。


 |  12:53  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.04.30 (Wed)

ファイルパスをつなげる関数&可変数引数

C#.NETで言う「System.IO.Path.Combine」みたいなファイルパスをつなげる関数を
VBAでも使いたいなと思って作りました。


Function Combine(ParamArray paths()) As String
Dim i As Integer
Dim path As String
Dim result As String
For i = LBound(paths) To UBound(paths)
path = CStr(paths(i))
If i = LBound(paths) Then
result = path
Else
If Right(result, 1) = "\" Then result = Left(result, Len(result) - 1)
If Left(path, 1) = "\" Then path = Mid(path, 2)
result = result & "\" & path
End If
Next

Combine = result
End Function


VBAで引数の数を可変数にする場合は「ParamArray」を使うそうです。
ちなみにParamArrayを使う場合、型はVariant型じゃないとだめみたい。

○ Function Combine(ParamArray paths() As Variant) As String
× Function Combine(ParamArray paths() As String) As String <-コンパイルエラー


使う場合は
path = Combine("aaa\","bbb")
path = Combine("aaa", "bbb\", "\ccc\")
こんな感じで。


 |  10:19  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.02.15 (Fri)

VBAのちょっとしたメモ

・文字列の結合は「&」を使う。"aaa" & "bbb"

・文字列のフォーマットには「Format()」関数。
 0埋めの数字ならFormat(5, "000") -> 005
 日付型ならFormat(d,"yyyy年mm月dd日 hh時nn分ss秒") *分はnまたはnn

・Mid$("aaa", 2,1)のように関数の後ろに$(ドル)をつける理由。
 Midは戻り値が「バリアント型 (内部処理形式 String の Variant)」なのだが、
 $をつけるとString型として返される。


 |  14:07  |  VBA  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。