[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/30 05:22 / Filesize : 296 KB / Number-of Response : 978
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part23



1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/
21 hibari.2ch.net/test/read.cgi/tech/1316931607/

前スレ:
Excel VBA 質問スレ Part22
toro.2ch.net/test/read.cgi/tech/1322400978/


697 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:24:36.03 ]
for each でレンジ範囲の文字列数え上げるとき、数え残すことある?

698 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:27:49.62 ]
>>697
例えば?

699 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:26.75 ]
count = 0
for each a in range("a1:e5)
if("あほ"=a.value) then
count =count +1
end if
next a

で、

for b =1 to a
にしてるんだけど、bがバグる


700 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:57.24 ]
さいごにnext bは入れてる

701 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:28.29 ]
>>699
aって何?

702 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:47.29 ]
>>699
○ For b = 1 To count
× For b = 1 To a


703 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:00.17 ]
ああcountにしてるけどバグる

704 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:45.84 ]
>>703
バグる?

705 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:52:53.95 ]
>>699
699がかなりあほってことでよろしいか?



706 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:54:53.70 ]
bに同じ数続くことがあるのでする

707 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:57:41.20 ]
マクロ記録をそのまま使ってる人いますか?
やはり自分で全部書くのが普通でしょうか。

708 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 16:22:56.46 ]
>>707
状況によるけど
そのままでは使い物にならないことが多い

ていうか、記録した方が早い部分と、自分で書いた方が早い部分とがあるので
うまく組み合わせた方が結果的に早くプログラムが完成する

709 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:26:58.50 ]
>>696
> >>694
> マーカーに透明なラベルを被せたら余裕で何でもできる
やり方教えてクレクレ

710 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:51:19.86 ]
DOSのコマンドライン引数を取得できないの?

Sub Workbook_Open
For I = 0 To ARGC -1
Debug.Print ARGV(I)
とか。

711 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:08:29.34 ]
>>709
そんな態度で教える馬鹿がいるか

712 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:09:20.05 ]
うっはwwwwwwいま気づいたんだけどもしかして時間かかる作業させるときってさいごにシート保存するコードとか入れたりするの当たり前だったりするわけですよねですよねえええ

713 名前:デフォルトの名無しさん [2012/03/17(土) 00:11:35.15 ]
あたりまえだ

714 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:14:16.48 ]
ああもしかして指定時刻にセーブする処理とか入れてリスク管理してみたりするのかあああ

715 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:34:43.42 ]
>>711
おしえれ



716 名前:デフォルトの名無しさん [2012/03/17(土) 10:26:53.14 ]
>>710
> DOSのコマンドライン引数を取得できないの?
>

GetCommandLine関数

717 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 10:58:03.30 ]
>>711
おしえれ ksg

718 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 11:47:45.96 ]
>>716
ありがとうございます。
msdn.microsoft.com/ja-jp/library/cc429108.aspx
ってこれ外部ライブラリ・コールか何かせんとあかんのやね、きっと。

719 名前:デフォルトの名無しさん [2012/03/17(土) 14:02:53.16 ]

Private Declare Function GetCommandLine Lib \\\"kernel32\\\" Alias \\\"GetCommandLineA\\\" () As Long
Private Declare Function lstrcpy Lib \\\"kernel32\\\" Alias \\\"lstrcpyA\\\" (ByVal lpString1 As String, ByVal lpString2 As Any) As Long

Sub Workbook_Open

Dim sBuf As String

strBuf = Space$(255)
Call lstrcpy(strBuf, GetCommandLine())

Debug.Print strBuf

end Sub


720 名前:デフォルトの名無しさん [2012/03/17(土) 14:05:29.66 ]
ごめん、p2で書いたら変な「\」がついちゃった

Private Declare Function GetCommandLine Lib "kernel32 " Alias "GetCommandLineA" () As Long
Private Declare Function lstrcpy Lib "kernel32 " Alias "lstrcpyA " (ByVal lpString1 As String, ByVal lpString2 As Any) As Long

こうね

721 名前:694 mailto:sage [2012/03/17(土) 22:07:32.08 ]
グーグル先生ってすごい!
クリックで値が取れた!

722 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:07:11.33 ]
>>669
派遣ですか?
正社員がいいのですが

723 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:17:58.27 ]
腐るからやめろよ

724 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:42:41.53 ]
こんにつあ質問ですお

A1-E1に1,2,3,4,5値が振ってあって
A2-E2,A3-E3,....,A100-E100まで数値がランダムに入っています。
このとき各行を、それぞれ列の昇順で並べかえたい。つまりA2-E2,A3-E3,....,A100-E100とそれぞれ昇順に並べかえたいのですが、
そのとき1-5の値の対応を残したいのです。どうすればよいでしょうか!!

725 名前:669 mailto:sage [2012/03/18(日) 17:09:54.42 ]
>>722
私は正社員ですがパートさんも居ます。
ただ、求人かけてないので・・・

あと、あまり詳しく書くと特定されそうなので
もうこれ以上書かないことにします。
とりあえず大阪府も大阪市も一切関係ない民間企業です。




726 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:18:26.86 ]
>>724
説明が下手すぎて質問が意味不明

727 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:31:41.37 ]
次の国会で青少年ネット規制法通すことにするわ
子どもたちを守るためには必要だよな

728 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:12:42.15 ]
>>724
おりあえず、A2:E2 をソートしたいらしい。

729 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:38:33.54 ]
>>724 とりあえずこれで皆の様子見てみて。
Sub Macro1()
' Version : Excel 2002 VB6.0

Range("A2:E2").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub

730 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:05:11.79 ]
たぶん要点は
>そのとき1-5の値の対応を残したい
だと思うんだが
具体的に何をどうしたいのかがさっぱり解らんな

731 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:42:22.24 ]
え…わたしの説明…ヘタすぎ!?

732 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:06:10.55 ]
んーとですねー
数値が入ってるセルを行毎に昇順で並び変えたときの、順番を取得しまして、
次にその順番を基準に、最初にセルがあった列番号を並べ変えてですね、
さらにそれにセルに入ってた数値を対応させたいのですけど、具体的にすればいいのかはわからなくて行を2行にするくらいしか思いつかないのですのでなにかよい方方法を教えてみて下さいマシマロ

733 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:21:45.79 ]
何言ってんだかさっぱりワカンネ

734 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:28:55.25 ]
ちゃんと説明しようとしない人間の質問に答える必要なし

735 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:40:34.77 ]
下記の様に作成したテキストボックスのShape objectを変数shSelに代入し
て、そこに文字列や書式設定をやりたい。

Sub mkTextBTest02()
  Dim shSel As Shape

    Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
      48#, 20 + 16 * lC, 10#, 16#)

    shSel.Characters.Text = lC '←$文字列を書く
    With shSel.Font '←$フォントの設定
      .Name = "MS ゴシック"
      .Size = 9
    End With
    shSel.ShapeRange.Line.ForeColor.SchemeColor = 1 '←$フォントの設定
End Sub

←$印の所でエラーが起きる。
.Characters .Font .ShapeRange は、class Shapeのpropertyでないから。
"ActiveSheet.Shapes.AddTextbox(〜).Select"として変数shSelの代わりに、
Selectionと書くとエラーが起きない。
class Shapeのproperty Characters,Font,ShapeRangeを指定するにはどうす
ればいいでしょうか。




