[表示 : 全て 最新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/


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
さっきから出ている「アドイン」とは何でござるっすの?






[ 続きを読む ] / [ 携帯版 ]

前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