Excel VBA 質問スレ Part23at TECH
Excel VBA 質問スレ Part23 - 暇つぶし2ch751:デフォルトの名無しさん
12/03/20 01:00:47.78
>>749
コンピュータで小数点以下を扱う場合は誤差がでることを考慮に入れる必要があるんだよ
ちなみにその計算式のセルを小数点以下20桁とかの表示にしてみ

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

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

753:デフォルトの名無しさん
12/03/20 10:39:54.04
sheetとsheetの結合ってどうやるの

754:デフォルトの名無しさん
12/03/20 16:43:04.59
しーとと
しーとの
けつごう

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

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

757:デフォルトの名無しさん
12/03/20 18:03:41.58
>>756
On Error Resume Next

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

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

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

760:デフォルトの名無しさん
12/03/20 20:35:55.01
Workbooks("BookB").Close False


761:デフォルトの名無しさん
12/03/20 21:34:10.11
BBとか多い列数はどうやって数えますか?

762:デフォルトの名無しさん
12/03/20 21:50:35.25
column関数

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

764:デフォルトの名無しさん
12/03/21 00:06:51.11
Application.Small

765:デフォルトの名無しさん
12/03/21 00:40:15.33
出来ねええ

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

767:デフォルトの名無しさん
12/03/21 00:42:22.85
application.smallが上手くいかない件

768:デフォルトの名無しさん
12/03/21 00:44:11.28
多分それデータが悪い

769:デフォルトの名無しさん
12/03/21 00:47:07.63
オブジェクトが必要ですとでてくる

770:デフォルトの名無しさん
12/03/21 00:49:05.83
範囲って変数の型がRangeじゃないんじゃない?
これで動いたぞ

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

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

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

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

773:デフォルトの名無しさん
12/03/21 01:07:26.09
今日のエスパー養成所はここかっ!


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

775:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/03/21 01:12:44.97
できますたwwwwありがとお

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

778:デフォルトの名無しさん
12/03/21 05:31:19.87
できます

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

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

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

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

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

782:デフォルトの名無しさん
12/03/21 14:58:10.99
>>780,781
Thnx

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

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

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

784:デフォルトの名無しさん
12/03/22 19:23:14.78
>>783
仕様だから、としか答えようがない

785:デフォルトの名無しさん
12/03/22 19:53:58.40
>>784
ありがとう
謎仕様なんだな


786:デフォルトの名無しさん
12/03/22 22:16:41.56
Microsoftだもの

787:デフォルトの名無しさん
12/03/22 22:20:20.58
>>783
ホントだ、気持ちわりーな

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

789:デフォルトの名無しさん
12/03/22 23:38:35.97
>>788
あーなるほど
理解した、ありがとう

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

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

URLリンク(up1m.ko.gs)


791:デフォルトの名無しさん
12/03/23 14:09:48.74
>>790
>>2

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

793:デフォルトの名無しさん
12/03/23 15:16:28.75
>>792
Application.Selection

794:792
12/03/23 16:17:34.92
>>793
わかりませぬ、具体的に教えて下さい。

795:デフォルトの名無しさん
12/03/23 17:27:44.81
debug.print application.selection.address

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

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

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

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

798:792
12/03/23 18:16:57.46
Dim Sel_Addr As String
Sel_Addr = Application.Selection.Address
としたら取得できました。

799:デフォルトの名無しさん
12/03/23 18:35:18.85
いちいちそんな報告いらん

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

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

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

802:デフォルトの名無しさん
12/03/24 15:01:00.18
>>801
やっぱりバグなのかー
ありがとう

803:デフォルトの名無しさん
12/03/24 16:18:46.43
formの表示中に自由にセルを選べるように
したいのですが・・・

804:デフォルトの名無しさん
12/03/24 16:21:04.88
>>803
モードレスで開けばいい

805:デフォルトの名無しさん
12/03/24 16:21:48.60
vbModeless

806:デフォルトの名無しさん
12/03/24 16:26:46.00
>>804
Thnx

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

UserForm1.Show vbModeless
とか
UserForm1.Show 0


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

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