736 名前:729 mailto:sage [2012/03/18(日) 21:59:27.07 ]
こんな感じ? F-J は順列番号
BEFORE:
 A1   B1   C1   D1   E1  
+-------+-------+-------+-------+-------
  1    2    3    4    5  
 21   20   19   18   17  
 31   32   33   34   35  
 45   44   43   42   41  
 56   52   53   54   55  
 61   65   63   62   60  
+-------+-------+-------+-------+-------
AFTER:
 A1   B1   C1   D1   E1   F1   G1   H1   I1   J1 
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------
  1    2    3    4    5    1    2    3    4    5  
 17   18   19   20   21    5    4    3    2    1  
 31   32   33   34   35    1    2    3    4    5  
 41   42   43   44   45    5    4    3    2    1  
 52   53   54   55   56    5    1    2    3    4  
 60   61   62   63   65    2    5    4    3    1  
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------

737 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:05:40.66 ]
説明が分からないから答えようがないのかそれとも説明は分かるけれども態度が気に食わないから答えないのかもし仮に後者なら貴方こそレスする必要は無いし説明が分からないならば分からない箇所を指摘してくれれば返答できるのだが!!!

738 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:07:03.60 ]
736まさにそれですそれを2行にするか1行に続けて書くか以外になにか案はありますかないのならば1行に続けて書いた方がスマートなんでそうしますが

739 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:14:21.32 ]
元データの末尾に列番号を加える
元のデータ
12 54 . 8 23 36
これを
121.542 83 234 365
にしてから並べ替えれば、下1桁をチェックすれば元の位置がわかる

740 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:20:57.88 ]
>>737
ちゃんと例を上げて処理をひとつずつ説明しろ
変な言葉遣い止めろ

741 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:36:53.87 ]
なるほどおおおお0.0001とかにすれば誤差も出ないしいい感じですなあ

742 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:30:16.99 ]
>>741
どんだけ低脳なんだよ
いいわけないだろ
ただ複数の値を保持したいだけなんじゃないのかよ
データ用と表示用で表を分けるとか
Idプロパティ使うとかすればいいだろ
Idなら、
A.Idを降るプロシージャ(1〜5)
B.それぞれの行を並べ替えるプロシージャ
C.IdとValueを入れ替えるプロシージャ
を作って、ABで並べ替えた後、
CBCで元の並びに戻る


743 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:36:09.02 ]
あっはあidプロパティねthx!

744 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:40:58.34 ]
真性か・・・

745 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:38:22.65 ]
'
↑これを
エクセルのシート上で
="'"&A1
と書くとセルA1の文字列の前に ' が
連結されるのですが

VBAで

dot = "'"
Cells(A, 5) = dot & Cells(A, 1)

と書いてもA5セルの文字列(A1の中身)の前に ' が
表示されずA5セルをクリックすると
上部のセルの中身が見れるバーには ' が文字列の前に
表示されています。
A5セルを他のセルにコピーしても
文字列だけコピーされて ' はコピーされません。

VBAを使って、文字列の前に ' を連結させたいのですが
良い方法ありませんか?



746 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:08:10.31 ]
>>745
まず自分で調べろ
俺も知らなかったけど
ググったら載ってたぞ

いい加減にしろ!!

747 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:02:09.18 ]
>>746
VBAのプログラムがおかしいかと
何時間も考えたけど
ぐぐったら1分で解決しました
ありがとう

748 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:01:31.40 ]
>>735
以下の様に、変更するとテキストボックスをかけるようになった。

Sub mkTextBTest02()
  Dim shSel As Shape

  Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
    48#, 20 + 16 * lC, 10#, 16#)

  shSel.TextFrame.Characters.Text = lC '←$文字列を書く
  With shSel.TextFrame.Characters.Font '←$フォントの設定
    .Name = "MS ゴシック"
    .Size = 9
  End With
  shSel.Line.ForeColor.SchemeColor = 8 '←$フォントの設定
End Sub

VB Editorのヘルプを調べてわかった。
各くオブジェクトのpropertyと、propertyのobjectを定義するclassの区別
がついていなかった。


749 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:12:28.38 ]
C3に 11582.43、C4に11722.98という数字が入っています
ワークシートで= =C4-C3とすれば、140.55という数字が入ります
んで、VBAで同じように引き算で
Cells(4, 5) = Cells(4, 3) - Cells(3, 3)
とすると見かけ上は同じく140.55という数字が入っていますが、
上の関数入力するとこを見ると140.54999999
という数字になっています

なぜ?

この場合小数点以下三桁のとこで四捨五入しないとだめ?

750 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:56:52.80 ]
>>745
"'"は、セルが文字列型であることを示す接頭辞だから消えてしまう。
Cells(5, 1) = "''" & Cells(1, 1)
と書くか。
しかし、Cells(6, 1) = Cells(5, 1) 頭に"'"あるCells(5, 1)をCells(6, 1)
にコピーすると、Cells(6,1)では頭の"'"は消えてしまう。

しかし、Cells(A,5)と言う書き方、間違っているのでは。


751 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 01:00:47.78 ]
>>749
コンピュータで小数点以下を扱う場合は誤差がでることを考慮に入れる必要があるんだよ
ちなみにその計算式のセルを小数点以下20桁とかの表示にしてみ

>>750
>しかし、Cells(A,5)と言う書き方、間違っているのでは。
文法的にはAという変数でRowIndexを指定してる。間違ってはいない
まあ、意図したものと違うだろうって意味では間違ってるがw

752 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 05:22:57.78 ]
>>751
とりあえず、数字を100倍して引き算をし、その後また100で割るようにしておきました。

753 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 10:39:54.04 ]
sheetとsheetの結合ってどうやるの

754 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:43:04.59 ]
しーとと
しーとの
けつごう

755 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:52:15.11 ]
あのぉ…大量のデータをコピーしようとすると…リソース不足とでるんですが…



756 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 17:38:02.76 ]
型が一致しません、というエラーをスルーして処理を続けさせるにはどうすればよいですか?

757 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:03:41.58 ]
>>756
On Error Resume Next

758 名前:デフォルトの名無しさん [2012/03/20(火) 19:43:41.75 ]
BookB の全部をコピーして、BookA に貼り付けて BookB を保存しないで、コピーしたデータも
他に使わないで、ただ閉じたいんですが、どう書けばいいでしょうか?

マクロの記録だと、ブックを閉じてしまうため、記録が残りません。

759 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:53:02.06 ]
全部をコピーって具体的には?
ぶっちゃけファイルコピーで済むようにも見える。

760 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 20:35:55.01 ]
Workbooks("BookB").Close False


761 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:34:10.11 ]
BBとか多い列数はどうやって数えますか?

762 名前:デフォルトの名無しさん [2012/03/20(火) 21:50:35.25 ]
column関数

763 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:03:45.84 ]
if small (範囲,1)とするとエラーが出ます
どう書けばよいですか

764 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:06:51.11 ]
Application.Small

765 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:40:15.33 ]
出来ねええ



766 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:41:18.41 ]
>>761
かぞえなくても Cells(5, "BB") みたいに書けるからあんまり困らない

767 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:42:22.85 ]
application.smallが上手くいかない件

768 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:44:11.28 ]
多分それデータが悪い

769 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:47:07.63 ]
オブジェクトが必要ですとでてくる

