2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Excel VBAについて Ver.2.0

1 :デフォルトの名無しさん:03/06/09 19:18
前スレ
http://pc2.2ch.net/test/read.cgi/tech/1023755967/

2 :デフォルトの名無しさん:03/06/09 19:25
>>前スレの994
>てかOption Explicitって先頭に追加したら赤くなったぞ
>いい加減なことばっか教えてんじゃねぇよ、死ねよ
激しくワラタ

3 :デフォルトの名無しさん:03/06/09 19:25
なぜ誰も2ゲットしに来ない・・・・?

4 :デフォルトの名無しさん:03/06/09 19:27
>>前スレの994
とりあえず、お前の読んでる本だかウェブだかは捨てだ

5 :デフォルトの名無しさん:03/06/09 19:28
スレタイにExcelとか激しく不要なのに

6 :デフォルトの名無しさん:03/06/09 19:42
こっちが本スレです。
http://pc.2ch.net/test/read.cgi/prog/1039685426/

7 :前スレで騒いでた奴:03/06/09 19:50
てかもう俺のこと忘れてる?

8 :デフォルトの名無しさん:03/06/09 19:52
だって解決済みだし

9 ::03/06/09 19:56
してねぇよ、死ねよ

10 :デフォルトの名無しさん:03/06/09 20:03
http://216.239.37.100/search?q=cache:lJ9diWCPWhsJ:www.gec.gifu.gifu.jp/kyoukaHP/kyoukajyouhou/textvol2/vba2.pdf+Dim+mt(12)+As+Integer+&hl=ja&lr=lang_ja&ie=UTF-8

11 :デフォルトの名無しさん:03/06/09 20:05
どうやら、高校の課題のようですな

12 :デフォルトの名無しさん:03/06/09 20:12
で、お前らはいったい何なわけ?

13 : :03/06/09 20:15
テンプレ

・質問する人は可能な限り具体的に書いてね。
・コード(プログラム)を晒すと、なおヨシ。
・質問を小出しにすると、大抵遠回りになります。
・Excelのバージョン、OSのバージョンも書くとレスが付きやすい。
・回答がなくてもキレないで。
・分かる人はできるだけ回答して下さいませ。
・書き込む前に推敲して、回答する人にわかりやすい文章に汁。


14 :デフォルトの名無しさん:03/06/09 20:17
>>9
だから993が答えじゃん

15 :デフォルトの名無しさん:03/06/09 20:35
だから995が答えじゃん。タイプミスなんかじゃねえって、まぢで。
ちなみにOffice 2002。てかまぢ困った。

16 :デフォルトの名無しさん:03/06/09 20:51
宿題は自分でやろうよ

17 :デフォルトの名無しさん:03/06/09 20:57
>>16
。゚(゚´Д`゚)゚。
もう来ません

18 :デフォルトの名無しさん:03/06/09 20:58
>>15
もう一万回コード見直せw
>>10をみると少なくとも3箇所はタイプミスしてる。


19 :デフォルトの名無しさん:03/06/09 21:10
。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。。゚(゚´Д`゚)゚。

20 :デフォルトの名無しさん:03/06/09 23:02
何のスレ?ここ

21 :デフォルトの名無しさん:03/06/09 23:48
つか、参考書自体がタイプミスしてるんだな。

初心者イジメて楽しいのか藻前ら・・・

22 :前スレの978:03/06/10 00:44
>>21
もとの「高校版情報活用テキスト」ではちゃんと動くコードです。
http://cscns.csc.gifu.gifu.jp/syozo/center/curriculum/kou_new/
リンクミスしているトホホなWebサイトだけど、
プログラミングを勉強するには良い課題もあるね。

イジメてはないと思うけど


23 :デフォルトの名無しさん:03/06/10 00:46
訂正
前スレの978 → 前スレの982

24 :前スレの993:03/06/10 07:20
>>15
解答はタイプミスのところじゃなくて、その下なんだが……

> というわけで、上で宣言している配列変数あたりが疑わしい。つかそれだ。

25 :デフォルトの名無しさん:03/06/10 10:45
っていうか、エラーメッセージはコンパイルできんような状況だって言ってるんだ
から、タイプミスだろうがなんだろうがプログラムになってないってことだ。

26 :デフォルトの名無しさん:03/06/10 12:24
つぅか、それくらいのことは自分の頭で考えろってことだ。
今からそんな調子ではプログラマなんて無理。
プログラマになる気もないのなら、課題も捨て単位も捨て進学も捨てて
土方にでもなってろ。

27 :前スレで騒いでた奴:03/06/10 14:25
俺の書いたソース、少し改変していいからFixしろ
ただしなるべく俺が書いたものに忠実にな
早くしろよ

28 :デフォルトの名無しさん:03/06/10 16:09
ありがd
ぼくにもできたよ!
http://res9.7777.net/bbs/tiharu/20030610160718.1.gif

29 :デフォルトの名無しさん:03/06/10 16:10
>>28
http://res9.7777.net/bbs/tiharu/

30 :デフォルトの名無しさん:03/06/10 16:46
http://pc2.2ch.net/test/read.cgi/tech/1023755967/982を直してやったよ

Option Explicit
Private Sub CommandButton1_Click()
Dim strWeekday()
Dim strDate As String
strWeekday = Array("", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
strDate = TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text
If IsDate(strDate) = False Then
TextBox4.Text = "Error"
Exit Sub
Exit Sub
End If
If (strDate <> Format(strDate, "yyyy/mm/dd")) And _
(strDate <> Format(strDate, "yyyy/m/d")) Then
TextBox4.Text = "Error"
Exit Sub
End If
TextBox4.Text = strWeekday(Weekday(strDate))
End Sub


31 :デフォルトの名無しさん:03/06/10 17:11
>>30
煽りに負けたな

32 :無料動画直リン:03/06/10 17:13
http://homepage.mac.com/norika27/

33 :情報課の教師:03/06/10 17:18
>>30
課題から外れた解答だから採点は0点です。
日付を計算して曜日を求めてください。

34 :デフォルトの名無しさん:03/06/10 22:02
日付の入力チェックを皆さんはどのように行っていますか?
>>30の方法は良いやりかたなのかな

35 :前スレで騒いでた奴:03/06/10 22:14
>>30をコピペったら動いた。正直、感動した。
まぁ、単に曜日が出ただけで別に何ともないと思ったけどね。てか俺のソースに忠実じゃねぇじゃねぇか
死ねよ
また何かあったら質問しに来てやるよ、じゃあな
お前ら死んでおけ☆

36 :前スレで騒いでた奴:03/06/10 22:20
てかね、そのソースの各コマンドがどういう働きをしてるのか書いてみろ
たとえば
Private Sub CommandButton1_Click()  (サブルーチンがどうのこうの)
とかね
全部書いておけよ

37 :デフォルトの名無しさん:03/06/10 22:40
このままでは先生に説明できないから大変だな

38 :デフォルトの名無しさん:03/06/11 09:28
結局奴は何一つ理解しなかったわけだな

39 :デフォルトの名無しさん:03/06/11 10:05
こういうやつが社会に出てくることが一番不安だ・・・

40 :デフォルトの名無しさん:03/06/11 11:12
この程度の時点では社会に出てこないよ。少なくともプログラマとしては。

41 :前スレで騒いでた奴:03/06/11 12:18
やあプログラマ気取りの諸君、今起きたよ
つーか俺は別にプログラマなんかになるつもりはねぇよ
ただちょっとVBAに手をつけてみてわかんないことがあったから聞いたまでだ
つーか最初のうちはわかんないことがあればなんでも聞きますよ
つーかゴミレス返してないでさっさと俺の言われたとおりのことをしろ
いいか、今日中に書いておけよ

42 :デフォルトの名無しさん:03/06/11 20:51
存在がぬるぽ

43 :デフォルトの名無しさん:03/06/11 22:27
前スレ見てないからお題が
分からんが、>>30を見る限り
strDate = TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text
if IsDate(strDate) then
 TextBox4.Text = Format(strDate,"dddd") 
 'かTextBox4.Text = Format(strDate,"ddd")
else
 TextBox4.Text = "ちゃんと日付を入れろゴルァ"
end if
じゃだめか?

44 :デフォルトの名無しさん:03/06/12 11:22
すいません、教えてください。

Excel2000のVBAで、ユーザーフォーム上でreeditコントロールを使用して、
ユーザーに数十個のセルを選択させたいのですが、試しにやってみたところ、
約20個ほどクリックしたところで、ポーンと音が鳴って、
選択したセルのアドレスがコントロール内から消えてしまいます。
恐らくコントロールに割り当てられているメモリによって、
取得できる最大文字数が制限されているのではないかと思うのですが、
何か良い解決方法がありましたらご教授くださいませ。

よろしくお願いします。

45 :前スレで騒いでた奴:03/06/12 11:25
てかまだ俺の問題が解決してません。
>>44はすっこんでてください

46 :デフォルトの名無しさん:03/06/12 11:42
>>45
Option Explicit
Private Sub CommandButton1_Click()
  Dim strDate As String
  strDate = TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text
  If IsDate(strDate) Then
    TextBox1.Text = Year(strDate)
    TextBox4.Text = Format(strDate, "dddd")
  Else
    TextBox4.Text = "Error"
  End If
End Sub

47 :あぼーん:あぼーん
あぼーん

48 :デフォルトの名無しさん:03/06/12 11:58
ゴミレスしてないで早く書け
死ねよ

49 :デフォルトの名無しさん:03/06/12 12:00
てかお前ら俺の言ってる意味わかってる?
お前ら低脳だから全然わかってないぽだけど・・・

50 :デフォルトの名無しさん:03/06/12 12:01
てかお前ここのスレに書かれてることわかってる?
お前は荒らしてるだけだから全然頭使ってないぽだけど・・・

51 :デフォルトの名無しさん:03/06/12 12:02
>>45
Option Explicit
Private Sub CommandButton1_Click()
  Dim strDate As String
  strDate = TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text
  If IsDate(strDate) Then
    TextBox1.Text = Year(strDate)
    TextBox4.Text = Format(strDate, "dddd")
  Else
    TextBox4.Text = "Error"
  End If
End Sub


52 :デフォルトの名無しさん:03/06/12 12:05
だからね、例えばそのOption Explicit っていうのはどういう意味があるんですか?
それを書いて欲しいわけですよ。わかる?とにかく書いて欲しい。それこそ全部書いて欲しい。
次のPrivate Sub CommandButton1_Click() っていうのはどういう意味があるんですか?
早く全部書け

53 :デフォルトの名無しさん:03/06/12 12:07
http://www.google.co.jp/

54 :デフォルトの名無しさん:03/06/12 12:15
Option Explicit
は、モジュール内で使用するすべての変数を明示的に宣言することを
強制するオプション

これをいれておくと宣言のし忘れなどがなくなるので
バグが入る可能性も減る

55 :デフォルトの名無しさん:03/06/12 12:16












56 :デフォルトの名無しさん:03/06/12 12:22
教科書読めばぁ?

57 :デフォルトの名無しさん:03/06/12 12:32
教科書なんか無ぇって。てかまぢで早く書け。
てかそろそろ授業出てこなきゃな。帰ってくるまでに書いておけよ☆

58 :デフォルトの名無しさん:03/06/12 12:38
質問するくせに態度がでかいな

Private は他のモジュールから参照できないプロシージャを宣言するときに使う
Sub はプロシージャの名前
プロシージャ:
   実行時に 1 つの単位として処理されるコードの集まり。
   プロシージャには、Function プロシージャ、Property プロシージャ、Sub プロシージャの
    3 種類があります。通常、プロシージャの名前は、モジュール レベルで定義します。
   実行可能なコードは、すべてプロシージャに含める必要があります。
   プロシージャを他のプロシージャ内にネストすることはできません。

CommandButton1_Click()
はプロシージャの名前



59 :デフォルトの名無しさん:03/06/12 12:57
ほっとけ。あらしなら説明しても無駄だし、
そうでなくても十分ヒントが出ているからあとは調べられるはず。
どちらにしろもうレスする必要はない。

60 :デフォルトの名無しさん:03/06/12 13:18
>>44
これは関係あるかな
http://support.microsoft.com/default.aspx?scid=kb;JA;320262

61 :デフォルトの名無しさん:03/06/12 15:26
ここにいるやつらって、冷たいこともあるのに妙にやさしかったりもするのな。

Option Explicit なんて基本中の基本だし、例えばヘルプで Explicit を
検索すれば、こんな掲示板で聞かずともわかる範囲の話。

こんなことさえできない・しないやつがプログラムを組んだって
どうしようもないんだから、放置すりゃいいのに。

62 :デフォルトの名無しさん:03/06/12 16:06
全部書けっていってるのがわかんないの?殺すよ、まぢで
てか俺は荒らしてるわけじゃなくて純粋に質問してるんだからな
お前らがわけのわかんないゴミレスしてないでさっさと質問に答えれば荒れずに済むのがどうしてわからないんだ
死ねよ低脳。

63 :デフォルトの名無しさん:03/06/12 16:10
うーむ、調べもので検索してて、こんなの見つけた。
前スレでたくさんのシートを使ってた人がいたので、要注意ですな。

■ シートを増やす運用での問題点

 シート枚数が増えればそれだけメモリを消費する。計算式を多く設定してもメモリを多く消費する。
計算式を多く設定したシートで、枚数を増やす運用をした場合、ブックが開けなくなる事故が頻発している。
 また、フォントや罫線の設定の組み合わせを多く設定し、ブックが開けなくなる事故も多発している。
これは、表示形式(フォントや罫線の組み合わせ、Excelの表示形式の概念とちょっと異なる)が4,000という制限がある為。
 解決方法は、シートを増やす運用はなるべくさけて、ブックを分ける。
 シートの最大数は、メモリに依存する。計算式を多く設定すれば、それだけシートの作成可能な数は減る。
経験則から、簡単なシートで数十枚程度であれば運用可。ただ、ブックのバックアップ(世代や週間/日間)が最低必要。

ところで以後>>62は無視ね。

64 :デフォルトの名無しさん:03/06/12 17:40
62は釣ってるつもりが実はかなりの釣られ野郎だな。ちょっとオモロイ。

65 : :03/06/12 18:19
>>62
この手の低級な屑にあらされてしまうにはもったいない良スレなんで、皆さん、黙殺しませう。


66 :デフォルトの名無しさん:03/06/12 18:53
>>65
いやいや、>>62から伝わってくる必死さは近頃の若者には見られなくなってる。
その意味では却って好感さえ感じられるよ。

67 :デフォルトの名無しさん:03/06/12 18:56
たのむからまぢで教えてくれ
そしたら大人しく消えてやるから、もう来ないから

68 :デフォルトの名無しさん:03/06/12 18:58
>>67
うんうん、その必死さが好感を呼ぶのだよ。

69 :デフォルトの名無しさん:03/06/12 19:06
                   _,,,,,.........,,,,__
                 /:;:;:;:;:;:;:;:;:;:;:;:;:;,丶
 早いとこ全部書けよ…  /:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;.,ヽ
                 i' ' ' ' ' ' ' ' 'i;:;:;:;:;:;:;:;:;.,|
    ,.-‐¬ ̄-、¨¬‐、  |\,. 、/  L:;:;:;:;:;:;.;.l
   ////""`'""''ヽソ-‐l=・= =・=  ヽ:;/¨iノヽ、
  //////」  -=== }  |         ,ノ./lllll/、
  i//ノソ,._______,.""'  '".i,  l `_       ./lllll/  ヽ
  ヽ彡i.6 ̄ ̄i.,__ノ⌒i.,_ノ ..::ゝ.,_____,,,...- /llllllll/    ヽ
  /ヽ ゝ'    ,rti.l.l.l.、)ゝノlllllllllゝ.,__,ノlllllllllllllソ     .}
⌒`ヽ、ヽ li       ./ヽllllllllllllllllllllllllllllllllllllllliゝ /    /
、   V ヽ ゝ  _,......__ ノノ  ヽllllllllllllllllllllllllllllllllli/    ./
丶、,.、,ヽ     ミ三   ` ¬ ‐‐---‐¬ ¨ ̄
        ((   ̄ ̄ ¨¬‐- ..,_
          l 川 |

70 :デフォルトの名無しさん:03/06/12 20:02
もうあきたので直リン
http://cscns.csc.gifu.gifu.jp/syozo/center/curriculum/kou_new/vba2.pdf

71 :デフォルトの名無しさん:03/06/12 21:47
明日からVBA生活の新人でつ。
これだけ教えて下さい。
可変長なリストオブジェクトの名前。


72 :デフォルトの名無しさん:03/06/12 21:59
リストオブジェクトって固定長のあったっけ?

73 :デフォルトの名無しさん:03/06/12 22:13
>>72
つぅかリストオブジェクトって存在するんですか?
Collectionオブジェクトも登録順で取り出せることが保証されるならそれで良いんですが。

74 :デフォルトの名無しさん:03/06/12 23:19
死ねよ

75 :デフォルトの名無しさん:03/06/13 00:01
Key に Str(coll.Count) でも入れておいて coll(Str(index)) するんじゃ駄目?

76 :44:03/06/13 00:05
>>60
レスありがとうございます。
読んでみましたが、残念なことに私のケースとは違うようです。
私の場合は、エラーが発生するのではなくて、
refeditコントロール内のセルアドレスが消えてしまうだけなんですね。

引き続き解決方法を募集してます。皆さん、よろしくお願いします。

77 :デフォルトの名無しさん:03/06/13 05:33
>>75
それなら素直に整数型入れるよ。と、言うか重そう。

78 :デフォルトの名無しさん:03/06/13 10:45
イメヌ経由なのに直リンとか言ってるバカってまだいるんだ・・・

79 :デフォルトの名無しさん:03/06/13 12:04
頭のhをカットしないっつー意味で直リンて書いてるのに
杓子定規にしか捉えれないバカってまだいるんだ・・・



80 :デフォルトの名無しさん:03/06/13 12:16
専用ブラウザ使ってないバカってまだいるんだ・・・

81 :デフォルトの名無しさん:03/06/13 14:23
テスト厨参上!

82 :デフォルトの名無しさん:03/06/13 14:38
直リンの意味がわかってないバカってまだいるんだ・・・・
きっと未だにホームページとかそういう言葉使ってるタイプだな・・・

83 :デフォルトの名無しさん:03/06/13 15:06
ゴミレスしてないで早く書け
死ねよ

84 :デフォルトの名無しさん:03/06/13 15:18
Excel2000のVBAを使い,SQL2000のテーブルを
Recordset取得するにはどうしたらよいでしょうか?
ちなみにこんなの書きましたけど全然でした

SQLNAME = SQLOpen("DSN= DataBaseName")

Set R = New ADODB.Recordset
R.Open "SELECT * FROM T_テスト", SQLNAME.Connection

85 :デフォルトの名無しさん:03/06/13 15:26
ホームページという言葉はあまり使われなくなったが、別にホームページという
言葉自体が無くなったわけではない。

ホームページとはマイホームページの意味だ。ブラウザのアイコンにホームと
書いてあるアレだ。

だからIEをデフォルト設定で使っている人は、私のホームページはMSNのサイト
ですと言わなければならないので、ちょっとややこしい。

86 :デフォルトの名無しさん:03/06/13 16:15
ていうか、正直どうでもいいよ
直リンだのホームページだの。

フツーの人は伝わればそれでいいと思われ。

87 :デフォルトの名無しさん:03/06/13 16:32
むしろこのスレの存在自体がどうでもいいな

次スレ立てろなんて誰も書いてなかった筈なのに

88 :デフォルトの名無しさん:03/06/13 16:54
すいません おねがいです 助けてください
2000でユーザフォーム上のテキストボックスに文字を表示させたいんですが
セルの文字を改行させて、連結したいんです。

txtbox.Text = ActiveCell.Offset(, 3) & vbCrLf & ActiveCell.Offset(, 4)
としても改行されないんです。
で、改行コードっていうのか「q」みたいなんが出るんです
VBCRLFを Chr(13) & Chr(10)としてもだめでした

どなたかよろしくお願いします。



89 :88:03/06/13 16:59
自己レスまことにもうしわけございません。
解決しました
MultiLineプロパティがfalseになってました
大変失礼いたしました

90 :デフォルトの名無しさん:03/06/13 17:02
>>84
ADOを使うことを薦める。

「参照設定」で [Microsoft ActiveX Data Objects 2.X Library] を参照します。

' ADOのオブジェクト変数を宣言する
Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
' 接続を確立する
cnn.Open "Provider=SQLOLEDB;" &
    "Data Source=(local);" & _
    "Initial Catalog=pubs;", "sa", ""
' SQLステートメントを指定してレコードセットを作成する
rec.Open "select * from publishers", cnn, _
    adOpenKeyset, adLockOptimistic

91 :84:03/06/13 17:40
>>90
レスありがとうございますた。
初心者ゆえcnn.open内のパラメータが理解できず四苦八苦しております

92 :デフォルトの名無しさん:03/06/13 20:31
>次スレ立てろなんて誰も書いてなかった筈なのに

なんか典型的ダメ人間が混じり込んでるね
スレっていうのは立てたいから立てるんだよ、わかるかな?指示を待つだけの奴隷くん

93 :デフォルトの名無しさん:03/06/13 21:01
質問させていただきます、どなたか教えていただけませんか
ユーザーフォームイメージコントロールを配置して、そこにイメージを読み込んでから
ユーザーフォームの大きさをイメージに合わせたいと思っています。

loadpicture関数でイメージを読み込むところまではいいんですが、
フォームのheightプロパティを、イメージのheightと合わせても、タイトルバーの
高さ分切れてしまいます。

VBだとScaleHeightが使えるようですが、ヘルプ見たところ、VBAではなんか違うメソッドに
なっているんですか?
このような場合、どうやってイメージの大きさとユーザーフォームの大きさを合わせればよいのか
どなたかよろしくおねがいいたします。
下手な文章で申し訳ないです

94 :デフォルトの名無しさん:03/06/13 21:13
>>92
どう見ても前スレで騒いでた奴を釣る為に立てたとしか思えないんだが……

95 :デフォルトの名無しさん:03/06/13 21:24
>>94
つーか1=前スレで騒いでた奴だろ

個人的な理由でスレ立てるな > 1

96 :デフォルトの名無しさん:03/06/13 21:50
スレ立てるのって大多数が個人的な理由だと思うんですけど・・・・

97 :デフォルトの名無しさん:03/06/13 21:51
てか釣られたのを素直に認められない人なんですね、皆さん

98 : :03/06/13 21:56
どーのこーの言って、投稿と回答が続いているからそれでええやん。
まったく廃れているんならともかく。



99 :デフォルトの名無しさん:03/06/13 22:48
いや、回答は確かに続いてるが、解答はあまりされていないと思うんだが

100 :デフォルトの名無しさん:03/06/13 22:59
要するに回答者がヘタレ揃いなわけだ

101 ::03/06/13 23:00
いいこと言った!!

102 :デフォルトの名無しさん:03/06/13 23:11
100自体はいいことでもなんでもない単なる事実認識だ。

103 :>>100-101:03/06/13 23:12
てか自演なんですけどね

104 :デフォルトの名無しさん:03/06/13 23:16
前スレ974について詳しく知ってる人はいないんですか?

アクティブシート以外のRangeにCopyFromRecordsetメソッドを実行しても、
アクティブシートのNumberFormatLocalが変わってしまうってやつ。

なんでこんな動作なのか私も知りたいです。

105 :デフォルトの名無しさん:03/06/13 23:51
前スレ知らないんだが、Format系の関数・メソッドではよくあること。仕様を把握
しないで経験だけで使わないほうがいいよ。

106 :デフォルトの名無しさん:03/06/14 00:27
>>77
たわけ。Collection のキーに整数型は入らん。
もしやと思って確認してしまったではないか。

Sub test3()
Dim val As Long
Dim col As New Collection
For val = 1 To 100000
col.Add val, val
Next
For val = 1 To col.Count
If val <> col(val) Then _
Debug.Print col(val)
Next
End Sub

>col.Add val, val
で実行時エラー'13'「型が一致しません」

コレクションの各メンバの処理をするときに、位置を表す数値の代わりに
使用できる重複しない文字列を文字列式で指定します。
ヘルプより


107 :デフォルトの名無しさん:03/06/14 00:49
>>105
そうか、DAOではなくてFormat系の問題なのか。
・・・そう言われてみれば、Rangeのメソッドだものな。

108 :デフォルトの名無しさん:03/06/14 20:38
VBAのフォームの内容を自動で書き換える(ラベルとか)方法って
ありますかね

109 :デフォルトの名無しさん:03/06/14 20:50
VBAでwavファイルをならす方法を
教えてください

110 :デフォルトの名無しさん:03/06/14 22:33
>>109
APIのsndPlaySoundを使用

111 :デフォルトの名無しさん:03/06/14 22:35
>>108
何がしたいのだろう

112 :デフォルトの名無しさん:03/06/14 22:46
>>109
Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
ByVal lpszName As String, _
ByVal hModule As Long, _
ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1 ' play asynchronously
Private Const SND_FILENAME = &H20000 ' name is a file name



PlaySound "C:\WinNT\Media\ringin.wav", 0, SND_FILENAME Or SND_ASYNC

なのだ。

113 :デフォルトの名無しさん:03/06/15 01:02
VBでオナニしたいのですがどうすればいいですか
本当に困ってるのでお願いします

114 :デフォルトの名無しさん:03/06/15 01:50
>>113 まずぐぐれ。

115 :デフォルトの名無しさん:03/06/15 18:58
>>113
適当なツール類を作る。内容はなんでもいい。
  ↓
サポートサイトを立ち上げる。
  ↓
サイト内でそのツールがいかに有用か、説きたおす。
  ↓
そのツールとあなた自身のファンサイトも作る。
  ↓
ある程度コンテンツが充実したら、ここにurlを貼る。

カナーリ気持ちのいいオナニーができるでしょう。
俺はキャラ的にそういうのは無理です(´・ω・`)

116 :デフォルトの名無しさん:03/06/15 22:33
教えてください・・・

Private Sub Worksheet_Change(ByVal Target As Range)
test(Target)
End Sub

Private Sub test(ByVal aaa As Range)
〜〜〜
End Sub

ってやると
実行時エラー’424’:
オブジェクトが必要ですって・・・
Target はオブジェクトじゃないの?

117 :デフォルトの名無しさん:03/06/15 22:57
>>116
test Target
または
Call test(Target)

118 :116:03/06/15 23:15
>117
あっ
Callが必要だった・・・

ありがとうございます。

119 :デフォルトの名無しさん:03/06/16 02:26
As stringってどんな意味?

120 :デフォルトの名無しさん:03/06/16 06:10
>>119
入門書から出直せ。

121 :デフォルトの名無しさん:03/06/16 10:35
Dim 弦 as string

弦はストリングですよ〜、だ。
ストリングって何だ?となると、本来は Character String。
ひと続きの文字の並び。

んじゃDimは?とくれば、Dimensionの略。
昔のBasicでは配列の宣言にDimを使ってたけど、変数の宣言として統一された。

122 :(=゚Д゚):03/06/16 12:59
Hyper Dimension

123 :デフォルトの名無しさん:03/06/16 14:10
>>120
こういうやつって最低だよね
放置するわけでもなく「検索しろ」。おぉ、嫌だ
おまえみたいなゴミはこのスレにいらないから消えろ。そして市ね

124 :デフォルトの名無しさん:03/06/16 14:57
>>123
おまえもゴミ

125 :デフォルトの名無しさん:03/06/16 15:07
おまえもゴミ

126 :デフォルトの名無しさん:03/06/16 15:14
>>119
ヘルプでDimを調べろ

127 :デフォルトの名無しさん:03/06/16 15:15
こういうやつって最低だよね
放置するわけでもなく「検索しろ」。おぉ、嫌だ
おまえみたいなゴミはこのスレにいらないから消えろ。そして市ね


128 :デフォルトの名無しさん:03/06/16 15:48
>>123 >>127 は放置でおながいしまつ

129 :デフォルトの名無しさん:03/06/16 20:31
これから質問攻めするけどいい?

130 :デフォルトの名無しさん:03/06/16 21:38
何よ、報知なわけ?

131 :デフォルトの名無しさん:03/06/16 22:13
いつもお世話になります。お尋ねしたいのですが
strWeekday = Array("", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
とはどのような意味なのでしょうか?教えていただければこれ幸いでございます。

132 :デフォルトの名無しさん:03/06/16 22:37
変数に配列を渡している

133 :デフォルトの名無しさん:03/06/16 22:43
>>131
>>36
>>41
>>48
>>52
>>55


134 :デフォルトの名無しさん:03/06/16 22:46
いつもお世話になります。お尋ねしたいのですが
strDate = TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text
とはどのような意味なのでしょうか?教えていただければこれ幸いでございます。

135 :デフォルトの名無しさん:03/06/16 23:43
>>134
TextBox1.Text と "/" と TextBox2.Text と "/" と TextBox3.Text を
結合して strDate に代入してる。
つまり 年月日 の間に / を入れてひとつの文字列にまとめたわけだ。

で、次はこう書いてくるのかな?

If IsDate(strDate) = False Then
TextBox4.Text = "Error"
とはどのような意味なのでしょうか?

136 :デフォルトの名無しさん:03/06/17 00:02
いつもお世話になります。お尋ねしたいのですが
If (strDate <> Format(strDate, "yyyy/mm/dd")) And _ (strDate <> Format(strDate, "yyyy/m/d")) Then
とはどのような意味なのでしょうか?


137 :デフォルトの名無しさん:03/06/17 01:01
チン  ☆  マチクタビレター  ☆ 
       チンチン           マチクタビレター ♪
           ♪   ☆ チチン
    ♪                .☆   マチクタビレター
        ☆ チン   〃  ∧_∧  ヽ        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ   ___\(・∀・ ) /\_/ <  回答マダー
        チン    \_/⊂    つ    ‖    \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|     ‖  
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|   /|\ 
        |             |/ 


138 :デフォルトの名無しさん:03/06/17 11:59
>>136
strDateを西暦の年月日に変換して比較することにより、
年月日の入力が西暦で正しく行われているかチェックしている。

139 :デフォルトの名無しさん:03/06/17 14:23
>>138
もう遅いよお前
死んでいいよ

140 :デフォルトの名無しさん:03/06/17 14:58
>>139
まさか、136さんじゃないですよね・・

141 :デフォルトの名無しさん:03/06/17 14:59
私今エクセルでVB学んでるんですけど、誰かちゃんと理解可能なVBを教えてくれるHP知らないですが?教えてください。(σ´Д`)σゲッツ!!

142 :デフォルトの名無しさん:03/06/17 15:35
>>141
VBじゃなくてVBAだろ?正確に書けヴォケ。その手のサイトなんかぐぐったらいくらでもみつかるだろ。


143 :デフォルトの名無しさん:03/06/17 16:33
理解可能なVBってなんだろう・・・

つか、あなたの主張って、

わたしが理解できないのは、あなたの教え方が悪いからだ

ってやつですか?

144 :デフォルトの名無しさん:03/06/18 01:16
結局、誰も教えてくんねぇのかyo!

145 :デフォルトの名無しさん:03/06/18 19:46
正直、学んだことなんか無いけど、ヘルプと例だけで事足りてる。

本とかもリファレンス系しか買わなし、今はそれすら手元に無いな

146 :デフォルトの名無しさん:03/06/18 22:26
VBAの短所と長所はなんですか?詳しく教えてください

147 :デフォルトの名無しさん:03/06/18 22:52
短所:アプリケーション依存である
長所:アプリケーション専用である

148 :_:03/06/19 20:53
教えてください

excelでシート1を表示したままシート2のA1の関数をA10までコピーするにはどうすればいいのでしょうか
シートをアクティブにしてからなら、autofillやselection.copyがありますが、シート1を表示したまま
処理を行いたいのです



149 :デフォルトの名無しさん:03/06/19 21:52
>148
Sub test()
Worksheets("Sheet1").Activate
Worksheets("Sheet2").Range("a1").Copy
ActiveSheet.Range("A1:A10").Activate
Paste
End Sub

でよいかな

150 :デフォルトの名無しさん:03/06/19 22:52
コピーしてペーストは止めた方がいい悪癖だと思う。

Option Explicit

Sub ボタン1_Click()
Worksheets("Sheet1").Activate ' 別シートを表にしておくためで、不必要
With ThisWorkbook.Worksheets("Sheet2")
.Range("a2:a10").FormulaLocal = .Range("a1").FormulaLocal
End With
End Sub


151 :デフォルトの名無しさん:03/06/19 23:02
あ、配列数式を考慮するなら、こう。

Option Explicit

Sub ボタン1_Click()
ThisWorkbook.Worksheets("Sheet1").Activate ' 別シートを表にしておくためで、不必要
With ThisWorkbook.Worksheets("Sheet2")
Dim rngSrc As Range
Set rngSrc = .Range("a1")
Dim rngDst As Range
Set rngDst = .Range("a2:a10")
If rngSrc.HasArray Then
rngDst.FormulaArray = rngSrc.FormulaArray
Else
rngDst.FormulaLocal = rngSrc.FormulaLocal
End If
End With
End Sub


152 :デフォルトの名無しさん:03/06/20 00:05
うーん、思いがけず勉強になりますた

153 :148:03/06/20 10:29
>>149
>>150
>>151
ありがとうございました
助かりました

どうしても一人でやってると、煮詰まってしまって進まないんで
本当に助かりました

周りの人に聞いても「へ?VBA?エクセルの?シラネ」
で終わり

ありがとうございました

154 :デフォルトの名無しさん:03/06/24 14:09
すいません、どなたか、助けて。
VBAで、
Range("BQ2").Formula = "=if(ISERROR(FIND(BQ$1,$I2)),"",find(bq$1,$i2))"
と言う風に、IF関数で、ヌルを条件によっては出力するような式を入力させたいのですが、
これって、""が途中で切られるのかエラーになってしまいます。
IF関数がtrueの場合の""の替わりに何かセルなどを参照させると問題ないのですが、
今のままではエラーになります。
どうしたらよいでしょうか。m(_ _)m

お教え下さいませ。

155 :デフォルトの名無しさん:03/06/24 15:27
""を""""にはできないの?


156 :デフォルトの名無しさん:03/06/24 15:28
""""
とやってエスケープさせる。

157 :デフォルトの名無しさん:03/06/24 15:37
>>155,156
すいません、助かりました。ありがとうございます。m(_ _)m

158 :デフォルトの名無しさん:03/06/24 16:51
Excel2000から、VBAで、メールを送信したいんですが、そこで質問です。

Windows2000以前までなら、

Application.MailLogon
ActiveWorkbook.SendMail Recipients:=TargetSendMailOnly, Subject:=TargetFileName$

で、OutlookExpressで送信すること出来たのですが、WindowsXPで同じコードを走らせると、
メールソフト(OutlookExpress)を認識してくれません。

どうか教えてください、エライ人_| ̄|○




159 :デフォルトの名無しさん:03/06/24 19:13
>>158
[ファイル] - [送信] のメニューが同じかどうか確認してみ
違ってりゃ MAPI.DLL だか MAPI32.DLL だかがないということだ
一番手っ取り早い解決法は Outlook をインスコ&アンインスコする

160 :デフォルトの名無しさん:03/06/24 20:33
ユーザ定義型のメンバ、lParam As LongになんとしてもNULLで終わる文字列へのポインタを
代入したいんですが何かいい手はありますか?

上記が実現できるならlParamの型は問いません。最終的にそれが文字列へのポインタが格納
された4Byteの整数型変数ならば。

161 :デフォルトの名無しさん:03/06/24 20:58
>>160
lstrcpy, lstrlen, lstrcmp,lstcatあたりの関数は?

162 :デフォルトの名無しさん:03/06/24 21:05
GlobalAlloc()と一緒に。

163 :デフォルトの名無しさん:03/06/24 21:09
>>162
オイオイ、メモリ確保はどうす・・・・神!!!!

GlobalLockで得られた「Long型」の整数を引数にlstrcpyを呼んで、その後にlParamにその「Long型」の整数を代入すればいいのか。
兄貴!ありがとう!!


164 :デフォルトの名無しさん:03/06/24 22:36
自作自演ご苦労様です。

165 :161,162:03/06/24 23:08
自作自演じゃないし・・・

166 :158:03/06/25 16:57
>>159

再インスコしたら、出来ました(つД`)
こ、こんなことで引っかかるなんて・・・・_| ̄|○

情けないので、吊ってきます。

ご指摘ありがとうございました。m(. .)m

167 :デフォルトの名無しさん:03/06/26 11:13
どなたかご教授おながいします。

VBAでフォームを動かしたまま、
セルに入力などをするにはどうすれば、
いいのですかね?
Excelの2000を使用しているます。

何卒お教えください。

168 :デフォルトの名無しさん:03/06/26 16:58
指定したフォルダの中にある全てのファイルを読み込む処理をするために、For Each...Next ステートメントを使用したいのですが、
項目に何を指定してよいのか分かりません。
例えば、"C:\data"フォルダの中にある全てのファイルを処理対象とする場合は、どのように書けばいいですか?
(実際の読み込み処理の部分は適当でかまいません)

169 :デフォルトの名無しさん:03/06/26 19:39
DIR ヘルプでみてみ



170 :デフォルトの名無しさん:03/06/26 19:49
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■

HSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html

HSPプログラムコンテスト2003に一番乗りで出展したものの              
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。                   
【【【 投票方法 】】】             
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)    
順位 http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi              

171 :デフォルトの名無しさん:03/06/26 20:35
>>167
vbModeless

172 :デフォルトの名無しさん:03/06/26 21:15
>>171

オオォ!
出来ましたありがとうございます


173 :デフォルトの名無しさん:03/07/01 12:04
こで作ってみたんですがインデックスがないってできます・・
だれかおしえてくださいませんか
Sub 作業日取得()
Dim program_id As Integer
Dim start_date As Integer
Dim end_date As Integer
Dim check_start As Integer
Dim row As Integer
Dim col As Integer
Dim c As String
Dim start_flag As Boolean
program_id = 3'IDの番号()
start_date = 9 ' 開始日番号()
end_date = 10 ' 終了日番号()
check_start = 11 ' ■形式のデータが入っている最初の列番号(1オリジン)
With Sheets("表(詳細)")
row = 3


174 :デフォルトの名無しさん:03/07/01 12:05
Do While .Cells(row, program_id).Value <> ""
.Cells(row, start_date).ClearContents
.Cells(row, end_date).ClearContents
col = check_start
start_flag = False
Do While col < 200
c = .Cells(row, col).Value
If Trim(c) <> "" Then
If Not start_flag Then
start_flag = True
.Cells(row, start_date).Value = .Cells(1, col).Value
End If
.Cells(row, end_date).Value = .Cells(1, col).Value
End If
col = col + 1
Loop
row = row + 1
Loop
End With
End Sub
初心者板から誘導されました・・・
どなたか教えてください。わからないくて・・・
初めてVBAやったものですから・・

175 :デフォルトの名無しさん:03/07/01 13:07
Do While .Cells(row, program_id).Value <> ""
.Cells(row, start_date).ClearContents
.Cells(row, end_date).ClearContents
col = check_start
start_flag = False
Do While col < 200
c = .Cells(row, col).Value
If Trim(c) <> "" Then
If Not start_flag Then
start_flag = True
.Cells(row, start_date).Value = .Cells(1, col).Value
End If
.Cells(row, end_date).Value = .Cells(1, col).Value
End If
col = col + 1
Loop
row = row + 1
Loop
End With
End Sub

VBA初めてで原因もわからないです。
もうどうしえちいのか・・
どなたかおしえてください

176 :デフォルトの名無しさん:03/07/01 13:09
ごばくしましたすいません

177 :デフォルトの名無しさん:03/07/01 21:06
>>173
.row = 3


178 :177:03/07/01 21:16
あ、つづいてたのね。

179 :デフォルトの名無しさん:03/07/01 23:54
インデックスが無い、という話から想像すると "表(詳細)" シートの名前が
違っているのではないかな? "表 (詳細)" とか。

180 :デフォルトの名無しさん:03/07/02 00:01
(半角) と (全角) も別物として扱われるので注意。
ちなみに、この時のエラーは

インデックスが有効範囲にありません。(Error 9)

181 :周 レイ君:03/07/04 20:58
マクロで無限ループを作りたいのですが、
どうしたらいいかわかんない。
グーぐるでも検索したけどそれっぽい情報もない。
そこで、皆様に簡単なのでいいので、
無限ループのプログラム書いてほしいわけ。
お願いしますよー。

182 :デフォルトの名無しさん:03/07/04 21:46
>>181
do while(true)
loop


183 :デフォルトの名無しさん:03/07/05 21:10
無限ループじゃないプログラム書く方が難しい。

184 :デフォルトの名無しさん:03/07/05 22:29
名言age

185 :デフォルトの名無しさん:03/07/06 02:09
>>183
EXCELでサーバ作るのはおやめになって!

186 :デフォルトの名無しさん:03/07/06 08:33
>>185


187 :デフォルトの名無しさん:03/07/06 15:33
>185
エクセルでサーバ?実用性は無いが作れない事も無いよなw
どうせやるならアクセスでサーバ作った方が無難だろ

188 :デフォルトの名無しさん:03/07/06 22:22
VBAのprojectにかけられたパスワードを無効にしたいです。
パスワード解析やバックドアをつけるツールは売っていますが
これを使わずになんとかできないですか?

189 :デフォルトの名無しさん:03/07/06 22:38
何ゆえ?
教えて悪さされても困るし・・・

190 :デフォルトの名無しさん:03/07/06 22:48
職場の退職者が残していったEXCEL-VBAの技術計算プログラムの中身を調べたいです。

191 :デフォルトの名無しさん:03/07/06 23:21
>>190
そいつに聞けばいいかと・・・
死んだわけじゃないだろ?

192 :デフォルトの名無しさん:03/07/07 00:01
実は僕がこの手で7Fから突き落として殺しちゃったんです。
パスワード聞いてからにすればよかった。

193 :デフォルトの名無しさん:03/07/07 00:03
>>192
そうか・・・
イタコの力が必要だな
オカ板へGO!

194 :デフォルトの名無しさん:03/07/07 00:06
>>193
ないすあいであ

195 :デフォルトの名無しさん:03/07/07 00:12
>>190
設計資料を拾うか、Excelのバグを拾うか、どちらかだね・・・

196 :デフォルトの名無しさん:03/07/07 21:44
結局avprp買って、バックドアから無理やり開いた。

197 :デフォルトの名無しさん:03/07/08 23:36
すみません教えてください。
FileDialogはオフィスXPでないと使えないのでしょうか?

198 :デフォルトの名無しさん:03/07/09 00:48
Application.GetOpenFilename と Application.GetSaveAsFilename は
97とかでも使えるはず。

199 :デフォルトの名無しさん:03/07/09 06:41
>>198
Excel限定な。

200 :デフォルトの名無しさん:03/07/09 22:41
えーと、忘れがちなんだがこのスレは。

201 :デフォルトの名無しさん:03/07/10 09:14
>196

くらっくしたの?

202 :デフォルトの名無しさん:03/07/10 12:38
>>196
買ったのか
尻くらいすぐ見つかると思うがな

203 :デフォルトの名無しさん:03/07/10 22:06
仕事で使うので、買いました。

本当です。

この目を見てください。


204 :デフォルトの名無しさん:03/07/10 22:53
>>203
見えません。

205 :デフォルトの名無しさん:03/07/11 21:37
ちょっとしたエクセルマクロを作るときに、電子署名を入れるのがめんどいです
かと言って使う相手にセキュリティを下げろとは言いにくいし・・・・
ローカル署名を作れるツールがOfficeに同梱されてるらしい事まではわかったんですが、
そこで手詰まりです。
どうすればいいでしょう?excel2000+Win2000+ie6です

206 :デフォルトの名無しさん:03/07/12 00:48
SELFCERT.EXE の事だと思うんだが、電子署名を入れるのがうんぬん
の個所の意味が分かんない・・・
・・・ああ「めんどい」ではなくて「わかんない」なんだな。
意外と知らない人が多いので書いておく。次のテンプレに希望。

1. SELFCERT.EXE で名前を入れてデジタル署名を作る
2. Visual Basic Editor のツールメニューのデジタル署名でブックに署名
 ※ 標準モジュールかでマクロを書いておくこと
3. その署名入りのブックを実行するとセキュリティの警告が出るようになる
 ので「この作成者のマクロを常に信頼する」チェックボックスをONにして、
 マクロを有効にするボタンを選択してもらう

これでOK。
署名を削除するには「ツール(T)」->「マクロ(M)」->「セキュリティ(S)」の
信頼の置ける発行元で削除すればよい。
家のOfficeはXPだけど、会社の2000も同じ操作だったと記憶。

207 :デフォルトの名無しさん:03/07/12 00:54
>>206
あぁありがとうございます。まさにソレです。
正直に「わからん」と書くべきでしたね。ゴメンナサイ
一度人に教えてもらったのですが、大分前の事で忘れてしまって・・・

今度からメモしておきます。

ありがとうございました!

208 :デフォルトの名無しさん:03/07/12 20:12
この中に1人中国人がおる!>>209やろ!

209 :デフォルトの名無しさん:03/07/12 21:10
>>208
はぁ?しょうもないこと言うとったらしばくアルよ?ボケ。

210 :デフォルトの名無しさん:03/07/13 14:22
みんな行と列を格納する変数をなんて名前にしてる?
自分はgyo retu 。 なんか気恥ずかしい。

211 :デフォルトの名無しさん:03/07/13 14:25
>>210
line, column
ln, cl
とかじゃダメ?

212 :デフォルトの名無しさん:03/07/13 15:02
行番号や列番号を示すポインタのこと?
だったらi,jとかm,nとか

213 :デフォルトの名無しさん:03/07/13 15:06
行 -> record -> rec or rcd
列 -> column -> col

214 :デフォルトの名無しさん:03/07/13 15:10
>>210
変に凝った名前よりは判りやすくて良いと思うけど?


215 :デフォルトの名無しさん:03/07/13 15:21
>>213
行はrowでは?

216 :デフォルトの名無しさん:03/07/13 20:18
Book A と Book B を読み込んで、
Book A の標準モジュールから
Book B の標準モジュールにある Public 変数の値を
参照したり書換えたりできるのでしょうか?
できるのであれば、どのように指定すれば
よいのでしょうか?

217 :デフォルトの名無しさん:03/07/13 20:28
ほのぼの
http://www.roppongi-tv.net/00004/007.shtml
http://www.roppongi-tv.net/00004/hara.shtml
http://www.roppongi-tv.net/00004/shi.shtml

218 :デフォルトの名無しさん:03/07/13 21:31
>>215
それだ!!

219 :デフォルトの名無しさん:03/07/13 22:36
>>216
どっかのセルに値を書き込んでそれを参照するようにしたら?


220 :デフォルトの名無しさん:03/07/13 23:05
>>219 THANKS.
やっぱりそれしかないのかなぁ。


221 :デフォルトの名無しさん:03/07/14 14:32
>>220
Javaでいう(Javaだけではないかもしれないけど)
アクセサをつくっておいて、それからRunメソッドで
アクセスさせれば可能。

参照される方(Source.xls)
Public TestValue as long

Public Sub setTestValue(Byval v as long)
 TestValue = v
End Sub
Public Function getTestValue() as Long
 getTestValue = TestValue
End Function

参照する方
Sub Test
 Run "Source.xls!setTestValue", 100
 MsgBox Run("Source.xls!getTestValue")
End Sub
100が表示される。

222 :216=220:03/07/14 22:49
>>221
すごい! できた。

処理を分岐させるスイッチなので
シート上には表示したくなかったのです。
感謝三唱。
ありがとうございました。
ありがとうございました。
ありがとうございました。

223 :デフォルトの名無しさん:03/07/14 22:59
あいかわらずマ板とは思えない内容ですな。
ビソ板に帰れよ。

224 :デフォルトの名無しさん:03/07/14 23:17
>>223=>>219
くやしい気持ちは分かるが、ここはム板だヨン。


225 :教えてください:03/07/14 23:46
Excelでフォーカスがあるところを任意の色に塗りつぶして
フォーカスが外れると元の色に戻す
というマクロを組みたいのですがどうもうまくいきません。
だれか助けてくださ〜い

226 :デフォルトの名無しさん:03/07/15 00:14
あるセルをクリックすると同じブック内の他のセルにジャンプする[ハイパーリンク]-[このドキュメント内]
の機能をマクロで実現するにはどのようにすればよろしいのでしょうか?
どなたか教えてください。

227 :デフォルトの名無しさん:03/07/15 00:21
>>225
標準で色が変わるじゃん

228 :山崎 渉:03/07/15 09:37

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

229 :デフォルトの名無しさん:03/07/15 09:42
>>226
「マクロの記録」を実行して、ハイパーリンクの編集をやってみてよ

230 :223:03/07/15 20:44
>>224
ちなみに漏れは>>219にたいして言ったつもりだったんだが。
マ板とム板はマジボケしてたよ、ごめんね。


231 :デフォルトの名無しさん:03/07/15 22:54
とんでもなく低レベルで申し訳ないのですが

do until (Col = "BF")
range(1,Col)
'--- ?
loop

同一行のカラムをひとつづつ右にアクセスするにはどうやればいいですか?

232 :デフォルトの名無しさん:03/07/15 23:18
do until (Col = "BF")
range(1,Col)
'--- ?
Col = Col + 1
loop


まぁ、一歩間違えばあぼーんだが、これがないと始まらん。

233 :デフォルトの名無しさん:03/07/16 00:12
dim MaxCol as Long
with ActiveSheet
 Maxcol = .Columns("BF").Column
 for c = 1 to MaxCol
  .Cells(1,c).Value = "ゴルア"
 Next
End With

234 :デフォルトの名無しさん:03/07/16 00:39
Dim Bar As CommandBar
For Each Bar In CommandBars
Bar.Enabled = False
Next Bar
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHeadings = False


235 :234:03/07/16 00:43
あ・・・書きかけで暴発

続き
上のやつを実行した後に、
ワークシートに貼り付けたコマンドボタンクリックで
別のシートをActivateして
Application.ScreenUpdatingを操作すると
表示がおかしくなるのはEXCELのバグですか?

236 :デフォルトの名無しさん:03/07/21 15:09
エクセルで質問なのですが、
例えばA列に上から 1,2,3,4・・・ と
B列にも 1,2,3,4・・・ と入れて行き、
C列の1に『=A1+B1』を入れて数式をコピーしていくと、
C列は 2,4,6,8・・・ となりますよね。

で、このC列の結果を別のシートにコピーしようとすると、
数式自体をコピーしてしまってうまくいきません。
2,4,6,8・・・ という数字をコピーするにはどうしたらいいのでしょうか。

237 :デフォルトの名無しさん:03/07/21 16:47
>>236
VBAとは関係ないようですが・・・一応答えておきましょう。
「形式を選択して貼り付け」で「値」を選択。
以上!

238 :デフォルトの名無しさん:03/07/22 18:07
Do
debug.? "ゴルア"
Loop

239 :デフォルトの名無しさん:03/07/22 18:19
Sub Macro1()
Const lngMax As Long = 1000
With [A1]
.Value = "1"
.DataSeries 2, xlLinear, 1, 1, lngMax, False
.Resize(lngMax, 1).Copy .Offset(, 1)
With .Offset(, 2).Resize(lngMax)
.Formula = "=RC1+RC2"
Sheets.Add.[A1].Resize(lngMax).Value = .Value
End With
End With
End Sub

240 :デフォルトの名無しさん:03/07/22 23:45
237=240
237は却下ですか・・・ではこんなところで。
Sub Macro2()
'エクセルで質問というから・・・
'しかたないのでVBA版ただし適当・・・
Const MaxRow = 10
Sheets("Sheet1").Select
For i = 1 To MaxRow
Cells(i, 1) = i
Cells(i, 2) = i
Cells(i, 3).Formula = "=RC1+RC2"
Next i
Range(Cells(1, 3), Cells(MaxRow, 3)).Copy
Sheets.Add
Cells(1, 1).PasteSpecial Paste:=xlValues
End Sub

241 :デフォルトの名無しさん:03/07/22 23:46
=240
ごめん。Sheets("Sheet1").Selectはいらなかった。デバッグ用に使ったの残ってたでし。

242 :デフォルトの名無しさん:03/07/23 06:19
>>240
つくづくレベルの低い方だな・・・。

243 :デフォルトの名無しさん:03/07/23 22:17
>>242
レベルが低いと思う理由、または、
自分で書いたコードを乗せて欲しいな・・・
236のレベルなら、これで十分と思うが。

244 :デフォルトの名無しさん:03/07/23 23:25
コピーしてペーストは止めた方がいい悪癖だと思う。

245 :デフォルトの名無しさん:03/07/23 23:51
>>236 のレベルなら
>>237 が正解と思われ。

246 :_:03/07/30 21:39
質問です

excelVBAのフォームにリストボックスを作りました
リストには2列表示させたいのですが、どうすればいいのでしょうか
ColumnCount を 2に設定したのまではいいのですが、それぞれの列に値を入れることが出来ません
&でつなげて見た目には2列にすることは出来ますが
1列目のデータが10文字だったり20文字だったりしますのでずれてしまうのです
教えてください、お願いします

247 :デフォルトの名無しさん:03/07/30 21:43
>>246
ListView使うのが良いと思うよ。

248 :246:03/07/30 21:54
247さん
早速の回答ありがとうございます
YaHOOで検索したところ
ListViewというのは何かのツールのようですが(現在も調べ中)

出来ればどノーマルのexcel2000,excel97で動かしたのです

249 :デフォルトの名無しさん:03/07/30 22:08
ヤフーじゃなくてまずヘルプ内を検索したほうがよいかと

250 :デフォルトの名無しさん:03/07/30 22:23
>>249
載ってないと思われ。

251 :デフォルトの名無しさん:03/07/30 22:24
test


252 :246:03/07/30 22:41
ヘルプにはのってませんでした
OCXのようですね
配布を考えてますので、オフィスがデフォルトの状態で使いたいのですが・・・

Colmnは設定できるのに表示が出来ないとは思えないので
何かやり方があるはずだと思うのですが

253 :デフォルトの名無しさん:03/07/30 22:58
>>246のおかげでひとつ賢くなった。
ExcelXPにはあるのにね。

一番初心者臭いのは
Len関数で文字数カウント→差分を" "で埋めるとか

254 :デフォルトの名無しさん:03/07/30 23:05
>>246
できる。
ListboxのヘルプのColumnプロパティ or Listプロパティ
を読んでみれ。

255 :246:03/07/30 23:13
arrayを使ってやればよいのですね

additemで一軒ずつ取込むのではなく
arrayに取込んでから一気にlistで取込むということで合ってますでしょうか?


256 :246:03/07/30 23:14
sage忘れてましたすみません

257 :名無し@沢村:03/07/30 23:17
学校のおじさんのつくったExcelVBAを真面目に勉強している、へたれたちのいるスレはここですか?


258 :デフォルトの名無しさん:03/07/30 23:19
客先がExcelファイルを要求しない幸運な人ですか?

259 :246:03/07/30 23:32
>>257さん、すみませんヘタレで
ですが、ヘタレなのは私だけなんで「たち」はやめて頂けませんでしょうか

>>258さん
そうです。最初はVBで作ってたのですが配布直前に「操作がよくわからんからエクセルで」といわれました
エクセルでよくやるコピー&ペーストや画面に合わせての拡大縮小などなどがないことが不満のようです

エクセルにした方がのちのち大変なことになるのはわかってるのですが
「やれ」と言われればやらなければいけない環境(説得出来る状況じゃないんですね、客先のほうが圧倒的に強いので)なので
エクセルで作ってます

多分というか絶対あとで大変なことになりますね

260 :246:03/07/31 01:50
肝心な事を忘れていました

レスくれた皆さんありがとうございました

261 :デフォルトの名無しさん:03/08/01 14:23
あの、VBAにはVBのFileListBoxみたいなの無いんですか?
指定したディレクトリ下のファイルリスト情報が欲しいのですが、、、、
ShellでDIR叩いてリダイレクトでファイル作って解析するしか無いのでしょうか・・
正直困ってます。。



262 :デフォルトの名無しさん:03/08/01 20:16
>>261
Dir()関数

263 :デフォルトの名無しさん:03/08/01 22:29
>>262
あれ、再帰するとなぜかページ違反を起こすので、個人的にはファイルシステムオブジェクトを勧めるよ。

264 :デフォルトの名無しさん:03/08/01 22:54
>>263
横から申し訳ないけど、教えていただけ無いでしょうか。私もぜひそれを知りたいので、よろしくおながいします。


265 :デフォルトの名無しさん:03/08/02 00:14
>>263
Excelで使えたっけ?

266 :デフォルトの名無しさん:03/08/02 00:18
>>265
使えたよ。

267 :デフォルトの名無しさん:03/08/02 01:22
使えた・・・
http://www.microsoft.com/japan/msdn/scripting/default.asp
Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB)
からのパクリ&改変

Function ShowFolderList(folderspec)
   Dim fso, f, f1, fc, s
   
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   
   For Each f1 In fc
      s = s & f1.Name
      s = s & vbCr
   Next
   
   ShowFolderList = s

End Function

Sub test()
    MsgBox ShowFolderList("C:\")

End Sub

268 :山崎 渉:03/08/02 02:04
(^^)

269 :デフォルトの名無しさん:03/08/02 03:36
でもFileSystemObjectって、素の Win98 + Office97 環境じゃ使えないんだよねー。
Wsh5.6とか入れさせなきゃダメかな。

270 :デフォルトの名無しさん:03/08/02 20:19
ExcelでVBAしてます。

フォームをモーダレス表示した直後に、Excelの方にフォーカスを戻すにはどうすればいいでしょうか?



271 :デフォルトの名無しさん:03/08/02 20:19
age


272 :デフォルトの名無しさん:03/08/02 20:22
>>270

form.Show vbModeless

の後に

ActiveWindow.Activate
Sheet1.Activate
Sheet1.Cells(1,1).Select

とか色々やってみたんですがフォーカスは依然としてモーダレスフォームのままでした。

273 :デフォルトの名無しさん:03/08/02 20:24
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


274 :直リン:03/08/02 20:38
http://homepage.mac.com/maki170001/

275 :安全地帯:03/08/02 21:25
http://elife.fam.cx/a009/


276 :デフォルトの名無しさん:03/08/03 00:31
>>272
ちょっと強引に(あまりやらないほうがいいが)
form.Show vbModelessの後に
AppActivate "Microsoft Excel"
とか・・・


277 :デフォルトの名無しさん:03/08/03 00:58
>>276
ばっちり成功しました。
Excel2000とかだと同名のファイルは同時に開けないようになっているので、ファイル名まで決め打ちすればOKっぽいです。

278 :デフォルトの名無しさん:03/08/03 04:21
マクロの登録されたブックがアクティブであるかを判定して、
それによってボタンを押した際の動作を変えるようなマクロを作りたいのですが・・・・・


’ボタンを押すと呼ばれる処理

If ThisWorkbook = active then
  '通常の処理
else
  MsgBox "ブックを最前面に表示してください"
End If

こんな感じでいけるか?と適当に作ってみましたが、動きませんでした。(当たり前)
よろしければご指導下さいな。

279 :デフォルトの名無しさん:03/08/03 04:30
>>278
ActiveWindow.Name = "xxx.xls"
でいけるんじゃないの?

280 :デフォルトの名無しさん:03/08/03 07:17
ファイルからレコードを読むときなのですが、フィールドに
YYYYMMDDという8桁の固定長テキスト領域がありまして、それの
有効性を判断したいのですが、なんか上手く機能してくれません。

YYMMDDの領域には"01000101"〜"99991231"という数値文字列の範囲で
あればTrue。それ以外ならFalseということで動かしたいのですが、
文字列をそのまま比較演算をすると"0abcefg1"とか"9999abc1"もTrueになります。
Val関数で変換して比較すると"1000101"と"01000101"は等価になり、
Trueになってしまいます。

なんか巧いやり方って無いでしょうか?
当方Excel2000SP2の環境です。

281 :デフォルトの名無しさん:03/08/03 07:58
>>280
if len(data) = 8 And Val(data) >= 1000101 And Val(data) <= 99991231 then


282 :278:03/08/03 10:10
>>279
そうか、名前を見ればいいんですね〜。
というわけで

If ActiveWorkbook.Name = ThisWorkbook.Name Then

とすることで、無事に期待した通りの動きをしてくれました。
ありがとうございます!

283 :デフォルトの名無しさん:03/08/03 10:39
>>280
Stringのまま比較するから無理があるのです。
日付に変換してチェックすればよい。

284 :280:03/08/03 12:26
>>281
やっぱりそうなりますか・・・。
Cだったらchar配列でクルクルと比較すれば簡単なのですが、
VBAだと難しいんですね。

>>283
以前に試したときには
CDate(Format(Val(data.date), "#000/00/00"))
という感じでCDateしてみたのですが、この場合ストレートに
数値文字列が来ないと「型が一致しない」とされてエラー
ハンドルに手間がかかってしまい別の手段を探していました。

とりあえずLenで処理してみます。
ありがとうございました。

285 :デフォルトの名無しさん:03/08/03 13:14
>>284
> Cだったらchar配列でクルクルと比較すれば簡単なのですが、

chr(a)
a = Right(a,Len(a) - 1)


286 :デフォルトの名無しさん:03/08/03 14:16
99981233

287 :デフォルトの名無しさん:03/08/03 19:29
新しいブックを作成して、そいつの名前を変えて保存させてます。

WorkBooks.add
’いろんな処理
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="レポート" & format(now, "yyyy.mm.dd")).xls"
ActiveWorkbook.Close savechanges:=False

こんな感じで。
特定のディレクトリにしか保存できないのが嫌だったので、
ユーザーに保存する場所を自由に選ばせようと思い、
ダイアログボックスを開いてファイルを保存させるようにしました。

WorkBooks.add
’いろんな処理
ActiveWorkbook.SaveAs Filename:="実網Report(" & shtName & version & "_" & mydate & ").xls"
Application.Dialogs(xlDialogSaveAs).Show
ActiveWorkbook.Close

しかし、これだとダイアログボックスが出る前に勝手に保存されてしまいます。
かといって、三行目のActiveWorkbook.SaveAs Filename:〜〜 を抜くと、
book5とか適当な名前で保存されてしまうので、
自分でファイル名を書き換えなければなりません。
ダイアログボックスに出る名前を、自分で決めてやるにはどうしたらいいんでしょうか?

288 :デフォルトの名無しさん:03/08/03 19:52
>>287
Application.GetSaveAsFilename

289 :デフォルトの名無しさん:03/08/03 20:48
>>284
CDateではなくて、IsDateを使えばよいのでは

290 :287:03/08/03 21:40
>>288さん
できました!

Dim name As String
name = "レポート" & format(now, "yyyy.mm.dd")).xls"

If Application.GetSaveAsFilename(name) <> False Then
  ActiveWorkbook.SaveAs name
End If
ActiveWorkbook.Close savechanges:=False

こんな感じで、ダイアログボックスに指定したファイル名が出て、
ちゃんと保存することができました。しかし、喜んでいたのも束の間・・・・・・
同じディレクトリに同名のファイルがある場合に、無理やり保存しようとすると

1.上書き確認で「OK」を押すと何もないが、「いいえ」又は「キャンセル」を押すとエラー
2.その時にファイルを開いていたら、問答無用でエラー

となります。
どちらの問題も、エラーが出て然るべきで、かなり初歩的な質問に入ると思うんですが、
それをVBAで回避する方法がさっぱり分かりません(汗
真偽値なり定数なり、なんらかのメッセージを返して来てるとは思うんですが、
一体何が返ってくるのか分からないので、困っています。

宜しければご教授お願いします〜・・・

291 :287:03/08/03 23:05
よく調べると、エラー1004が帰ってきてました。
こいつをトラップしてやればいいんですね。
お騒がせしました。

292 :デフォルトの名無しさん:03/08/03 23:12
>>291
name=の行も直しておいたほうがいいと思いますよ

293 :280:03/08/04 03:29
>>289
あっ・・・そうか。
VBAには情報関数があったのでしたね。

Lenで処理すると"a1000101"と"01000101"が判別できないと言う
バグが潜んでいたので作り直してみました。

'YYYYDDMMの各要素が数値かどうか判定する
For Element = 1 To 8 Step 1
If Not IsNumeric(Mid$(Data.Date, Element, 1)) Then
処理
End If
Next Element

'AD100/1/1〜AD9999/12/31の範囲にあるかチェック
If 1000101 <= Val(Data.Date) And _
Val(Data.Date) <= 99991231 Then
処理
End If

こんな感じで期待通りの処理ができました。

皆様ヒントありがとうございます

294 :デフォルトの名無しさん:03/08/04 10:18
複数のブックを開いた状態で、ブック間を移動させるボタンを作りました。
ボタンを押せば、次々とブックが切り替わります。

しかし、描画が完全に終わる前にボタンを押してしまったら、その操作は無効になり、
次の動作が変になってしまいます。
(画面は変更されなくても、ボタンを押した際に内部のカウンタが増加されているため)

ブックが完全に更新し終わるまで、ボタン操作を無効にすることはできるんでしょうか?


295 :デフォルトの名無しさん:03/08/04 10:22
>>294
早いマシンを買え。

296 :283=289:03/08/04 10:32
>>293
私なら以下のような関数にします。
Public Function IsDate8(strDate As String) As Boolean
  IsDate8 = False
  If Not IsNumeric(strDate) Then
    Exit Function
  End If
  If Len(strDate) <> 8 Then
    Exit Function
  End If
  If Not IsDate(Format(strDate, "0000/00/00")) Then
    Exit Function
  End If
  If CDate(Format(strDate, "0000/00/00")) < #1/1/1000# Then
    Exit Function
  End If
  IsDate8 = True
End Function
月末が31日ではない月の処理や、うるう年のチェックも考えると
私はIsDateは使うべきだと思います。

297 :デフォルトの名無しさん:03/08/04 10:43
質問くんで申し訳ないのですが
数値の最大値と最小値を取得するのはどうやれば良いでしょう
セルA1〜A100まで数値が並んでいる時、最大の数値と最小の数値だけを
使用したいのです
最大値がどこのセルに入っているかは分からなくてもいいです
よろしくお願いします。

298 :デフォルトの名無しさん:03/08/04 11:13
>>297
ヘルプか入門書見ろよ
Googleでもすぐ見つかるぞ

299 :デフォルトの名無しさん:03/08/04 20:03
>>294
Private Sub ボタン_Click()
 ボタン.Enabled = False
 'ワークブック切り替え処理をここに
 ボタン.Enabled = True
End Sub
ではいかんの?

あらゆるユーザー操作を無効にするなら
Application.EnableEvents = False
'ワークブック切り替え処理をここに
Application.EnableEvents = True
とか

心配なら移動元でボタンを無効にして
Private Sub ボタン_Click()
 ボタン.Enabled = False
 'ワークブック切り替え処理をここに
End Sub

移動先のワークブックの更新後に有効にする
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
 ボタン.Enabled = True
End Sub

300 :デフォルトの名無しさん:03/08/04 20:58
Cellの中にComboBoxを埋め込むことってできる?
Cellへの入力をComboBoxのリストの中から選択できるようにしたいんだけど

301 :デフォルトの名無しさん:03/08/04 21:06
>>300
なぜ、やってみようと思わないのか。

302 :デフォルトの名無しさん:03/08/04 21:11
やってはみました。
VBAのHelp調べてそれらしいプロパティを調べたり
ぐぐってみたけどそれらしいのがない。

303 :デフォルトの名無しさん:03/08/04 21:16
Validation

304 :デフォルトの名無しさん:03/08/04 21:35
>>303
サンスコ おかげででできました。
ホント厨房な質問して迷惑かけてスマン

305 :293:03/08/05 07:00
>>296

たびたびご指摘ありがとうございます。
>月末が31日ではない月の処理や、うるう年のチェックも考えると
この部分は至極ごもっともなので、提示されているプロシージャを作り直してみました。
(巧くインデントできるかな?)
Function IsDate8(strDate As String) As Boolean
  Dim Element As Integer
  IsDate8 = False
  For Element = 1 To 8 Step 1
    If Not IsNumeric(Mid$(strDate, Element, 1)) Then
  Exit Function
   End If
  Next Element
  If Not IsDate(Format(strDate, "0000/00/00")) Then Exit Function
  If 1000101 <= Val(strDate) Then
    If Val(strDate) <= 99991231 Then
      IsDate8 = True
    End If
  End If
End Function
フィールドに含まれる数値以外の文字や、内部でのシリアル値の処理も考えると、
恐らくこれが最適の方法となるんじゃないかと思ってます。

306 :デフォルトの名無しさん:03/08/05 10:24
スレ違いですが
B1=1
C1=2
D1=3

E1に123と並べる式を教えてください

307 :デフォルトの名無しさん:03/08/05 11:37
>>306
http://pc2.2ch.net/test/read.cgi/bsoft/1057720306/l50

308 :283=289=296 :03/08/05 12:45
>>296

  If Len(strDate) <> 8 Then
    Exit Function
  End If

  If InStr(1,strDate,".") > 0 Then
    Exit Function
  End If

>>305
IsNumericは1文字ごとに行う必要無い。ヘルプ嫁
IsDateでチェックしたあとなら、9999/12/31より大きな日付になることはないので
If Val(strDate) <= 99991231 Then は不要でしょ。

309 :283=289=296=308:03/08/05 12:48
>>308
以下も必要かな
  If (InStr(1,strDate,"+") > 0) Or (InStr(1,strDate,"-") > 0) Then
    Exit Function
  End If

310 :293:03/08/05 21:25
>>309
要件として終わったことに長々と指摘してくれたところで申し訳ないのですが、あなたの指摘で的確な部分は
>IsDateでチェックしたあとなら、9999/12/31より大きな日付になることはないので
これだけです。これは私の確認不足でした。

>IsNumericは1文字ごとに行う必要無い。ヘルプ嫁
あなたはヘルプ以前に要件を確認しましょうね。
例えば"001000"だけがTrueとなる必要がある場合でも、あなたのやり方では
"01,000"も" 1000"も"1000.0"も等価になります。
それらや算術記号を回避するために延々とinstr並べるってんですか?
そんな不細工なコーディングする感覚で良く平気ですね。メリットないでしょ。
それにダメ出ししているLen使ってたところとか、いつの間にか無意味に
日付型で大小比較してたりするところを無かったことにしてるところとか
見る限りでは「なんだかな〜」だし。

なんでこっちが敢えて使わないのかすら推量できない想像力。
あなた自分では出来るつもりなんでしょうけど、ハッキリ言うとプログラムのセンス無いですよ。


311 :309:03/08/05 22:28
293さん、失礼しました。
IsNumericの扱いは私の考えが足りてませんでした。
他人が真剣に考えているのに、思いつきで口を出すべきではありませんでした。
今回の件は私も勉強になりました。

312 :デフォルトの名無しさん:03/08/05 23:50
なぜ293は必死なのかと

313 :デフォルトの名無しさん:03/08/07 20:55
Office2000のExcelで、日本語中国語混在の文書を作ってます。
Excel自体の方はunicodeなので(不満は残るけど)一応両方扱えるのですが、
肝心のVBAが、どうも単一の言語しか想定してない仕様みたいですね。

例えば Worksheets("シート名")のようなのが、日本語版Excelで作ると
中国語版のExcelで動かないし、逆もまた然りです。
この辺うまく対処している方がいたら、どうしているか教えて下さい。


314 :313:03/08/07 21:05
すいません、うまく説明できてないので補足します。
VBAの部分をunicodeではなくSJISだとかBig5だとかのローカルコードで
持っているような気がします。なので、

> 例えば Worksheets("シート名")のようなのが、日本語版Excelで作ると

「シート名」の部分を日中どちらの文字セットでも使える漢字にしても、
SJISとBig5では同じコードに違う文字が対応するので、SJISで作っても
中国語版Excelに持っていくとVBAのエディタでは化けてしまいます。

日本語版ExcelのVBAエディタの「オプション」でBig5なフォント(MinLiU
だったか、そんな名前)にすると、中国語で書いたVBAコードがきちんと読めるの
ですが、それでもなお Worksheets("中国語名") みたいなので範囲外エラーに
なってしまうのが謎です。
また、プッシュボタンから呼び出すマクロではエラーになるのに、ワークシート
関数の中で使っている分にはエラーにならない、というのが更に謎で、もうわけ
がわかりません。


315 :デフォルトの名無しさん:03/08/07 22:21
>>314
と、言うかフォント入れてないだけだったり名。

316 :デフォルトの名無しさん:03/08/07 22:32
>>314
VBA使ったこと無いけど、UNICODEって、ページ指定出来なきゃ複数言語は混在でけんでしょ。
VBAにそんな仕組みあんの?

317 :パチンコ屋:03/08/07 22:38
初心者なのでどなたか教えてください!!
ファイル名"test.dat"(36バイト)ファイル内バイナリ
00 00 82 62 82 71 90 56 8A 43 95 A8 8C EA 82 6C
32 37 81 40 81 40 81 40 81 40 81 40 81 40 81 40
81 40 00 00
のうち"test.dat"のアドレス02〜21(計32バイト)を読み込んで
SHIFT-JISの文字に変換する方法をどうかお願いします!!

318 :デフォルトの名無しさん:03/08/07 23:58
>>316
>UNICODEって、ページ指定出来なきゃ複数言語は混在でけんでしょ。
なんのためのUnicodeだとこ一時間

319 :デフォルトの名無しさん:03/08/07 23:59
>>317
dim bytevariable(32) as byte

320 :デフォルトの名無しさん:03/08/08 00:01
>>317

dim bytevariable(32) as byte

get #fil,,bytevariable

str = Strconv(StrConv(bytevariable,vbunicode),vbfromunicode)

321 :デフォルトの名無しさん:03/08/10 21:03
困ってます。誰か教えてください。
XP で EXCEL2002 VBA をコーデイング途中 EXCEL が固まってしまいました。
強制終了させて VBA のファイルを開くと EXCEL が固まります。
・EXCELを起動しファイル回復しても「ダメージが大きい」でダメ
・スキャンディスクしたが回復せず
・WORD で開いたがブックのデータだけでマクロはダメ
壊れたxlsファイルをテキストで開くとコードは残っているようなので
ツールか何かあれば回復しそうです。
(1つのソースコードだけ回復すればいいのですが・・)
業者に頼んでもいいですが、何かいい方法はあるでしょうか?

322 :321:03/08/10 21:18
今質問したばっかりですが解決してしまいました
バージョン違いのEXCELで読めばコードが出てきました
失礼致しました

323 :_:03/08/10 21:19
http://homepage.mac.com/hiroyuki45/

324 :デフォルトの名無しさん:03/08/10 21:49
>>317
lstrcpy(StrPtr(str),array(0))

325 :デフォルトの名無しさん:03/08/11 23:08
Excelのマクロを使って、同じフォルダの中にあるすべてのExcelファイルを
起動させる仕様にしたいのですが、よく分かりません。
指定したフォルダの中にあるすべてのファイルを起動させる方法や、同じ
フォルダの中のひとつの指定したファイルを開くことはできたのですが、
前述した仕様にだけはどうしてもできませんでした。

初心者で申し訳ありませんが、どうしても知りたいので、誰か分かる方が
いましたら教えてください、よろしくお願いします。

326 :デフォルトの名無しさん:03/08/12 01:25
>>325
ループで回す

Public Sub test(ByRef strPath As String)
Dim strXlsFile As String
Dim FileCount As Long
Const MaxFiles As Long = 10 'ファイル数制限

strPath = strPath & Application.PathSeparator

FileCount = 0
strXlsFile = Dir(strPath & "*.xls")
Do Until strXlsFile = "" Or FileCount >= MaxFiles
 FileCount = FileCount + 1
 Workbooks.Open (strPath & strXlsFile)
 strXlsFile = Dir
Loop
End Sub

327 :デフォルトの名無しさん:03/08/12 08:13
>>325
死ねクソマルチ。

328 :デフォルトの名無しさん:03/08/13 20:33
質問です。
例えばA,B,Cの3文字の組み合わせ(同じ文字を使って良い)を
シートに列挙したいと考え以下の様なコードを書いてみました。

Sub textstr()

Dim Tex(1 To 3) As String
Dim i, j, k, rown, pass

rown = 1
Tex(1) = "A"
Tex(2) = "B"
Tex(3) = "C"

For i = 1 To 3
For j = 1 To 3
For k = 1 To 3
pass = Tex(i) & Tex(j) & Tex(k)
Cells(rown, 1) = pass
rown = rown + 1
Next
Next
Next

End Sub

しかしこれだと文字数が増えるとその分For〜Nextを増やさなければならず、
結果的に不格好なプログラムになってしまうと思うんです。
何か旨い方法(簡略なコード)ってないですかねぇ。。。
必要に迫られているわけではないのですが、いったん考え出すと気になってしまって。

329 :328:03/08/13 20:34
すみません。タブが消えて読みにくくなってしまいました。

330 :デフォルトの名無しさん:03/08/13 20:40



public function arr(CharCount as Long,CharIndex as Long)


ってちょっと待て!パスワードクラッカーじゃねぇか!!

331 :328:03/08/13 21:03
えぇ。。。
早い話自分で作ったPass付Zipのパスを忘れてしまいまして。
でも朧気に使用した単語は憶えていたのでこんなことを考えてました。
寧ろ今はコードだけが頭の中をグルグル回っている状態で。。。
が、問題ある様なので無視してください。
スミマセンでした。

332 :デフォルトの名無しさん:03/08/13 21:04
>>328
あるサイトで組み合わせについて書いてあったのが以下のやつ

Sub Macro1()

  Permute Range("A1"), "ABC"
End Sub

Sub Permute(ByRef rngData As Range, ByVal strData As String, Optional ByVal lngNum As Long = 1)
  Dim i As Long

  If lngNum < Len(strData) Then
    For i = lngNum To Len(strData)
      ' 再帰呼出
      Permute rngData, Left$(strData, lngNum - 1) & Mid$(strData, i, 1) & Mid$(strData, lngNum, i - lngNum) & Mid$(strData, i + 1), lngNum + 1
    Next
  Else
    ' 結果
    rngData.Value = strData
    Set rngData = rngData.Offset(1)
  End If
End Sub



333 :330:03/08/13 21:10
>>332
俺が書こうとしたのもそれだわ。
再帰だよな。基本は。

334 :328:03/08/13 21:20
おぉ、ありがとうございます。
ちょっと読んでみます。
まだVBAかじって間もないので時間かかりますが。。。

そう、今回は再帰ってのが使えるのでは無いかと思い、

sub a(云々)
call a(云々)
end sub

というのが使えるのではないかと勝手に思案してました。

335 :デフォルトの名無しさん:03/08/14 21:25
 ある条件が成立したら、メディアクリップオブジェクト(mpgファイルより読込済み)
を再生したくて次の処理を書いたのですが再生できません(オブジェクトが一瞬アクティブ
になりますが、再生できませんです)。
 なぜでしょうか、もっと良い方法をご存知のかた、教えてください。


If Adata > Bdata Then
waveon
Application.OnTime Now + TimeValue("00:03:30"), "plaympg" '次回起動設定
Else
Application.OnTime Now + TimeValue("00:02:00"), "plaympg" '次回起動設定
End I

Sub waveon()
ActiveSheet.Shapes("Object 4").Select
Selection.Verb Verb:=xlPrimary
End Sub

336 :デフォルトの名無しさん:03/08/14 22:14
>>335
再生処理は?

337 :335:03/08/15 00:12
>336
すみません、マクロを記録した結果から作っただけでして、良くわかっていません。
自動記録の際には、メディアクリップオブジェクトを選択して、
さらにクリックしたら、再生されました。

その際の記録から、335に書いた下の処理で再生できるはずと思ってました。
ActiveSheet.Shapes("Object 4").Select
Selection.Verb Verb:=xlPrimary

なにか、足りないのでしょうか?
(努力が足りないのは、わかってます。教えてクンで申しわけないです)


338 :デフォルトの名無しさん:03/08/15 00:18
>>337
>メディアクリップオブジェクトを選択して、
>さらにクリック
この部分は記録されないようだね。

339 :335:03/08/15 00:23
おお、そうですか。早速のレスありがとうございます。

ん〜、もうちょっと勉強します。

340 :デフォルトの名無しさん:03/08/15 13:39
http://homepage1.nifty.com/tuehara/Excel/vbatips.html

341 :山崎 渉:03/08/15 15:11
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

342 :デフォルトの名無しさん:03/08/15 19:13
agedesuu

343 :デフォルトの名無しさん:03/08/20 13:48
すいません。エクセルのマクロで教えていただきたい事があります。

Book1で作成したシートを、Book2に移動させる動作を
繰り返すプログラムを作成しています。ところが、9回ほど繰り返すと
「moveメソッドが失敗しました。」とエラーが出て終了してしまいます。
悩んだ挙句、以下のサンプルプログラムでも同様の現象が発生しました。

Sub aaaaa()
For i = 1 To 100
Windows("Book1.xls").Activate
Sheets("Sheet3").Select
Sheets("Sheet3").Move After:=Workbooks("Book2.xls").Sheets(1)
Sheets("Sheet3").Select
Sheets("Sheet3").Move After:=Workbooks("Book1.xls").Sheets(1)
Next i
End Sub

このサンプルは、Book1とBook2を用意し、Book2には
Sheet3を削除しておいて起動します。


作成環境は
OS :WindowsXpHome
メモリ:512M
excle :Excle2002


もし、何かわかる事がありましたら。教えてください。

344 :デフォルトの名無しさん:03/08/20 22:36
>>343
消えないシートが涌くな・・・

Dim L As Long
Application.DisplayAlerts = False
For L = 1 To 100
 Workbooks("Book1").Sheets("Sheet3").Copy After:=Workbooks("Book2").Sheets(1)
 Workbooks("Book1").Sheets("Sheet3").Delete
 Workbooks("Book2").Sheets("Sheet3").Copy After:=Workbooks("Book1").Sheets(1)
 Workbooks("Book2").Sheets("Sheet3").Delete
Next L
Application.DisplayAlerts = True

345 :デフォルトの名無しさん:03/08/21 01:27
テキストボックスにファイルをドラッグアンドドロップすると、
そのファイルの絶対パスがテキストボックス上に表示される・・・・

という処理を行うには、どうすればいいのでしょうか??

346 :デフォルトの名無しさん:03/08/21 01:40
VB6.0のイベントプロシジャにはText1_OLECompleteDrag()なんてのがあるけど、
VBAには無かったような・・・。

347 :デフォルトの名無しさん:03/08/21 06:37
>>346
Windowハンドルも取得できないはずなので絶望的ですな。

89 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)