808:デフォルトの名無しさん
12/03/24 16:49:06.55
複数のCSVファイルを1つにしたくて
調べたら
以下のサイトが参考になったので
URLリンク(ziddy.japan.zdnet.com)



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:デフォルトの名無しさん
12/03/24 17:01:15.46
書き出すファイル指定が間違ってるかと思い
Const CRFILE As String = "C:\test2"

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

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

811:デフォルトの名無しさん
12/03/24 17:15:53.57
>>808
Const CRFILE As String = "C:\My Documents\test2.csv"

で出来たけど?

812:デフォルトの名無しさん
12/03/24 17:20:05.20
>>808
>>2

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

814:デフォルトの名無しさん
12/03/24 17:41:43.68
>>810
コマンドライン文字列とはなんですか?

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


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


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


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

815:デフォルトの名無しさん
12/03/24 17:50:40.99
Const CRFILE As String = """C:\My Documents\test2.csv"""

816:デフォルトの名無しさん
12/03/24 17:54:23.10
> XPでエクセル2007です

そう来るかw


817:デフォルトの名無しさん
12/03/24 18:38:25.29
>>814
>>2

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

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

820:デフォルトの名無しさん
12/03/24 22:05:47.67
isnumericじゃできなくね?

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

822:デフォルトの名無しさん
12/03/24 22:55:40.15
if a1>a2+x>a3+x thenが上手く動かないのだが、なぜか?

823:デフォルトの名無しさん
12/03/24 22:59:30.43
>>822
if a1>a2+x and a2+x>a3+x then

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

825:デフォルトの名無しさん
12/03/24 23:04:33.81
誤り if a1>a2+x>a3+x then
訂正 if a1>a2+x>a3+2x then

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

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

827:デフォルトの名無しさん
12/03/24 23:08:16.93
何だVBA力のおっさんか

828:デフォルトの名無しさん
12/03/24 23:13:47.11
>>824
VBAを使うしかないだろうな

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

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

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

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

Dim moji As string

moji = "実行1"

call moji

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

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

831:デフォルトの名無しさん
12/03/25 03:35:34.73
>>830
Application.Run ThisWorkbook.Name & "!" & moji

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

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

833:デフォルトの名無しさん
12/03/25 03:38:56.85
あ、リロードしないのが自分の悪いクセだな…

834:デフォルトの名無しさん
12/03/25 06:28:18.30
>>831
ありがとうございます。

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

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


836:デフォルトの名無しさん
12/03/25 15:22:52.17
a列とb列の相関を調べたい

837:デフォルトの名無しさん
12/03/25 15:31:17.78
VBA使う必要ないけど

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

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

840:デフォルトの名無しさん
12/03/25 19:06:52.20
配布物にExcelを利用したいのですが
配布物の中の別のファイルの情報を取得する場合
URLリンク(www.asahi-net.or.jp)
で相対パスだと危険があるとあったのですが
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:デフォルトの名無しさん
12/03/25 19:18:37.85
>>840
お前の認識間違えてるぞ
アホ
ちゃんと読め

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

843:デフォルトの名無しさん
12/03/25 20:40:54.08
>>839
一回限りの作業ではなく、毎月発生する作業です。

現在は

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

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

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

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

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

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

848:デフォルトの名無しさん
12/03/25 21:55:49.31
>>843
QueryTables.Add使え

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

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

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

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

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

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

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

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


853:デフォルトの名無しさん
12/03/27 16:48:39.95
>>852
オブジェクトブラウザというものがある

854:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/03/27 17:40:07.26
>>854
“Rows”の上にカーソルを置いて[F1]キーでヘルプを開いて読め

856:デフォルトの名無しさん
12/03/27 17:58:53.56
>>855
できました
ありがとうございます

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

できない例は?

859:デフォルトの名無しさん
12/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 オブジェクトでは、指定されたウィンドウで現在選択されている
>>オブジェクトを返します。

>>オブジェクト指向言語だと言いきるには不備が多い
↓参考
URLリンク(sites.google.com)

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

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


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

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

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

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

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

863:デフォルトの名無しさん
12/03/28 16:57:49.74
VBAスレはここだけしかないんだから、ここでいいだろ

864:862
12/03/28 17:07:48.32
あ、これ質問だったのか
ごめんよく読んでなかったは

865:デフォルトの名無しさん
12/03/28 17:23:26.77
ガキはすっこんでろ。

