Excel VBA 質問スレ Part32
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/07(月) 22:19:55.86★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0797デフォルトの名無しさん
2014/04/27(日) 19:50:23.93ID:R2zgl6Dy動いたよ。
どのワークシートのCellsなのかが不明なのでは。
ValueかTextかは別に関係ないかな
For文の後ろは書ききれなかっただけ?
Sub Renketsu()
Dim str As String
Dim i As Long
str = ""
For i = 1 To 5
str = str & Me.Cells(i, 1).Text & "▲"
Next i
MsgBox str
End Sub
0798デフォルトの名無しさん
2014/04/27(日) 19:57:39.29ID:R2zgl6DySub Renketsu2()
Dim str() As String
Dim i As Long
For i = 1 To 5
ReDim Preserve str(i - 1)
str(i - 1) = Me.Cells(i, 1).Text
Next
MsgBox Join(str, "▲")
End Sub
0799デフォルトの名無しさん
2014/04/27(日) 21:29:59.52ID:SP8zGQAF文字列を連結する時、「&」の前後のスペースは省略できない
ここだけは自動でスペースが入らなくて、自分で入れないとエラーになる
0800デフォルトの名無しさん
2014/04/27(日) 21:48:27.57ID:SP8zGQAF後ろのスペースは条件次第で省略できる
今回の質問では2箇所とも後ろのスペースが自動補完されるパターン
renketsu=renketsu&cells(i,1).value&"▲" ' エラーになる
renketsu=renketsu &cells(i,1).value &"▲" ' これなら大丈夫
0801デフォルトの名無しさん
2014/04/27(日) 21:50:04.16ID:SP8zGQAF0802デフォルトの名無しさん
2014/04/27(日) 21:52:34.25ID:SP8zGQAF&の前のスペースも条件次第では入力を省略できるんだった
0803デフォルトの名無しさん
2014/04/27(日) 22:03:23.28ID:rjAzuBFbありがとう!その通りでした。
「これなら大丈夫」の方でうまく行きました。
>>797
実行時ではなく、記述時のエラーなので、for文の後ろはまだ
白紙だったです。
丁寧にありがとう。
Textプロパティとか初見で勉強になりました。
0804デフォルトの名無しさん
2014/04/27(日) 22:21:45.87ID:wIC7n1Emそのブックにあらかじめ書かれてある標準モジュールにあるSub(例えばSub TestProcesure()としよう)を実行させるためには
どのようなコードを書けばいいですか?
0805デフォルトの名無しさん
2014/04/27(日) 22:44:24.66ID:wIC7n1EmSubプロシージャと、戻り値のないFunctionプロシージャって、全く同じじゃないですか?どうですか?
0806デフォルトの名無しさん
2014/04/28(月) 00:51:25.50ID:Z51g+zsH何を比較して「同じ」とするか、定義による
ソースはもちろん違うから、同じとは言えない
Pコードが同じかどうかは調べてみないとわからない
代用できる可能性は否定しないけど使い分けた方がいい
適切な使い分けがされていないコードを相手にするのはめんどくさいしバグの元になるから
0807デフォルトの名無しさん
2014/04/28(月) 20:44:15.96ID:PUbQSUbx戻り値の型を書かなくても値は返せる。たんにVariant型の指定を省略しただけ
Function test()
test = "test code"
End Function
このプロシジャは問題なく呼び出せる
0808デフォルトの名無しさん
2014/04/28(月) 21:12:30.39ID:PUbQSUbxWorkbooks.Open "\test.xlsm"
Application.Run "test.xlsm!TestProcesure"
0809デフォルトの名無しさん
2014/04/28(月) 23:31:36.81ID:+P6rwUoPふと思ったのでござるが
それが可能ならふつうのSubプロシージャを使ってたところを
そのままFunctionにかえても何ら問題なくマクロは動くってこと?
0810デフォルトの名無しさん
2014/04/28(月) 23:33:34.42ID:+P6rwUoPなるほど。
ありがとうでござった。
0811デフォルトの名無しさん
2014/04/29(火) 00:12:43.42ID:7Qss/xhPダメ
そら大丈夫なコードもたくさんあるだろうけど、ダメな場合もあるんで、
特別な事情がない限りはSubはSubのまま使った方が安全
0812デフォルトの名無しさん
2014/04/29(火) 00:29:30.69ID:jGZw12rcえ?
ダメな場合って例えば?
0813デフォルトの名無しさん
2014/04/29(火) 00:39:02.88ID:7Qss/xhPほれ、一番簡単なサンプル
mainを実行すると数字が表示される
次に Sub a を Function a に書き換えて、もう一度mainを実行すると表示される数字が変わる
つまりSubはFunctionに置き換えられないってこと
Dim x
Sub main()
a (1)
MsgBox (x)
End Sub
Sub a(n)
x = n
On Error Resume Next
a (n + 1)
End Sub
0814デフォルトの名無しさん
2014/04/29(火) 01:49:43.07ID:LXv8yqdQExcelではセルの内容のコピペをするとき
連続してコピーだけ、あるいは連続だけペーストだけ、というのを可能にしたいです。
ショートカットキーに関しては、そのままCTRL+Cと、CTRL+Vを割り当てればいいので簡単です。
機能に関しては、上で書いたのを読んでピンときて人もいると思うけど
コピーしたものはその順番で記憶され、ペーストするときは最新のものからペーストされていく、という仕様にします。
これを実現させるためにはどういうコードを書けばいいですか?
不明な点はエスパーしてください。
0815デフォルトの名無しさん
2014/04/29(火) 01:51:28.23ID:LXv8yqdQ東京、大阪、千葉と書かれたセルを3連続コピーして
別シートで3つのセルら連続ペーストすれば、千葉、大阪、東京、のようにペーストされる、という感じです。
0816デフォルトの名無しさん
2014/04/29(火) 01:58:42.35ID:7Qss/xhPそういうのをスタック方式という
わざわざ作らなくても、クリップボードをスタック式に拡張するフリーウェアが既にある
0817デフォルトの名無しさん
2014/04/29(火) 09:33:17.01ID:LXv8yqdQそんなことを言っちゃ警察はいらんよ。
こうすればいいさ。
Public sClip(100) As String '100は適当な最大数
Public iClip As Integer
Sub sCopy()
iClip = iClip + 1
sClip(iClip) = ActiveCell.Value
End Sub
Sub sPaste()
If iClip < 1 Then
End
End If
ActiveCell.Value = sClip(iClip)
iClip = iClip - 1
End Sub
0818デフォルトの名無しさん
2014/04/29(火) 14:06:35.48ID:LXv8yqdQこれを動的配列かなにかを使用して改善することはできないか?
あまりないが100以上になるとエラーが出るところが気に入らない。
しかしモジュール変数の配列では動的配列がうまくできなそう。
0819デフォルトの名無しさん
2014/04/29(火) 14:35:41.53ID:xkTOBPPn0820デフォルトの名無しさん
2014/04/29(火) 14:55:03.30ID:/qylVqTc100だろうが1000000だろうが、リソースが有限な以上どこかに上限はある
上限気にするなら上限に達してもエラーにならないように作れよ
ところで昔オフィスクリッポボードとかいうのが有った気がしたんだが、あれどこにいったんだろ
探してみたら、リボンの中にいまでもひっそりとあるのかw
0821デフォルトの名無しさん
2014/04/29(火) 16:16:14.87ID:oddt27dLReDim Preserve ,UBound あたりで何とでもなるだろう。
でも、そんな面倒なことせずに必要な次元数を固定確保して >> 820 に一票
>> 820
オフィスクリッポボード・・リボンの中にいまでもひっそりと隠れているよ(ホームタブの左下隅)
0822デフォルトの名無しさん
2014/04/29(火) 16:16:57.58ID:AVYTmVui0823デフォルトの名無しさん
2014/04/29(火) 18:17:28.97ID:/qylVqTcあれ、VBAから直接操作できないのか
さっさとなくせば良いのにw
0824デフォルトの名無しさん
2014/04/29(火) 20:59:07.47ID:jGZw12rc配列の替わりにコレクションかディクショナリを使えば?
0825デフォルトの名無しさん
2014/04/29(火) 21:22:15.37ID:7Qss/xhP「これぐらいあれば大丈夫だろう」が、過去どれだけひっくり返ってきたことか
今回のケースなら、どうせ人間の指の動く速さがボトルネックになるんだから普通にReDimでいいと思う
せいぜい16連射、どんなに余裕を見ても秒間数十回しか呼ばれないんだから、処理が多少重くても影響なし
0826デフォルトの名無しさん
2014/04/30(水) 02:40:51.87ID:Whj7Eetjと
秒間数十回しか呼ばれないんだから、処理が多少重くても影響なし
は、別の話だろ
まさかReDim使えば配列は無限に大きく出来るとでも思っているのか?
0827デフォルトの名無しさん
2014/04/30(水) 02:53:49.94ID:x00tEAYhしかし上限は簡単には決められないから、必要に応じて拡張するように作る
そのために処理が重くなるのは困るけど、今回は多少重くても問題ない
0828デフォルトの名無しさん
2014/04/30(水) 03:27:22.99ID:Whj7Eetj0829デフォルトの名無しさん
2014/04/30(水) 15:19:07.78ID:Iw0O5nduそのセルのアドレス、というかrow数、column数を取得するにはどうしたらいいですか?
そのユーザ定義関数を定義するときのコードの中で使いたいんです。
まさか=MYFUNCTION(ROW(),COLUMN())みたいにして渡さないといけない?
0830829
2014/04/30(水) 15:29:17.91ID:Iw0O5ndu例えばそのセルの値だけ右に移動した先にあるセルの値を出力する関数を作りたいとき
rowとcolumnで渡して返り値をCells(row,column).Offset(0,Cells(row,column).Value)としても全く動かない。
0831デフォルトの名無しさん
2014/04/30(水) 16:01:29.61ID:QkWVSK2HApplication.ThisCell.Address
0832デフォルトの名無しさん
2014/04/30(水) 16:16:47.04ID:Iw0O5nduありがとうございます。
ところでこのコードだけでもものすごく役に立ちありがたいのですが
それよりもさらに知りたいことがあります。
このApplication.ThisCell.Addressというのはどうやって調べたんですか?
こんなマレなコードは本屋で売ってるVBAの本なんかでは絶対に出てこない類のものです。
どうやって調べたのでしょうか?
そしてこのより詳しい機能はどうやって調べますか?
ちょっと調べたらApplication.ThisCell.Offset(x,y)でちゃんと他セルの値も取得できて便利です。
0833デフォルトの名無しさん
2014/04/30(水) 17:41:55.57ID:bd35DGVTみたいなメッセージが出て、その行が赤くなり、「:」の部分が選択常態になってる。
range("C"&n:"C"&n+11).select
↑これなんだけど、これ何が間違ってるの?
0834デフォルトの名無しさん
2014/04/30(水) 17:44:03.34ID:Iw0O5nduApplication.ActiveCellとどこが違うの?
実に不思議なことに
普通のSubプロシージャとかではApplication.ActiveCellしか使えずApplication.ThisCellだとエラー。
逆にユーザ定義関数を書くところではApplication.ThisCellしか使えずApplication.ActiveCellは使えない。
機能的には全く同じものなのに。
不思議ですね。
0835デフォルトの名無しさん
2014/04/30(水) 17:45:32.67ID:Iw0O5nduにしないといけない。
0836デフォルトの名無しさん
2014/04/30(水) 18:05:42.98ID:bd35DGVTありがとう。
それをそのままコピーして貼りつけたんだけど、なぜかまた同じメッセージが
出て、今度は「":C"」の部分が選択状態になってる。
どこか、別の行がおかしいのかな。
Sub a()
Dim i As Integer
Dim n As Integer
Worksheets(1).Activate
n = 5
For i = 1 To 3
range("C"&n&":C"&n+11).select
(以下、略)
0837デフォルトの名無しさん
2014/04/30(水) 18:18:39.04ID:bIvK3JIl>>799-802
range("C"&n &":C"&n+11).select
0838デフォルトの名無しさん
2014/04/30(水) 18:47:49.29ID:bd35DGVTおお、できた。ありがとう。
0839デフォルトの名無しさん
2014/05/01(木) 01:54:32.40ID:tA55q8Iy' 参照型変数を値渡しするsh2がNothingのままなのは何故なんですか。
Sub a()
Dim sh1 As Worksheet, sh2 As Worksheet
b sh1
c sh2
Stop
End Sub
Sub b(ByRef sh As Worksheet)
Set sh = ThisWorkbook.Worksheets("Sheet1")
End Sub
Sub c(ByVal sh As Worksheet)
Set sh = ThisWorkbook.Worksheets("Sheet1")
End Sub
0840デフォルトの名無しさん
2014/05/01(木) 02:23:33.09ID:UMPLKQg9変数「が」参照するのと変数「を」参照するのは別だから
0841デフォルトの名無しさん
2014/05/01(木) 06:29:41.23ID:VQHKFgN+他セルの値を変更してもすぐにはそのセルの値が反映されない問題は
どう解決しますか?
0842デフォルトの名無しさん
2014/05/01(木) 06:47:21.36ID:9zM4+Favまったく知らずに言うけど、
ActiveCellは、ユーザがマウスでクリックしたなど、
今フォーカスを持っているセル
ThisCellは、フォーカスを持っていないが、
今書き込むなど、計算しているセル
だから、ユーザ定義関数は、単なる何かを計算する関数で、
Applicationオブジェクトとは関係がなく、
フォーカスイベントをもらえないのでは?
Application.ThisCellは、定数のように静的なプロパティで、
どの関数からでも、使えるメンバなのかも?
0843デフォルトの名無しさん
2014/05/01(木) 15:43:23.17ID:C2Wy7tu3ThisCellと書いてF1キー雄だけなのに。
> Range オブジェクトとして呼び出されるユーザー定義関数が入っているセルを返します。
0844デフォルトの名無しさん
2014/05/01(木) 21:05:28.24ID:8XTpF2p+ここにある、複数のシートを結合するマクロを
xp+Office2000で使っていたのですが
win7+office2013に移行したところ、うまく動きません。
具体的には、ふたつ結合したところで終わってしまいます。
どこを直せばいいのでしょうか?
0845デフォルトの名無しさん
2014/05/01(木) 21:28:28.93ID:UMPLKQg9バージョンに依存する部分なんてなさそうだけどなあ
呼び出し方とか間違えてない?
0846デフォルトの名無しさん
2014/05/02(金) 04:58:44.30ID:AXfyvegwApplication.Volatile
0847841
2014/05/02(金) 11:21:13.12ID:0Sm4zufHおい、すごいじゃないか(笑)
今年一番感動した(爆)
それより知りたいんですが、こういう解法ってどうやって探し当てたんですか?
ふつうのVBA入門系の本には載ってないし
ヘルプでも、Application.Volatile→使用法の方向では調べられても、やりたい事→Application.Volatileの方向では、絶対に調べられないか困難だぞ。
0848デフォルトの名無しさん
2014/05/02(金) 12:31:21.02ID:eSB12fTeggrks
>>832と同じ人?
0849デフォルトの名無しさん
2014/05/02(金) 16:31:45.74ID:VTOLN4jYxpからwin7は同じマシンで、呼び出し?使い方も同じです。
試しにより高性能なマシンでやってみたところ
xpのときよりも10倍ほど時間がかかるもののとりあえず完走しました。
2000のときは窓が一つで中に複数のファイルを開く形でしたが
2013のようにファイルごとひとつづつ立ち上がると負担が大きいんでしょうか。
マクロ自体に問題があるわけではなさそうなので別のマシンで使うことにします。
ありがとうございました。
0850デフォルトの名無しさん
2014/05/03(土) 05:25:42.80ID:9Cuh0B7r引数や戻り値はとりあえず置いておいて、シートに書かれた関数があれば実行して、無ければエラーメッセージを出力するような処理を作りたいです。
0851デフォルトの名無しさん
2014/05/03(土) 07:59:55.44ID:W3aEO+UgそのシートをActivateせずに取り出す方法を以前発見したのですが
それはどういう方法ですか?
0852デフォルトの名無しさん
2014/05/03(土) 08:19:26.49ID:ElKs5wH6適当だしあんまり確認してないけどこんなのどうでしょう、バグったらごめんなさい
Private Sub Test()
Dim buf As Variant
Dim target As Range
For Each target In Selection
If target.Value = "" Then
Debug.Print "Error"
Else
'ここでセルに入力されたワークシート関数を実行・評価する
buf = Application.Evaluate(target.Value)
If IsError(buf) Then
Debug.Print "Error"
Else
Debug.Print buf
End If
End If
Next target
End Sub
0853デフォルトの名無しさん
2014/05/04(日) 07:58:46.98ID:PkGldEjn1つを他のもののコピーとしたいんですが
単に代入すると同一のものの参照となります。
そうじゃなくて構造体の全メンバの変数の値をコピーするにはどうするのが一般的ですか?
0854デフォルトの名無しさん
2014/05/04(日) 08:03:57.92ID:PkGldEjnDim name as String
Dim age as integer
Dim sex as String
Dim first_time_sex_date as Date
End Structure
Dim student(2) as Student
student(1).name="Taro"
student(1).age=16
student(1).sex="Male"
student(1).first_time_sex_date="2012/7/7"
student(2)=student(1)
student(2).name="Jiro"
みたいにして変になる。
0855デフォルトの名無しさん
2014/05/04(日) 08:15:17.54ID:PkGldEjnタブ(複数開いてる)でアクティブになっているページをgetするためには
どういうコードになりますか?
0856デフォルトの名無しさん
2014/05/04(日) 08:41:36.79ID:v/jP7knVhttp://toro.2ch.net/test/read.cgi/tech/1342087380/
0857デフォルトの名無しさん
2014/05/05(月) 02:49:54.32ID:GlFHWnLlVariantにすればByvalで渡せますが要素数が多いと速度が激しく遅くなるのは何故ですか?
この2つ調べても分からなかったので教えてください
0858857
2014/05/05(月) 02:50:19.74ID:GlFHWnLl0859デフォルトの名無しさん
2014/05/05(月) 02:55:31.79ID:GlFHWnLlByvalで渡すとき要素数が大きくなっても速度が遅くならないと思うんですけど
0860デフォルトの名無しさん
2014/05/05(月) 03:33:06.97ID:uFaF33P2任意の型の配列をVariantに代入した時、代入されるのはポインタ(番地)じゃなくて内容、配列全体が丸ごとコピーされる
だから配列のサイズに応じて処理時間も変わる
Dim A(100) As Integer
Dim B As Variant
B = A
MsgBox TypeName(B)
このサンプルの場合、代入後にBの型を見るとInteger(配列)に変わっている
0861デフォルトの名無しさん
2014/05/05(月) 03:45:08.05ID:GlFHWnLlInteger(配列)に変わっているという事は配列全体が丸ごとコピーされてる証拠になるわけですか?
じゃあ普通の配列がByvalで渡せないのは配列全体が丸ごとコピーされて
処理時間が遅くなるから使い物にならないという理由なのですかね
0862デフォルトの名無しさん
2014/05/05(月) 08:56:42.69ID:uFaF33P2ちょっと調べてみたけど、簡単には証拠は示せなさそう
もっと厳密に言うと、Variantに配列を代入すると、もともとVariantには数値が1つしか格納できないので、
配列のコピーが作られた上で、その配列へのポインタがVariantに格納される
だからVariantの中身はポインタ、という理解は間違ってはないけど、そのポインタの先にあるのは
代入元の配列ではなく、新しく作られた配列になっている
配列を丸ごと新しく作るため、処理はそれなりに重くなるしメモリも消費する
証拠はないけど、そういう仕様
どうして配列がbyValで直接渡せないのか、理由はよくわからないが、たぶんスタックオーバーフローを防ぐためのMSのおせっかいだと思う
Variantに配列を入れた時は、配列の本体は別の所に作られてスタックはVariant本体の分しか消費しない
だから許容する仕様にしたんじゃないのかな
0863デフォルトの名無しさん
2014/05/05(月) 18:06:25.33ID:/BaOb3+lDim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.CreateTextFile("\\PC2\os\test.txt")
.WriteLine Now
.Close
End With
Set FSO = Nothing
ネットワーク先のディレクトリに新規ファイルの書き出しを行った場合
ネットワーク先のPCが消えているとVBAエラーが発生しますが、このエラーを無視して
コードを停止させることなく続行させ続けるにはどうすれば良いのでしょうか?
0864デフォルトの名無しさん
2014/05/05(月) 18:15:41.79ID:zTX2z7nm0865デフォルトの名無しさん
2014/05/05(月) 18:23:09.75ID:/BaOb3+lありがとうございます!これは便利ですね。独学でVBAを勉強中ですが知りませんでした。。
0866デフォルトの名無しさん
2014/05/05(月) 18:25:54.17ID:hthjFo5y0867デフォルトの名無しさん
2014/05/05(月) 18:51:57.18ID:zTX2z7nm*ちなみにSleepはPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwmillsecounds As Long)と宣言してから使います
0868デフォルトの名無しさん
2014/05/05(月) 19:02:52.67ID:eTvbwywS0869デフォルトの名無しさん
2014/05/05(月) 19:37:01.29ID:uFaF33P2>>303
0870デフォルトの名無しさん
2014/05/05(月) 19:38:31.76ID:zTX2z7nmそれオレじゃないか(ワラ
0871デフォルトの名無しさん
2014/05/05(月) 20:03:01.60ID:rD1fSl2O文体と質問のアホさ加減が同じ
0872デフォルトの名無しさん
2014/05/05(月) 20:05:33.73ID:uFaF33P2DoEventsはメッセージループを処理する
0873デフォルトの名無しさん
2014/05/05(月) 20:06:58.64ID:uFaF33P20874デフォルトの名無しさん
2014/05/05(月) 20:09:20.00ID:F7Zw8bMG0875デフォルトの名無しさん
2014/05/05(月) 20:21:56.97ID:zTX2z7nmではさっそく質問に移ります
いろんなソフトウェアの上のほうに
ファイル(F)、表示(V)・・・、ツール(O)、ヘルプとあり、たとえばファイル(F)の下には終了(X)とだいたい決まっています。
これVBAから現在立ち上げてるアプリをすべてオブジェクト変数にいれて
そのメソッドとしてキー入力をできるようにできる方法はありませんか?
たとえばメモ帳を
Appli(1)というオブジェクト変数にして
Appli(1).KeySend("FX")というコードを書けば
見事にメモ帳が閉じるような。
もちろん本題は閉じることではなくいろんなアプリを自由自在に操ることですが。
0876デフォルトの名無しさん
2014/05/05(月) 20:43:36.05ID:iASqhGK2VBAからと言うのが
APIも含めるという広域を意味しているなら
出来ないこともない。
0877デフォルトの名無しさん
2014/05/05(月) 21:05:07.90ID:zTX2z7nm含めましょう。
ではどうやるのでしょうか?
0878デフォルトの名無しさん
2014/05/05(月) 21:31:26.89ID:uFaF33P2さすがにVBAの比率が低くなりすぎてスレチ
API関係のスレにでも行け
0879デフォルトの名無しさん
2014/05/06(火) 09:50:23.96ID:Avr/JzZk[引数] Webサイトページの一番上のバーに表示されてる「タイトル」
[返り値] なし
[機能] 現在開いてるWebページを全部調べて、引数の「タイトル」のものがあればそれをアクティブにしてタブなら前面に出してそれをオブジェクト変数に代入する。なければなにもしない。
0880デフォルトの名無しさん
2014/05/06(火) 14:55:03.32ID:jl3/KWxAはい、次のかた〜
0881デフォルトの名無しさん
2014/05/06(火) 16:34:49.64ID:EF/hc8MQAPIで可能
VBAでやる必然性なし
0882デフォルトの名無しさん
2014/05/06(火) 16:48:53.58ID:WIbNvSPM必然性?
0883デフォルトの名無しさん
2014/05/07(水) 01:13:46.53ID:XHO24LnTシートを右クリックなどして見れるようにするにはどうすれば良いですか。セルとかコメントに出力する以外の方法でお願いします。
0884デフォルトの名無しさん
2014/05/07(水) 01:37:28.97ID:uh4oWvq+http://officetanaka.net/excel/vba/tips/tips122.htm
0885デフォルトの名無しさん
2014/05/07(水) 01:56:01.55ID:XHO24LnT各シートにこういうプロパティ画面を表示するにはどうやるのですか?
0886デフォルトの名無しさん
2014/05/07(水) 11:11:46.79ID:aD6Um6cx0887デフォルトの名無しさん
2014/05/07(水) 13:35:40.93ID:w4bXJfpERegExpやMatchCollection型の変数を定義するとユーザー定義型未定義の
コンパイルエラーが出てしまうのですがどうしたらよいですか?
0888デフォルトの名無しさん
2014/05/07(水) 13:39:29.10ID:uh4oWvq+エラーが出る最小限のソース晒して
0889887
2014/05/07(水) 14:33:27.95ID:w4bXJfpERefFile = "C:\Windows\System32\vbscript.dll\2"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
RefFile = "C:\Windows\System32\vbscript.dll\3"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
Dim re As RegExp
Dim mc As MatchCollection
これだとコンパイルチェック前にライブラリがロードされてないから、
RegExp型やMatchCollection型が定義されてないってないなるのは当たり前ですが、
これを回避する方法はありますか? ライブラリロードだけを別マクロにして1度だけ
実行すれば良いんでしょうけど。
0890デフォルトの名無しさん
2014/05/07(水) 14:58:46.92ID:uh4oWvq+それはVBAでは基本的に無理
万能の解決策じゃないけど「CreateObject」「実行時バインディング」あたりで調べてみ
0892デフォルトの名無しさん
2014/05/08(木) 16:21:39.25ID:DqNc14pRVBAで正規表現を扱うためのやり方をググるとこの辺がヒットするんだけど
それではアカンの?
VBAで正規表現を使う (1/3):CodeZine
http://codezine.jp/article/detail/1655
Office TANAKA - Excel VBA Tips[正規表現によるマッチング]
http://officetanaka.net/excel/vba/tips/tips38.htm
0893デフォルトの名無しさん
2014/05/08(木) 16:45:09.21ID:UhAEWxzwなんかの事情でどうしても実行時に参照したいんだよな?
0894デフォルトの名無しさん
2014/05/08(木) 17:19:41.49ID:WIVGkEtc目的はなんで、それをやるとなにができて、どういうことが便利ですか?
0895デフォルトの名無しさん
2014/05/08(木) 18:24:47.72ID:uOW3clqTよくある話じゃないか
0896デフォルトの名無しさん
2014/05/08(木) 21:10:31.28ID:JZCmTzL0■ このスレッドは過去ログ倉庫に格納されています