770 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:49:05.83 ]
範囲って変数の型がRangeじゃないんじゃない?
これで動いたぞ

Dim 範囲 As Range
Set 範囲 = Range("A1")
Debug.Print Application.Small(範囲, 1)

771 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:57:41.83 ]
set c = worksheets("a").range(cells(1,1),cells(1,2))
これどこちがう

772 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:01:05.19 ]
>>771
エスパー能力を最大限に発揮すると思いつくのはこんなとこ

・シート名が"a"ではない
・セルの範囲が実は間違っている
・変数名がcではない

773 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:07:26.09 ]
今日のエスパー養成所はここかっ!


774 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:07:38.93 ]
アプリケーションの定義またはオブジェクトの定義のエラーですがでます

775 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:09:11.73 ]
>>771
Set c = Worksheets("a").Range(Worksheets("a").Cells(1, 1), Worksheets("a").Cells(1, 2))
又は
Set ws = Worksheets("a")
Set c = ws.Range(ws.Cells(1, 1), ws.Cells(1, 2))



776 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:12:44.97 ]
できますたwwwwありがとお

777 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:52:04.45 ]
右クリックの動作を処理に応じて変えることはできませんかね?
例えば最初は通常の動作(ショートカットメニューを表示)、あるコマンドボタンを押してから右クリックすると条件付き書式設定のダイアログボックスを表示、また別のコマンドボタンを押すと通常のショートカットメニューに戻す

778 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 05:31:19.87 ]
できます

779 名前:デフォルトの名無しさん [2012/03/21(水) 11:58:38.03 ]
activecell.address で"$"つきの番地が得られます。
$なしの番地はどうすれば取得できるのですか?

そもそもなぜ$サインがつくのでしょうか?

780 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 12:03:18.85 ]
>>779
replace関数で"$"を""に置き換えるといいです

781 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 12:58:56.00 ]
>>779
ActiveCell.Address(False, False)

ヘルプを読めよ
式.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

782 名前:デフォルトの名無しさん [2012/03/21(水) 14:58:10.99 ]
>>780,781
Thnx

783 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:54:20.16 ]
ちょっと教えてほしいのだが
引数明示して書くとき、例えば下のケースだが

Range(Cells(1, 1), Cells(1, 2)).Replace what:="111", replacement:="", MatchCase:=False

これはすべて小文字で入力したんだがmatchcaseだけ修正されるのはなぜなんだ?

784 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 19:23:14.78 ]
>>783
仕様だから、としか答えようがない

785 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 19:53:58.40 ]
>>784
ありがとう
謎仕様なんだな




786 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:16:41.56 ]
Microsoftだもの

787 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:20:20.58 ]
>>783
ホントだ、気持ちわりーな

788 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:26:12.89 ]
MatchCaseにカーソル置いてF1押すと、Sort.MatchCase プロパティ が表示できる
whatやreplacementだとキーワードが見つかりません。になる
MatchCaseってプロパティと勘違いして補正されてると思われ

789 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:38:35.97 ]
>>788
あーなるほど
理解した、ありがとう

しかしこれ気になるよな
ただ、直すのも面倒なんだよな

790 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 08:04:17.83 ]
directXから音を鳴らしているのですが
音量を変えるにはどうしたらいいでしょうか

up1m.ko.gs/src/koups1393.zip


791 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:09:48.74 ]
>>790
>>2

792 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 15:08:59.92 ]
>>778
遅くなりましたが出来ました。
もう一つ質問なのですがCtrlキーを押しながら任意のセルを選択した時、そのアドレスを全て取得するにはどうすればよいのでしょうか
例えば、A1、A3、A7、B1、B2、B4、C3、C4、C5を選択した時にこの9個のアドレスを取得したいのです

793 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 15:16:28.75 ]
>>792
Application.Selection

794 名前:792 mailto:sage [2012/03/23(金) 16:17:34.92 ]
>>793
わかりませぬ、具体的に教えて下さい。

795 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:27:44.81 ]
debug.print application.selection.address



796 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:07:16.00 ]
条件付き書式を設定したセルをアクティブにして
これ以外のシートの内容を下のマクロで消すと表示がおかしくなるんだけど
なぜなんだ??

sub test
worksheets(2).cells.delete
end sub

条件書式以外にもindirectを使ったセルでもおかしくなる

797 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:11:20.36 ]
worksheets(2)を参照してたからじゃないの?

798 名前:792 mailto:sage [2012/03/23(金) 18:16:57.46 ]
Dim Sel_Addr As String
Sel_Addr = Application.Selection.Address
としたら取得できました。

799 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:35:18.85 ]
いちいちそんな報告いらん

800 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:54:15.56 ]
>>797
参照って
=Sheet2!A1みたいに使ってるかってことか?
なら使ってない

表示がおかしいって書いたが、アクティブセルの囲い線が残るような感じ

801 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 07:44:03.99 ]
>>800
単なるバグじゃないの?
ScreenUpdatingをFalseにしてからworksheets(2).cells.deleteしたらいい

802 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 15:01:00.18 ]
>>801
やっぱりバグなのかー
ありがとう

803 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:18:46.43 ]
formの表示中に自由にセルを選べるように
したいのですが・・・

804 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:21:04.88 ]
>>803
モードレスで開けばいい

805 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:21:48.60 ]
vbModeless



806 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:26:46.00 ]
>>804
Thnx

モードレスで、表示すればよいのでは?

UserForm1.Show vbModeless
とか
UserForm1.Show 0


807 名前:デフォルトの名無しさん [2012/03/24(土) 16:38:43.39 ]
A1とかセルの座量をべた書きするんじゃねーよ
セルに名前を付けて名前経由で座標を指定しろよ

ソース解析&改造しててやりにくくてしかたない

808 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:49:06.55 ]
複数のCSVファイルを1つにしたくて
調べたら
以下のサイトが参考になったので
ttp://ziddy.japan.zdnet.com/qa3168255.html?order=DESC&by=datetime



Sub CSV結合()
Const CRFILE As String = "C:\My Documents\test2"
Dim obj As Object
Dim arg As String

Set obj = CreateObject("Shell.Application") _
.BrowseForFolder(0, "SelectFolder", 0)
If obj Is Nothing Then Exit Sub
arg = obj.self.Path & "\*.csv "
Set obj = Nothing
Call Shell(Environ("ComSpec") & " /c copy /b " & arg & CRFILE)

End Sub

とやっているのですがうまくいきません。
フォルダ選択の画面はでてくるのですが
C:\My Documents\test2
に結合されたCSVファイルができるはずですが、できなくて。

ソース間違ってますか?
エクセル2007です。

809 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:01:15.46 ]
書き出すファイル指定が間違ってるかと思い
Const CRFILE As String = "C:\test2"

Cドライブ直下にtest2フォルダ作ってみてもだめでした

810 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:07:43.90 ]
Shell関数に渡しているコマンドライン文字列を確認したら?
とりあえず、空白を含むパスはダブルクォートで囲まないと駄目だ。

811 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:15:53.57 ]
>>808
Const CRFILE As String = "C:\My Documents\test2.csv"

で出来たけど?

812 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:20:05.20 ]
>>808
>>2

813 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:37:21.02 ]
>>807
こめんなさい。心当たりが沢山ありすぎてもう…

814 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:41:43.68 ]
>>810
コマンドライン文字列とはなんですか?

他にCSVファイルを2個作ってみたけどだめでした。


>>811
拡張子つけたけどだめでした。


>>812
XPでエクセル2007です


ソースをステップ実行させても
全部の行を実行してるのに
なんだろうこれは・・・

815 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:50:40.99 ]
Const CRFILE As String = """C:\My Documents\test2.csv"""



816 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:54:23.10 ]
> XPでエクセル2007です

そう来るかw


817 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 18:38:25.29 ]
>>814
>>2

818 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 19:20:45.41 ]
>>775
これで指定したレンジ範囲の数値を、小さい順に並べた場合の各々の差が、x以上であるとかx以下であるといった判定をするにはどう書けばよいですか!

819 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:30:24.96 ]
>>818
IsNumeric関数とIfステートメントを使う
詳細はヘルプを読めばわかる

820 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:05:47.67 ]
isnumericじゃできなくね?

821 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:08:14.94 ]
数値かどうかの判定に必要だと思ったんだけど、不必要だと思ったなら使わなくても何ら問題ない
強制力なんかないからね

822 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:55:40.15 ]
if a1>a2+x>a3+x thenが上手く動かないのだが、なぜか?

823 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:59:30.43 ]
>>822
if a1>a2+x and a2+x>a3+x then

824 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:02:42.68 ]
これがa3までじゃなくa100まである場合、どうすればいい?

825 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:04:33.81 ]
誤り if a1>a2+x>a3+x then
訂正 if a1>a2+x>a3+2x then



826 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:07:17.88 ]
そうか全組み合わせの差の絶対値の最小値がx以上ならいいわけか

しかしx以下の場合を求めたいときはどうすればいい?

827 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:08:16.93 ]
何だVBA力のおっさんか

828 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:13:47.11 ]
>>824
VBAを使うしかないだろうな

829 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:23:17.89 ]
>>824
アンダースコアを使えばステートメントを複数行に分けて記述することができる
例えばこんな感じ
If 条件式1 And _
条件式2 And _
条件式3 And _
条件式4 And _

既にスレチなので>>2をよく読んでくれ

830 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 02:53:38.96 ]
例えば処理したい「実行1」というプロシージャがありあまして。

call 実行1
で普通に処理されるのですが。

Dim moji As string

moji = "実行1"

call moji

は当然ですが実行されません。ですが、何かプロシージャそのものを変数化させて
状況に応じて呼び出せるようにする方法があるでしょうか?

ユーザーフォームのリストボックスに何十種類ものプロシージャがあるのですが、それらを
効率的に場合わけして処理するのに、それが出来ると便利なのですが。
方法はないのでしょうか?

831 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:35:34.73 ]
>>830
Application.Run ThisWorkbook.Name & "!" & moji

普通は Call ほにゃらら(moji) ってやって、ほにゃららの中でmojiによって分岐するようなプログラムを書くもんだけど

832 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:37:32.62 ]
ifとかselectでそれらを場分けしてcallする処理を1個用意すりゃ良いじゃん
つか普通そうする
プログラミングの手法とかそういう話だから後はそういうスレで聞いてくれ

833 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:38:56.85 ]
あ、リロードしないのが自分の悪いクセだな…

834 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:28:18.30 ]
>>831
ありがとうございます。

>>832
実はそのように、select で、分岐していたんですが、数が多くなりすぎて。
ただ、selectの分岐がいくら多くなっても、速度とかに影響するという
わけでもないので、良いといえば、良いのですが、スマートにできないかと
気になってしまいまして。

835 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:59:29.22 ]
for i=1 to n
if a(i-1) - a(i) <= x then y= false
next I




836 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:22:52.17 ]
a列とb列の相関を調べたい

837 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:31:17.78 ]
VBA使う必要ないけど

838 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:04:00.73 ]
複数のCSVファイルをひとつのXLSファイルへまとめるにはどのようにしたら効率がよいですか?
20120201.csv
20120202.csv
・・・
20120228.csv
というファイルを201202.xlsファイルにまとめたいと考えています。
(シート名を01,02,・・・,28にして、1bookに28シートが出来上がるイメージ)

839 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:13:25.03 ]
>>838
ご自身のコーディング速度と手作業での速度を比較してみればどちらが効率がよいか一目瞭然です
1回限りの作業であれば手作業でやるのが一番効率がよいでしょう
ExcelVBAに関係がない話題なのでこのへんで終了

840 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:06:52.20 ]
配布物にExcelを利用したいのですが
配布物の中の別のファイルの情報を取得する場合
ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html
で相対パスだと危険があるとあったのですが
ThisWorkbook.Path & "\..\date\ファイル名"
のようなやり方だと階層をまたいでも中をいじられない限り
どんな環境の人が使っても問題ないと思っていいのでしょうか

それと、相対パスで一つ上の階層に行くやり方で
Dim mPath As String
mPath = ThisWorkbook.Path
i = Len(mPath) - Len(Replace(mPath, "\", ""))
If i > 1 Then
mPath = Mid(mPath, 1, InStrRev(mPath, "\") - 1)
End If

というやり方が紹介されていたのですが
これは..に対して上に階層があるのか調べる機能が付いただけ
という認識でいいのでしょうか

841 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:18:37.85 ]
>>840
お前の認識間違えてるぞ
アホ
ちゃんと読め

842 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:18:46.91 ]
>>840
すべてにおいて見当違い
手始めに「相対パス」がなんなのか理解してきた方がいい

843 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:40:54.08 ]
>>839
一回限りの作業ではなく、毎月発生する作業です。

現在は

新しいブックに開く→シートの移動

を繰り返すコードにしてるのですが、
見るからに効率が悪くなっています。

844 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:51:07.07 ]
>>842
相対パスって基準から見た位置ですよね
URLのは基準を指定しないとカレントフォルダからになるから危なくて
ThisWorkbook.Pathで基準をブックのある位置を指定すれば問題ないのかなと思ったんですが

845 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:57:55.20 ]
>>843
検索すれば、参考になるコードいくらでも出てくるだろ。
Dir 関数使えばいいんじゃない。



846 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:37:10.43 ]
>>843
見るからに効率が悪いことに気づいてるんだったら改善すればいい

847 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:37:33.36 ]
>>844
「危ない」とか「問題」ってのは具体的にどういうことなの?
具体的に説明してくれないと誰もわからないよ

848 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:55:49.31 ]
>>843
QueryTables.Add使え

849 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 22:44:15.07 ]
>>847
「絶対的基準に基づいてないから危ない」とか言い出すぞw

850 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 22:54:44.01 ]
>>844
もう一回お前のリンク先読み直してから来いよ
音読な

851 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 01:01:30.47 ]
>>838,840
Excelどうこうよりも、まず日本語の読み書きを勉強した方がいいと思う
社会人になってから苦労するよ?

852 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 16:27:18.20 ]
EXCEL VBAは基本的にはオブジェクト指向言語。
だからJAVA, C++と同様にクラス間の継承もあるが、EXCELで予め定義された
既存のクラスのみでその関係があり、↓ここを見るとプログラマが定義する
マクロのクラスで、継承関係にあるものを作ることはできないみたい。
members3.jcom.home.ne.jp/daruma_kyo/aboutooa/vba_limit.html

既存のクラスの継承関係。例えば、collection WorkSheets,Chartsは、
collection Sheetsを継承している。

ActiveWorksheetでその時にカーソル(focus)を当てているものを示す、
property Selection。

その時にカーソルを何に当てているかによって、Selectionのクラスが、
Range, Shape, ChartAreaなどに変化しているみたい。

このproperty Selectionを定義しているクラスは、多分、あらゆるクラス
の継承元になっているclass "Object"でないかと思っていますが、
どうなんでしょうか。


853 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 16:48:39.95 ]
>>852
オブジェクトブラウザというものがある

854 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:19:20.10 ]
複数の行の挿入が面倒くさかったのでVBAを学んでみようと思ったのですが試しに作ったマクロが
Sub 行の挿入()
Dim i As Integer
i = 1
Rows("i:2").Insert Shift:=xlDown
End Sub

型が違うと出てきます
iの定義が間違ってるのかと思うのですが
LongやVariantなども試したもののだめで、整数値で型が違うといわれるのもなぜかわかりません
初歩的で申し訳ないですが教えてください


855 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:40:07.26 ]
>>854
“Rows”の上にカーソルを置いて[F1]キーでヘルプを開いて読め



856 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:58:53.56 ]
>>855
できました
ありがとうございます

857 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 21:51:31.61 ]
>>852
>EXCEL VBAは基本的にはオブジェクト指向言語。
VBAはもともとオブジェクト指向ではない言語をオブジェクト指向に拡張した言語(の派生)
オブジェクト指向言語だと言いきるには不備が多い

>既存のクラスの継承関係
基本的に継承関係は保障されているわけではない(と思う。保障されてるならソース教えてくれ)
つまり(Setによる代入で)キャスト出来るかどうかは実行してみないと解らない

>ActiveWorksheetでその時にカーソル(focus)を当てているものを示す、property Selection。
ActiveWorksheetなんてクラス(型)はない。WorksheetにはSelectionなんてプロパティはない

>Selectionのクラスが、(略)変化しているみたい。
Selectionなんていうクラスも無いのは理解できてるのか?
(Windowクラスの)Selectionの戻り値の型について、Object型で実際はいろんな型が戻されるんだぞ

>このproperty Selectionを定義しているクラスは、
Selectionなんてクラスはないし、Selectionプロパティを実装(定義)してるクラスはどんな型だろうと関係ない
問題はSelectionプロパティ(の戻り値)の型

>あらゆるクラスの継承元になっているclass "Object"でないかと思っています
VBAにはObjectという型はあるが、Objectクラスというクラスはない(はず)
Object型にはあらゆるクラスが格納できるが、それは全てのクラスがObjectから派生してることを意味しない
なぜならVBAは純粋なオブジェクト指向言語ではないから

858 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 11:52:43.27 ]
>>857
> 基本的に継承関係は保障されているわけではない(と思う。保障されてるならソース教えてくれ)
> つまり(Setによる代入で)キャスト出来るかどうかは実行してみないと解らない

できない例は?

859 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 14:59:45.96 ]
>>>857
class, object, collection, propertyの概念の区別がきっちりできていな
いです。

>>Selectionなんてクラスはないし、Selectionプロパティを実装(定義)してるクラスはどんな型だろうと関係ない
object browserで見ると、Selectionはobject Applicationとobject Windows
のmember(property)になっているみたいです。

これのヘルプを見る。
>>Property Selection As Object 読み取り専用
>>Selection プロパティ
>>Application オブジェクトでは、アクティブウィンドウで現在選択されて
>>いるオブジェクトを返します。
>>Windows オブジェクトでは、指定されたウィンドウで現在選択されている
>>オブジェクトを返します。

>>オブジェクト指向言語だと言いきるには不備が多い
↓参考
sites.google.com/site/compositiosystemae/home/vbaworld/upper/exp3/polymorphi

VBAのclass moduleでクラスを定義するとき
クラスの構築子(constructor)に当たるもの Class_Initialize()
クラスの消滅子(destructor)に当たるもの Class_Terminate()

構築子の引数はサポートされていない。


860 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:13:38.21 ]
>>859
> class, object, collection, propertyの概念の区別がきっちりできていな
> いです。

できてないのはお前だけじゃないの?

861 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:32:30.71 ]
なんかVBAがオブジェクト指向的に駄目だ駄目だって言う奴多いけど、
適切なところでclassモジュールを使って、VBAで使える範囲の機能を
使えばいいのにっていつも思う。

とか言うと、VBAじゃ適切なところなんてない的な話になりがちな気がするが。

862 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:36:41.16 ]
この手の話を質問スレでしないで欲しい
自分の中で答え持っててそれを主張するだけなんだから

863 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:57:49.74 ]
VBAスレはここだけしかないんだから、ここでいいだろ

864 名前:862 mailto:sage [2012/03/28(水) 17:07:48.32 ]
あ、これ質問だったのか
ごめんよく読んでなかったは

865 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 17:23:26.77 ]
ガキはすっこんでろ。



866 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:12:36.94 ]
>861

はげどう。
継承だって工夫すればできるし、
コンストラクタの引数がないのも特別不便ではない。



867 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:31:02.19 ]
オブジェクト指向厨は市ね。
VBAごときの小規模アプリに
オブジェクト指向など無用だ。

868 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:33:47.05 ]
工夫した継承はコード量が多く、結局オブジェクト不志向(データ志向っての?)に落ちついてしまう
って事があったなーと、ふと思い出したっす。

869 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:45:10.16 ]
ツールバー追加のマクロを組んだのですが、ブックを閉じるときに
ツールバーを削除しようとするとエラーが出ます。
原因をご教示下さい。
コードは長くなるので分けて書き込みます。


870 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:48:22.21 ]
Private Sub Auto_Open()
Dim xlAPP As Application
Dim objBar As CommandBar
Dim objCont As CommandBarControl
Dim objBtn As CommandBarButton
Dim vntCaption As Variant , vntTipText As Variant , vntOnAction As Variant
Dim IX As Integer
Dim blnTRUE As Boolean
Set xlAPP = Application
vntCaption = Array("登録(&A)", "更新(&U)", "削除(&X)")
vntTipText = Array("登録を行ないます", "更新を行ないます", "削除を行ないます")
vntOnAction = Array("BTN_TOUROKU", "BTN_KOUSHIN", "BTN_SAKUJO")
Set objBar = xlAPP.CommandBars.Add(Name:=g_cnsTITLE, Position:=msoBarTop)
blnTRUE = False
For IX = 0 To 2
Set objCont = objBar.Controls.Add(Type:=msoControlButton)
objCont.BeginGroup = blnTRUE
' CommandBarButtonオブジェクトの参照を取得
Set objBtn = objCont
objBtn.Style = msoButtonCaption
objBtn.Caption = vntCaption(IX)
objBtn.TooltipText = vntTipText(IX)
objBtn.OnAction = vntOnAction(IX)
blnTRUE = True
Next IX
objBar.Visible = True
objBar.Protection = msoBarNoChangeVisible
ActiveWindow.ScrollRow = 1
Set objBtn = Nothing
Set objCont = Nothing
Set objBar = Nothing
End Sub

871 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:50:44.42 ]

' 閉じる時の自動実行処理
Private Sub Auto_Close()
Dim xlAPP As Application
Dim objBar As CommandBar