866:デフォルトの名無しさん
12/03/28 23:12:36.94
>861

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



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

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

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


870:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/03/29 00:07:11.46
>>871
g_cnsTITLEに該当するツールバーがないんじゃない?

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


874:営利利用に関するLR審議中@詳細は自治スレへ
12/03/29 10:35:16.91
>>868
Strategy Patternとか超便利なんですけど。

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


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

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

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

Unix使えよオマエら

878:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 20:51:58.76
>>876
OutlookのバージョンとExeclのバージョンを教えて

879:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 21:14:12.72
ともに2007です >>878

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

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

882:営利利用に関するLR審議中@詳細は自治スレへ
12/04/03 19:39:23.25
>>875
WithEventsで宣言した変数に参照代入する

883:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/04 18:07:52.43
>>883
検索するときに列幅を広げて
検索が終わったら列幅を元に戻す

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


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


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

888:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 11:11:06.09
>>886
Choose
URLリンク(officetanaka.net)

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

890:営利利用に関するLR審議中@詳細は自治スレへ
12/04/06 04:53:41.84
オフィス田中はNGにしてほしい

891:営利利用に関するLR審議中@詳細は自治スレへ
12/04/06 07:29:19.45
>>890
なんで?

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

893:営利利用に関するLR審議中@詳細は自治スレへ
12/04/06 08:20:34.61

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

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

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

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

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

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

899:897
12/04/07 00:47:26.65
できました
ありがとうございます

900:営利利用に関するLR審議中@詳細は自治スレへ
12/04/07 03:29:15.39
オフィス田中は何ググッても出てくるよな

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

902:営利利用に関するLR審議中@詳細は自治スレへ
12/04/07 07:16:36.62
MSDN一日中眺めてればいいよ

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

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

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

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


906:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/07 19:47:57.72
>>908
やはりそうするのが無難ですよね。

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

910:営利利用に関するLR審議中@詳細は自治スレへ
12/04/07 19:52:21.42
>>909
Resizeプロパティ

911:営利利用に関するLR審議中@詳細は自治スレへ
12/04/07 22:45:34.62
>>910
サンクス


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

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



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

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

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

915:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 19:02:50.68
>>913
>>2

916:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 19:03:25.69
>>914
>>2

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

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

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

>914
アドインにすれば?

920:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 23:00:30.69
>>913

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

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

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

922:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 01:09:31.32
Excel/VBAプログラミング入門
URLリンク(www.cqpub.co.jp)

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

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

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

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

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

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

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

925:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/09 08:22:37.45
>>927
Sheet1かSheet2のどこかに数値の入ってないセルがあるんじゃない?

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

930:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 08:54:42.65
>928
>929

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

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

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

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

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

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


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

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

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

ヤバくない?

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

937:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 11:16:08.23
>>935
無理
そういうときはアドインにする

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

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

940:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 11:46:30.60
>>936
あっ!ありがとうございます。

941:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/09 11:56:34.73
グラフとかのオブジェクトを削除した時に、マクロを走らせたいのですが
どのイベントを使えばいいのでしょうか?
どなたか教えて下さい。

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

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

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

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

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

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

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

宜しく御願いします。

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

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

950:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 23:22:12.11
>>947
Application.OnKeyメソッド

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

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

952:945
12/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審議中@詳細は自治スレへ
12/04/09 23:52:18.64
>>950
出来ました。
ありがとうございました。

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

955:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 10:50:11.61
>>954
バナナは果物です

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

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

958:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 19:29:34.77
>>954はウ菜、かつ、バ果者 である

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

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

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

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

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

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

964:営利利用に関するLR審議中@詳細は自治スレへ
12/04/11 18:25:47.31
>>963
Dir関数使えばいいよ

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

966:960
12/04/11 18:45:46.25
そんな関数、本に載ってないからわからん

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

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

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

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

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

972:デフォルトの名無しさん
12/04/11 20:40:11.41
いきなり別のソフトの説明されても

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

974:デフォルトの名無しさん
12/04/11 22:11:36.36
エクセルのほうが高いだろ

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

976:デフォルトの名無しさん
12/04/11 22:24:07.49
ExcelVBAのスキルの前に、スルースキルを身につけろ

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch