Excel VBA 質問スレ Part23at TECH
Excel VBA 質問スレ Part23 - 暇つぶし2ch910:営利利用に関する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