Set xlAPP = Application
★Set objBar = xlAPP.CommandBars(g_cnsTITLE)
objBar.Delete
Set objBar = Nothing
End Sub

★の部分で
実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

となります。原因と対策をご教示下さい。


872 名前:デフォルトの名無しさん mailto:sage [2012/03/29(木) 00:07:11.46 ]
>>871
g_cnsTITLEに該当するツールバーがないんじゃない?

873 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 00:17:48.05 ]
>872
直接ツールバー名を指定したら無事動きました。
ありがとうございました。


874 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 10:35:16.91 ]
>>868
Strategy Patternとか超便利なんですけど。

875 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 20:03:26.77 ]
動的に作成したCommandButtonにクリックイベントを
登録するにはどうすればいいの?




876 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 20:29:50.48 ]
Outlookで仕事で毎日送ってるメールがあるんだけど
本文で日付以外は全部一緒。

Templateで、日付もその日のが自動入力、って設定する方法はどうやりますか?
マクロでもokです。

877 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:45:11.26 ]
date | Mail -s 今日のメール who@where.co.jp

Unix使えよオマエら

878 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:51:58.76 ]
>>876
OutlookのバージョンとExeclのバージョンを教えて

879 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 21:14:12.72 ]
ともに2007です >>878

880 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 01:39:29.67 ]
>>876
EXCELまったく関係ないのはスレ違いなんだが
outlook テンプレート 日付 でググって最初のページでも見てろ

881 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 11:47:57.65 ]
どう考えてもこのスレに辿り着くより解法が載ってるサイトに辿り着く方が早いと思うんだけど
検索サイトを一体どんな風に利用しているんだろう?

882 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 19:39:23.25 ]
>>875
WithEventsで宣言した変数に参照代入する

883 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 17:49:54.34 ]
A3の範囲に入っている数字が読めるように
列幅を大きくするとOKで
列幅を小さくして数字が##のようにすると
Set C がNothing になってしまう、いい方法ありますか

A2 = "gg50": A3 = "gg11:gg45"
n = sh4.Range(A2)
Set C = sh4.Range(A3).Find(Val(n), LookIn:=xlValues)


884 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:07:52.43 ]
>>883
検索するときに列幅を広げて
検索が終わったら列幅を元に戻す

885 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 18:14:12.91 ]
わかりました、そーします
ありがとう




886 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 08:36:11.39 ]
だれかSQLでdecodeに当たるような関数をVBAで教えてくれ
調べてもreplaceしか出てこないんだ
内部処理で文字列を違う文字列として扱ったりしたいんだ


887 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 10:29:49.84 ]
>>886
IIf関数かIf...Then...Else ステートメント
ちなみに標準SQLにはDECODE関数なんて無い

888 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/05(木) 11:11:06.09 ]
>>886
Choose
officetanaka.net/excel/vba/function/Choose.htm

889 名前:886 mailto:sage [2012/04/05(木) 23:16:08.15 ]
>>887
>>888
さんくす!iPhoneからだと規制されてて書き込めなかった
今日、現場の作業で活用させて頂きました

890 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 04:53:41.84 ]
オフィス田中はNGにしてほしい

891 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 07:29:19.45 ]
>>890
なんで?

892 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 07:32:09.99 ]
>>891
そんな有名なところだれでも知ってるから
すでに読んでる

893 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 08:20:34.61 ]

自分が知ってることは他人も全部知ってるべきだと思ってる池沼

894 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 10:04:50.92 ]
まぁ>>888みたいにリファレンスとして貼るならMSのサイトを貼れよとは思う

895 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 19:27:40.21 ]
>>892
何が「誰でも知っている」だ。
俺はそんなサイト知らねえぞ。
お前のためにあるスレじゃねえから
自己厨レスはやめとけ。



896 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 19:30:55.02 ]
>>894
マイクロソフトみたいな有名なところだれでも知ってるから
すでに読んでる

897 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 00:22:42.19 ]
セル範囲を飛び越えて選択したいのですが
Range("A1,B3")をRange(cells(1,1),cells(2,3))でやることってできますか?
試しにコンマ入れてみたけどできませんでした

898 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 00:36:09.97 ]
>>897
Application.Union(Cells(1, 1), Cells(2, 3))

899 名前:897 mailto:sage [2012/04/07(土) 00:47:26.65 ]
できました
ありがとうございます

900 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 03:29:15.39 ]
オフィス田中は何ググッても出てくるよな

901 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 05:29:02.44 ]
オフィス田中は数年前に行き着いたが間違い記事があり
それを2,3年経っても放置している上に、自分と大差ないレベルらしく
読んでても新たな発見とか嬉しい驚きとか全然無いんで全く行かなくなった

902 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 07:16:36.62 ]
MSDN一日中眺めてればいいよ

903 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 07:39:34.18 ]
20年くらい前はそれでも全体見廻せたが
いまそれやると一生無駄にすると思う

904 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 08:32:51.50 ]
>>892
>>>891
>そんな有名なところだれでも知ってるから
google検索なんか利用できないじゃん。有名なところしかヒットしない仕組みなんだもの。

905 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:05:07.95 ]
シート2のA1:A30のデータをシート1の
B2:B12,D2:D12、F2:F12
の用に3行に分けて張り付けたいときは
FOR ....next で繰り返しするしかないのでしょうか?

何か一発で行けるようなスマートなやり方はないでしょうか?




906 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:31:13.82 ]
>>905
B2:B12、D2:D12、F2:F12は3行じゃなくて11行だと思うけど?

一発じゃないけどループ使いたくないならこんなのとか
With Range("A1:A30")
Dim v As Variant
v = .Offset(0)
Range("B2:B12") = v
v = .Offset(10)
Range("D2:D12") = v
v = .Offset(20)
Range("F2:F12") = v
End With

907 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:49:21.59 ]
>>906
>>B2:B12、D2:D12、F2:F12は3行じゃなくて11行だと思うけど?
確かに・・・
B2:K2、B4:K4、B6:K6の間違いでした。

シート2のA1:A30には不連続のデータが入っていて、
それのA1:A10をB2:K2に
A11:A20をB4:K4に
A21:A30をB6:K6にコピーしたいのです。

>906を試してみると一行に全ておなじデータが入ってしまいました。


908 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 18:01:47.39 ]
>>907
コピペしたら?

Range("A1:A10").Copy
Range("B2").PasteSpecial Transpose:=True
Range("A11:A20").Copy
Range("B4").PasteSpecial Transpose:=True
Range("A21:A30").Copy
Range("B6").PasteSpecial Transpose:=True

909 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 19:47:57.72 ]
>>908
やはりそうするのが無難ですよね。

別件なのですが、Findで検索してヒットしたせるから
10行目までの範囲を指定したい場合はどうしたら
いいですかね?
Offsetを使って色々しているのですが上手くいきません。

910 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 19:52:21.42 ]
>>909
Resizeプロパティ

911 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 22:45:34.62 ]
>>910
サンクス


912 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 13:54:16.86 ]
教えてください。

OS:XP EXCEL:2007
ユーザーフォームを起動させると、言語バーの輝度が落ちてしまい日本語入力ができなくなります。
F8ポチポチでは再現せず…適当なポイントで止めても再現せず…
一旦エクセル落として開き直せば復帰します。
ユーザーフォームはクラスを使ったカレンダーフォームです



913 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 18:30:01.65 ]
Excel VBAは基本的なところ(セル・シート・ブック)は完ぺきにマスターしたのですが
苦手なのがサブルーチンをいっぱい作ってそれらを効果的に使う方法や、どうやって全体像を把握するのかや、
フォームを駆使して、それをどうやって標準モジュールと連携させるかとか、
変数についてローカル変数やグローバル変数をどう概念的に理解して使いこなすとか
そのへんでつまづいています。

基本的なところ(セル・シート・ブック)は、入門書やすこしレベルが上のものでも、本やサイトでいいのがいっぱいありますが、
「サブルーチン」「フォーム」「変数」とかについてに特化した入門向けから上級者向けの本やサイトがあれば教えてもらえますか?

914 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 18:48:40.75 ]
個人用マクロ(PERSONAL.XLSB)を作っているのですが
[X]で閉じるときもう一回押さないと閉じないんです。
これを回避する方法ありますか?

915 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:02:50.68 ]
>>913
>>2



916 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:03:25.69 ]
>>914
>>2

917 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:13:04.47 ]
>>913
難しく考えすぎ。
「使いこなそう」などと考えるのがおかしい。
VBAはシートと関数で実現が難しい機能が
ある場合の補助手段。
フォームとか面倒くさい機能は使うな。
シートという立派なGUIがあるんだから。
あとルーチンも変数も全部Publicでいいから。

918 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 20:58:39.07 ]
「完ぺきにマスターした」なんて書いてる時点で釣りなんだからスルーしとけ

919 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 22:57:28.08 ]
>913
えっと、そういうのはVB(VB6まで)の入門書を卒業するレベルならいいんだろうけど、
いまさらVB6の本はないからねぇ

>914
アドインにすれば?

920 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 23:00:30.69 ]
>>913

VBAの基本的な文法からきちんと勉強してみれば?

日経BP社の
Microsoft Excel VBA セミナーテキスト [2010/2007/2003対応]
なんてなかなか良い内容だと思ったけど。

921 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 00:32:51.14 ]
>>912
自己解決したので報告
原因はfalseのままでメソッド終了させてたからだったみたい。最後にtrueで戻したら解決した。
お騒がせしました。

922 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 01:09:31.32 ]
Excel/VBAプログラミング入門
ttp://www.cqpub.co.jp/hanbai/books/MIF/MIFZ201204.htm

う〜ん、「第10章 USB接続によるデータ計測」にひかれて買ってみたんだけど、
「サイエンスキューブ」ってデータロガーをつかうとこんなことができますよ、って説明だけで
期待したもの(WinUSB.dllをエクセルVBAから使うには)とはちょっと違ったなぁ、残念

シリアルポート(MSComm32.ocx)の代わりに使えるかなぁと思ったんだけど

923 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 03:58:36.15 ]
質問があるのですが。
複数のエクセルファイルを開いている状態で。

ショートカットキーを使ってマクロを実行しているのですが。
アクティブじゃないエクセルファイルのマクロと競合すると言いますか、
他のも実行してしまう状況にあります。

ショートカットキーのキーを変えると作業の円滑さがなくなってしまうので
出来れば同じショートカットキーを使いながら、アクティブなエクセルに
入っているマクロのみを実行したいのですが。何か方法はあるのでしょうか?

924 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 04:18:55.01 ]
誰かわかる人いましたらよろしくお願いします。

エクセル2003なんですが、条件書式の色つきが3つまでしかできません。
10色ほどしたくて、ぐぐったらここに辿り着いて元となるVBAを見つけました。
ただ、これはシート1のA列が指定になっています。
これを指定の範囲ないにするにはどこをいじればいいのでしょうか。
例えばシート1のC1〜C10を範囲にするにはどうすればいいでしょうか・
qanda.rakuten.ne.jp/qa7116283.html

925 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 07:58:24.87 ]
>>924
あんまり綺麗なコードじゃないけど、めんどくさいから最小限の修正で

Sub W()
  Dim j As Long
  Dim ws2 As Worksheet
  Dim r As Range
  Dim c As Object
  Set ws2 = Worksheets("Sheet2")
  Set r = Range("A1:A10")  'ここに色を付けたいセル範囲を書く
  If Intersect(r, Columns(1)) Is Nothing Then Exit Sub
  Application.ScreenUpdating = False
  r.Interior.ColorIndex = xlNone
  For Each c In r
    If WorksheetFunction.CountIf(ws2.Columns(1), c) Then
      j = WorksheetFunction.Match(c, ws2.Columns(1), False)
      c.Interior.ColorIndex = ws2.Cells(j, 2).Interior.ColorIndex
    End If
  Next
  Application.ScreenUpdating = True
End Sub



926 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:01:03.42 ]
ちょっと訂正
1つ目のIfは削除しないと、A列にしか色が付かない
2つ目のIfもよく見たら不要だな

Sub W()
  Dim j As Long
  Dim ws2 As Worksheet
  Dim r As Range
  Dim c As Object
  Set ws2 = Worksheets("Sheet2")
  Set r = Range("A1:A10")  'ここに色を付けたいセル範囲を書く
  Application.ScreenUpdating = False
  r.Interior.ColorIndex = xlNone
  For Each c In r
    j = WorksheetFunction.Match(c, ws2.Columns(1), False)
    c.Interior.ColorIndex = ws2.Cells(j, 2).Interior.ColorIndex
  Next
  Application.ScreenUpdating = True
End Sub

927 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:09:08.94 ]
まだVBAを扱って日が浅く、すみませんが教えて下さい。

390行目を超えると、

実行時エラー1004
WorkseetFunctionクラスのmmultプロパティを取得出来ません。

とエラーが出てしまいますが、最終行まで計算させる方法をご教示下さい。
Dim myA As Range
Dim myB As Range
Dim myC As Range
Dim l As Long
Dim m As Long
Dim n As Long
Dim lLoopTimes
Dim i As Long
Set myA = Range("Sheet1!D3")
Set myB = Range("Sheet2!C2")
Set myC = Range("Sheet1!DN3")
l = 1
m = 111
n = 14
lLoopTimes = 1194
For i = 1 To lLoopTimes
myGetMatrix(myC, l, n).FormulaArray _
= WorksheetFunction.MMult( _
myGetMatrix(myA, l, m), _
myGetMatrix(myB, m, n))
l = l + 1
Next
End Sub

928 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:22:37.45 ]
>>927
Sheet1かSheet2のどこかに数値の入ってないセルがあるんじゃない?

929 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:29:51.78 ]
>>927
そのプログラムだと、Sheet1!D3:DJ1196とSheet2!C2:P112が計算に使われる
この範囲内に数値の入っていないセルとか結合されたセルがあるとエラーになる

930 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:54:42.65 ]
>928
>929

チェックしてみましたが空白は無い様です。
また試しに、ループを外し、
l = 300、l = 600とマクロを300行分ずつ書き換え、順次実行していくと問題無く最終行まで行きました。

出来れば1つのマクロで終わりにしたいのですが、
何か良い方法はありませんでしょうか・・・。

931 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:50:47.36 ]
フォームモジュールのところにちゃんしグローバル変数を
Public inTest As Integer
と宣言してるのに
標準モジュールではその変数を使えないのはどういうこと?

別の標準モジュールにならPublic inTest As Integerと宣言してたら使えるのに。

932 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:56:43.94 ]
逆に標準モジュールでPublic inTest As Integerと宣言してれば
フォームモジュールではinTestの変数は使えるんですよ。
おかしくね?

933 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:57:37.34 ]
さらにThisworkbookモジュールでも上記と同様のことが。
ということは標準モジュールが一番えらいの?


934 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 10:17:37.12 ]
カンマ区切りのCSVファイルの読み込みで、セルG2を先頭にして読み込むとか
する方法ってありますでしょうか?
普通に読み込んで行列を挿入しているのですが、スマートな方法があれば教えて下さい。
環境はwinxp+Excel2003です。
宜しく御願いします。

935 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 10:20:15.49 ]
個人用マクロにFunctionを書いても
普通のWorksheet関数として使おうとしても使えないんですけど。
どうやれば使えるようになりますの?

(普通にシートにFunctionを書けばそのシートではWorksheet関数として使えるけど)

ヤバくない?



936 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 10:28:09.14 ]
>>934
行列を挿入するよりカトペの方が手間は少ないのでは
「テキストファイルの読み込み」を使えば好きな場所に読み込めるけど、位置を決めるまでに何度も「次へ」ボタンを
押さなきゃいけないからあんまりスマートとは言えないような気がする
一発で処理したいならマクロ

937 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:16:08.23 ]
>>935
無理
そういうときはアドインにする

938 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 11:35:10.56 ]
>>973
さっきから出ている「アドイン」とは何でござるっすの?

939 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:45:29.76 ]
>>938
Excelのヘルプで「アドイン」で検索するか、各種検索エンジンで「Excel アドイン」で検索したらいいと思うよ

940 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:46:30.60 ]
>>936
あっ!ありがとうございます。

941 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:54:37.72 ]
>>924
ここで条件によってExit Subしてるから、C1〜C10の範囲じゃなければExit Subするようにすればいい
If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub

942 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:56:34.73 ]
グラフとかのオブジェクトを削除した時に、マクロを走らせたいのですが
どのイベントを使えばいいのでしょうか?
どなたか教えて下さい。

943 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 12:32:54.00 ]
>>942
残念ながらありません
監視する仕組みを自作するしかありません

944 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 15:04:28.95 ]
>>931
フォームでPublic宣言したものは
フォーム.変数名
で使える。

標準モジュールのは
標準モジュール.変数名でアクセスできるが
省略できるだけ

945 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 21:46:22.98 ]
ユーザー定義変数って、入れ子にできるんだね。
かなり便利だ。



946 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 23:07:19.96 ]
>>945
詳しくお願います

947 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:11:11.65 ]
エンターキーが押されたらマクロが走るようにしたいのですが、
ブック全体?でキーを受け付ける方法はないでしょうか?
マクロ実行後、オペレーターが画面を確認して、エンターを押したら、
再度マクロが走るようにしたいのです。

ググってもTextboxに対してだったり、セルへの入力時の例ばかりで
目的の物とは違うので教えて下さい。

宜しく御願いします。

948 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 23:11:16.53 ]
VBAで作ったExcelのファイルを、
Outlookのメールに添付して
しかもそのメールの差出人・件名・本文(数行以上に渡る文章)もVBAで書いて
送信ボタンを押す直前の状態までExcelのVBAで作ることは可能ですか?
Yなら、どうやりますか?

949 名前:948 [2012/04/09(月) 23:12:45.90 ]
VBAで作ったExcelのファイル = あるマクロでいろんな処理をした結果作ったExcelのブックのこと

950 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:22:12.11 ]
>>947
Application.OnKeyメソッド

951 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:24:55.96 ]
>>948
>送信ボタンを押す直前の状態までExcelのVBAで作ることは可能ですか?
可能

>Yなら、どうやりますか?
>>2

952 名前:945 mailto:sage [2012/04/09(月) 23:51:26.07 ]
>>946

たとえば、宣言部で
Private Type AAA
BBB As String
CCC As String
End Type
Private Type ZZZ
DDD As AAA
EEE As String
End Type

としてやる。
で、プロシージャ内でユーザー定義変数を宣言。
すると、あまり意識せずに多次元配列状態を作り出せる。
Dim A As ZZZ

A.EEE= "文字列"
A.DDD.BBB="入れ子になってる"
A.DDD.CCC="これも"

With A
Debug.Print .EEE
With .DDD
Debug.Print .BBB
Debug.Pring .CCC
End With
End With

この例だとしょぼいけど、似たような内容の変数が
10個も20個も出てくるときにものすごく整理しやすい。

953 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:52:18.64 ]
>>950
出来ました。
ありがとうございました。

954 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/10(火) 10:47:52.39 ]
End(xlUp)は、プロパティですかメソッドですか?
トマトは、野菜ですか果物ですか?
バナナはおやつに入りますか?

955 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 10:50:11.61 ]
>>954
バナナは果物です



956 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 12:40:48.54 ]
>>954
おやつやデザートとして食べるのが果物。
おかずとして食べるのが野菜。

957 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 12:43:10.21 ]
酢豚にパイナップルを入れるのは最近聞いたが
実際に見たことは無い

958 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 19:29:34.77 ]
>>954はウ菜、かつ、バ果者 である

959 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 00:10:58.62 ]
End()はメソッドxlUpは定数

960 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 16:53:30.86 ]
ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか?
また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?

961 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 17:07:23.19 ]
>>960
> ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか?
Workbooks.Open filename:="c:\foo\bar.xls"
で特定のフォルダの特定のブックが開ける

> また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?
不可能

962 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:00:41.70 ]
>>960
「Excelファイルを開かずに」の「開く」の定義をもうちょっと明確にしないと答えられないよ

963 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 18:21:46.56 ]
>>961
いや、そのフォルダにあるExcelファイルを全部開くという意味です。
そのときによってファイル名は毎回違う、みたいな。

964 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:25:47.31 ]
>>963
Dir関数使えばいいよ

965 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 18:45:17.49 ]
>>964
そのDir関数はなんのための関数?どうやって使うの?



966 名前:960 [2012/04/11(水) 18:45:46.25 ]
そんな関数、本に載ってないからわからん

967 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:55:55.94 ]
>>965
お前のExcelにはヘルプが無いのか?ネットに接続できるのにgoogleにはアクセス出来んのか?

968 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 19:03:23.94 ]
使ったことすらない。グーグルは邪道だ。

969 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:16:03.91 ]
こんなとこで見も知らぬ他人にきくほうがよっぽど邪道だろ

970 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 19:24:04.95 ]
なんだと、このやろう

971 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:52:41.87 ]
Exceは確定申告のために税額を計算するソフト
それ以外の使い方は全部邪道

972 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 20:40:11.41 ]
いきなり別のソフトの説明されても

973 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 21:18:22.13 ]
確定申告はそれ用のソフトがあるだろ
エクセでやってる奴ってその程度のお金も出せない貧乏人なの?

974 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:11:36.36 ]
エクセルのほうが高いだろ

975 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:12:54.75 ]
エクセルはそれ以外の用途で買ってて入れてる奴が多い



976 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:24:07.49 ]
ExcelVBAのスキルの前に、スルースキルを身につけろ

977 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:04:05.31 ]
もともと表計算ソフトが税金の計算のために発明されたってのは本当の話






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<296KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef