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

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

エクセルVBA質問&研究板

1 :やみぺぐ:01/12/13 13:58
おしながき:
1.質問する時は丁寧に、教えてあげる時は偉そうに。
2.質問に対する答えが返ってこなくても、こかない。
3.回答できる人がいれば、どうぞ質問に答えてあげて
  ください。
4.他人への暴言、卑下は即刻オーナーに言って、調べ
  てもらい、警察へ届け出ます。良識常識のある言葉
  を使いましょう。
5.初心者に優しい板を目指してますが、単に教えて厨
  房なら、無視してもかまいません。

2 :厨房:01/12/13 21:25
はじめまちて、ばんわ〜♪m−−m
エクセルVBAって何ですか?エクセルは持っていますが、これをどう
いう関係なのかがわかりませぬ。おちえて。

3 :名無しさん@そうだ選挙にいこう:01/12/14 01:46
>2
VBAっていうのはExcelのオプションだからExcelとは
べつに買わなければいけないものなんだYO!

4 :厨房:01/12/14 20:32
興味が湧いてきたので、勉強してみようかな。。。

5 : :01/12/14 23:59
VBAの入門書はどれがいいですか?
統計・科学技術計算と沢山のテキストファイルの操作などをやる予定なのですが。

6 :名無しさん@そうだ選挙にいこう:01/12/15 14:25
>>2
エクセルの画面でツール→マクロ→VBEでVBEの編集画面が出る。
ここの画面でコードを編集し、プログラムを作成する。
昔のマクロを汎用性のある高度にしたもの。
>>5
VBAの入門書で良いものはないよ。Netで見るほうが参考になる。
ヘルプを見るのも参考になる。デフォルトではヘルプはインストールされない。
ただしヘルプの日本語は意味を読み取りにくい。(米語の直訳)

7 :まぐろ:01/12/15 22:40
VBAの達人のみなさま・・・・教えてください
どうしてもわからなくて 住所録を作り、ユーザーフォームで
氏名、電話番号等、データ入力画面を作ったまではいいのですが・・・・

入力する際、その項目ごとに、いちいちかな変換大文字にしなくては
なりません。いちいち変換しなくても、大文字になる設定はどこで
どんなふうにやればいいか・・・・教えてくださいませm(__)m

あと、それに関連してその際入力して、反映されたデータがソートが
うまくいかない・・・。どぼぢて?????

8 :???:01/12/15 23:59
>>2
「Alt」+「F12」でもOK!

9 :???:01/12/16 00:00
間違った。
「Alt」+「F11」でもOK!

10 :名無しさん@そうだ選挙にいこう:01/12/16 01:33
IMEModeぷろぱちー

11 :名無しさん@そうだ選挙にいこう:01/12/16 01:57
荒し依頼。

低レベルなアニオタ (自称芸術家・モーツァルティアン・藁)
おおもりよしはる
http://www9.big.or.jp/~yoshioh/
このサイトをよあに@同人板とその仲間達とともに潰してくれる人募集中

12 :VBのみマスタ,VBAはしらん:01/12/16 09:06
>>7
keypressイベントで
strsconv(変換前文字列,vbwide)
はどう?

13 : :01/12/16 09:09
>>7
ごめん質問のいみ取り違えた
入力用オブジェクトのIMEModeを変更してみては?

たとえば
text1.imemode = 4
とか。

14 :まぐろ:01/12/16 11:46
13さん できました〜 ありがとうございますm(__)m (^T_T^)
感謝感謝

15 :名無しさん@そうだ選挙にいこう:01/12/16 12:51
>>3
うそつくな

16 :10:01/12/16 17:38
(;_;)

17 :雷 ぉ ゃι゛ ◆oyajiDa. :01/12/16 18:40
(;_;) ヽ(^ー^ ) ヨシヨシ

18 :名無しさん@そうだ選挙にいこう:01/12/16 22:31
アホですね>ALL

19 :Fuck ◆FuckUzas :01/12/17 00:44
あげ

20 : ◆FucKusH. :01/12/17 23:45
age

21 :名無しさん@そうだ選挙にいこう:01/12/18 01:56
ネタスレ化しそうやね。
「教えて」スレなら総合相談所スレでいいと思ったので一応誘導しとくわ。
http://pc.2ch.net/test/read.cgi/bsoft/1004432306

以降俺は放置プレー。こっちでは一切回答しません。

22 :名無しさん@そうだ選挙にいこう:01/12/18 01:57
しまった。ageちまった。

23 :名無しさん@そうだ選挙にいこう:01/12/18 10:14
オブジェクトとかプロパティとか馴染みのない言葉が出てくるが
初心者は何か分かるのか?
漏れは初心者の頃理解するのに苦労した。
ヘルプの日本語も分かりにくい説明だった。

24 : ◆FucKusH. :01/12/19 00:22
あと
メソッド、キーワード

25 :メルマガ娘:01/12/19 22:17
http://www.geocities.co.jp/CollegeLife-Cafe/5065/
私が入っているメルマガでいいのがありますよ。ちょうど始まったばかり
なので、初心者さんにはいいかも。

26 :名無しさん@そうだ選挙にいこう:01/12/20 18:31
お伺いしたいのですが、Win版Adobi Illustrator9.02で
今まで使えていたフォントが、ある日突然別の書体で
表示されるようになってしまいました。
フォント選択メニューの中には確かに元の名前で表示されているのですが、
フォントの選択メニュー内のそのフォントの並びは正常な際の位地から
ずいぶん下の方になってしまいました。ちなみに日本語フォントと
欧文フォントとの境界にあるのと同じラインの下にあります。
以前の状態への直し方を知っている方がおられたら
お教え願えないでしょうか。お願い致します。

27 :名無しさん@そうだ選挙にいこう:01/12/20 18:32
書く場所を間違えてしまいました。すみません。

28 :488:01/12/22 01:44
質問させてください。ボタンを押して実行しているマクロをシートで自動更新されてる
日付が1日経過すると自動的に実行させたいのですが現在あるマクロにどういう命令を
付け足せば良いのでしょうか?タスケテ・・・

29 :仕様書無しさん:01/12/22 02:00
マクロ開始時刻Aを退避、タイマーで定期的に現在時刻Bを退避しつつ
Aと比較する。B−Aが24時間越えていればメインルーチンに入って
タイマーを切る。

というか、
>ボタンを押して実行している
のだから、
>1日経過すると自動的に実行させ
る必要もなかろう。

30 :名無しさん@そうだ選挙にいこう:01/12/22 02:08
>>28はマルチポスト

Word,Excel,Access,PPT初心者すれっど
http://pc.2ch.net/test/read.cgi/pcqa/987705919/

31 :名無しさん@そうだ選挙にいこう:01/12/23 09:53
VBA Projectのパスワードを忘れてしまった場合はどうすれば
いいですか?
どこかにツールとかありますか?

32 :名無しさん@そうだ選挙にいこう:01/12/23 10:07
>>31
厨房がいらない知恵を付けるといけないので「あるよ」とだけ言っておく。

33 :名無しさん@そうだ選挙にいこう :01/12/23 14:14
>>31
素直に、お前が自殺すれば済む事だと思うが。

どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?
どうすればいいですか?

氏ね。

34 :名無しさん@そうだ選挙にいこう:01/12/23 15:01
たしか、タイム風呂敷を被せるか、
タイムマシンでパスワードをかけた時に戻ってメモしてくれば
良かったと思う。

35 :名無しさん@そうだ選挙にいこう:01/12/23 20:34
>>32
ありがとうございます。
あのあとネットで探してみたらありました。
無事解決しました。

36 :名無しさん@そうだ選挙にいこう:02/01/23 23:25
すいません。マクロってなんですか??

37 :仕様書無しさん:02/01/24 00:06
 プログラム板でスレ違いだからここへ来いと言われて
やってきました。エクセルのVBAをパスワードで保護
しているのをぶっ壊すツールはどこかにありますか?
 あったら教えてください。

38 :仕様書無しさん:02/01/24 00:08
よろしくお願いします。

39 :名無しさん@そうだ選挙にいこう:02/01/24 01:10
>37,38
こっちも板違い。
苦楽は初級ネット板へ逝け!


40 :名無しさん@そうだ選挙にいこう:02/01/24 04:33
removepasswordっていうマクロどこにありますか?

41 :名無しさん@そうだ選挙にいこう :02/01/25 01:38
「VBA」ってヴァカ馬鹿アホの意味?


42 : :02/02/06 22:53
プログラム板がら来ました。
エクセルでデータを入力してるのですが、
     A  B  C
1列目 a  b  c
2列目 d  e  f
3列目 g  h  i
)以下続く。

と書いてある内容の1つのファイルから
a_b_c.txt d_e_f.txt g_h_i.txt・・・ というように列ごとに
テキストファイルを書き出すことはできますか?
マクロって何?という状態なのでよく分からんのです。
教えて君でスマソ



43 :名無しさん@そうだ選挙にいこう:02/02/07 18:34
>42
できる。OPENステートメントとか。

44 : :02/02/07 23:31
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50

45 :名無しさん@そうだ選挙にいこう:02/05/13 09:46
僕のofficeにはVisual Basic が入っていません。泣

46 :名無しさん@そうだ選挙にいこう:02/05/13 22:12
>>45
Microsoftへお布施しなさい(泣)

47 :名無しさん@そうだ選挙にいこう:02/05/14 00:18
>45

つーか、誰の office にも Visual Basic は入ってない

48 :名無しさん:02/05/22 23:48
えとですね、
Dim p(100),p2(100)

49 :名無しさん@そうだ選挙にいこう:02/05/31 13:46
age

50 :名無しさん@そうだ選挙にいこう:02/05/31 14:29
Rangeなんですけど
Cells(),Cells()で済ませれるときはいいけど
そうでないとき(G2)とかが必要なとき
いちいち

列が1 変数 = A
2    変数 = B
 ・
 ・
 ・

ってやってるんですけど
効率いい方法ないですか?


51 :名無しさん@そうだ選挙にいこう:02/05/31 14:38
=SUM('4月'!M16)という式が、B3に入ってたとして、
これをB4にドラッグし、=SUM('5月'!M16)にしたいのですが
=SUM('4月'!M17)になってしまいます。
なにかよい方法はないでしょうか?


他の床にもかいたけど、スマソ

52 :名無しさん@そうだ選挙にいこう:02/05/31 15:13
VBAで、データが入力されてる一番最後の列の場所を取得したいんですけど
ActiveCell.SpecialCells(どこか).Column
を使ってやってるんだけど
セルを削除した後だったり、途中に空白があったりすると
うまく取得できないことがよくあります

間違いなく取得できる方法ないでしょうか


53 :名無しさん@そうだ選挙にいこう:02/05/31 15:26
すみたせん 質問です。
エクセルファイルがエクセルで起動されたかIEで起動されか判定する方法はありますか?関数でもあるのでしょうか?宜しくお願いします

54 :名無しさん@そうだ選挙にいこう:02/05/31 20:32
>>50

Sub aa()
 MsgBox Range(Cells(1, 1), Cells(5, 5)).Address(0, 0)
 For i = 65 To 90
   ActiveSheet.Range(Chr(i) & "1") = Chr(i) & 1
 Next i
End Sub

55 :名無しさん@そうだ選挙にいこう:02/05/31 20:43
>>52

Sub bb()
 With ActiveCell
  MsgBox Cells(ActiveCell.Row, 256).End(xlToLeft).Column
  MsgBox Range(Cells(.Row, Cells(.Row, 256). _
                  End(xlToLeft).Column)).Address(0, 0)
 End With
End Sub

56 :名無しさん@そうだ選挙にいこう:02/05/31 20:52
>>51

=SUM(INDIRECT("'"&ROW(B3)+1&"月'!N16"))

57 :56:02/05/31 20:54
>>56

N16 → M16
=SUM(INDIRECT("'"&ROW(B3)+1&"月'!M16"))

58 :名無しさん@そうだ選挙にいこう:02/06/12 11:53
マクロを警告なしに開きたいので
署名をつけたいんだけど
どうするんでしょう?

HELPにも無いし、調べてもメールについてばかりHITしてしまいます

59 :名無しさん@そうだ選挙にいこう:02/06/12 12:23
>>58
HELP>キーワード>「デジタル署名」

60 :名無しさん@そうだ選挙にいこう:02/06/13 16:59
「日付」,「時刻」の列があるので、MONTH関数とCOUNTIF関数で月ごと(1〜12)の
件数を出力していたのですが、同じ月でもさらに時間帯ごと(0〜23)の件数まで見ら
れるような表を出力したいのですが、COUNTIF関数では無理でしょうか?

61 :ぱーでんねん:02/06/13 17:34
すみません
ちょっと教えて下さい

1ページ目に空白の宛名と空白の持ち株数を入れる枠があります。
2ページ目に名前の一覧と持ち株数一覧があります。

この一覧表を1ページ目の空欄に順番に挿入しながら印刷は出来ますでしょうか。
200枚以上になりますので手で打ち返るにはちょっと厳しいです。

アクセスのレポートなどでは株数からの金額計算(税金など)が出来ませんので困ってます。

宜しくお願いします。

62 :名無しさん@そうだ選挙にいこう:02/06/13 21:30
>>61

一番簡単なのは、ワードを使って差込印刷

63 :ぱーでんねん:02/06/13 22:38
>>62
返事ありがとうございます。

ワードをメインに使って、計算部分はどうすればいいのですか?
計算式の部分も丸ごと差し込むって事ですか。
宛名の部分と金額のところは離れているのです。

64 :62:02/06/14 00:56
>>63

ん?

ttp://www.dpri.kyoto-u.ac.jp/~dptech/sasikomi/teikei.html

65 :ぱーでんねん:02/06/14 01:14
>>64
よーく わかりました。ありがとうございます。

もうひとつ聞きたいのですが、これだと宛名と持ち株数は入りますが、
持ち株に応じての配当金の支払額が計算できません。
(できないというより、関数は貼り付けられないですよね。)

出来ればEXCEL同士で差込印刷みたいな機能はないでしょうか?

すみません。ケチをつけているわけではないのです。
あらためてよろしくお願いします。

66 :名無しさん@そうだ選挙にいこう:02/06/14 02:37
>>65
えとね、Excelでもね、Accessでもね、最初にあなたのゆってる計算を
するふぃーるど(むずかしい?「れつ」のことよ。)をつくっておいて
それをさしこむだけだとおもうの。なんでわーどにかんすうをさしこもう
としてるの?おとこのこはなんでもさしこみたいの?
あくせすでけいさんができなくて困ってるっていみわかんないの。
けいさんするためのソフトだよ?

わーどにさしこむふぃーるど(むずかしい?「れつ」のことね。あらやだ
にかいめだったね。えへ)も、きちんと「みだし」をつけておけばどの
ふぃーるどをさしこむかをわーどでしていできるよね。しょうかいして
もらった機能をちゃんとつかってから質問してるの?
ばかなのはべつにいいけど、ちゃんと調べるきがないならかえれこのちんこやろう。

67 :62:02/06/14 06:46
>>65

>66の言うとおり。

氏名  株数  項目1 項目2 項目3 合計

の氏名と株数を合計を差し込むの。

ここはExcelのVBAスレなので、VBAでの実現方法を
教えても良いけど、「アクセスで合計計算が出来ない」
「差し込み印刷じゃワードに関数が入れられない」って
言っているやつに解かるとは到底思えないが。

Worksheets("Sheet1").Activate
for i = 2 to 100
 Worksheets("Sheet1").Range("A1") = Worksheets("Sheet2").Range("A" & i)
 ActiveSheet.PrintOut
next i

見たいな事をやれば良いだけ。

68 :名無しさん@そうだ選挙にいこう:02/06/14 08:23
VBAとはヴァカがボケかますApplicationです。

69 :名無しさん@そうだ選挙にいこう:02/06/14 10:22
>>66
>>67

丁寧なお返事ありがとうございました。
さっそくためしてみます。

70 :Inputbox:02/06/14 12:42
Inputboxについて質問ですが、ボタンがOKとキャンセルってありますよね?
通常は、キャンセルボタンを押されたら空白が返されるみたいですが、
キャンセルを押された時にある命令を実行させたい時、どのようにコードを記述
すればよいのでしょうか?
(例えば、「終わります」とメッセージを表示してプログラムを終了させるなど)
どなたか教えていただけませんか?お願いします。

71 :名無しさん@そうだ選挙にいこう:02/06/14 13:49
If InputBox("シャチョサン・・・") = "" Then MsgBox "アウ、キャンセルカ。チェンジスルカ。": Exit Sub


72 :Inputbox:02/06/14 15:08
>>71
回答有り難うございました。
参考にさせていただきます。

73 :月見の銀次 ◆Lbs/YhoA :02/06/28 09:12
>>70


excel95 VERでs、以降のバージョンとかではしりませんが・・・
基本的にそう変わらないのでは?
ま、あとはヘルプ見れば大体わかるはず


WKIRAINO = "DUMMY"
Do While Len(WKIRAINO) <> 8
WKIRAINO = Application.InputBox("納入依頼NO(8桁)を入力してください。" & _
Chr(13) & "【例:00890001】" & Chr(13) & _
"終了時 END 又は end", "伝票NO読取")



Select Case WKIRAINO

Case False
’キャンセルのときやりたいこと記述しる
Exit Sub’この場合、処理中断

End Select



74 :名無しさん@そうだ選挙にいこう:02/07/01 21:19
ActiveSheet.Move でシートの内容をまるまる新しいBookに書き出すと、
もともとのシートで設定していた入力規則(リスト)が出なくなってしまうのはなぜでしょう?
新しいBookでも入力規則の設定はちゃんとされているのに、リストだけでなくなってしまいます。ちゃんとリストを生かしたまま新しいBookに書き出す方法ってないでしょうか?
当方、Excel 2000 for Windowsです。自分のExcelがおかしくなってるのかと思って、書き出したファイルをExcel X for Macでも開いてみましたが、まったく同じでした。

75 :74:02/07/01 21:37
すいません、簡単なサンプルを作って試したところ、
そちらでは問題なく入力規則(リスト)が生きたまま新しいブックができました。
というわけで、より謎が深まってしまいました。うーん。

76 :74:02/07/01 21:46
ブレークポイントをつけて調べてみました。

ActiveSheet.Move
'この時点(Book1.xls)では問題なし

ActiveSheet.SaveAs Filename:=CurDir & "\" & myNewSheetName
'ここで名前をつけて保存したら、入力規則(リスト)がおかしくなる

というわけで、SaveAsメソッドあたりを調べてみます。うーん。

77 :名無しさん@そうだ選挙にいこう:02/07/01 22:20
>>76
VBのSaveAsにバグがあるという話をどこかで見たような・・・。
ソースが思い出せないのではっきりとは言えないけど。

78 :名無しさん@そうだ選挙にいこう:02/07/01 23:50
>>77
オレもどっかで見たよ。MSDNで検索すればでるんじゃないか?

79 : :02/07/03 16:59
質問です。
ユーザーフォームに数値入力のためのtextboxを複数作りました。
そのtextboxに入力された数値を一括消去したいのですが、
textbox1=""
textbox2=""
のように個々ではなく、一括消去したいのですが
どのようにしたらよいのでしょうか?


80 :名無しさん@そうだ選挙にいこう:02/07/03 19:08
>>79
>>79のやり方しかないのでわ?

81 :名無しさん@そうだ選挙にいこう:02/07/03 20:28
>>80

ソウデモナイヨ

82 :名無しさん@そうだ選挙にいこう:02/07/03 21:31
>>79

Private Sub CommandButton1_Click()
Dim tBox As Control
For Each tBox In UserForm1.Controls
 If tBox.Name Like "TextBox*" Then
   UserForm1.Controls(tBox.Name).Text = ""
 End If
Next tBox
End Sub

83 :名無しさん@そうだ選挙にいこう:02/07/15 01:38
エクセルで整理したデータ(シートの一部)を、既に用意してあるワード
のテンプレートの任意の部分に飛ばすマクロはないでしょうか

仕事で主に使うのがエクセルなのに、報告書の様式がワードでメンドクサイ
なぁとつねづね思っています。

よろしくおながいします。

84 :名無しさん@そうだ選挙にいこう:02/07/15 22:58
>>83

ただの差し込み印刷じゃぁ

85 :83:02/07/17 23:41
>>84
感動しますた。勉強して出直します。。・゚・(ノД`)・゚・。

86 :名無しさん@そうだ選挙にいこう:02/07/21 00:15
エクセルでローカルIPアドレスを取得する方法ってありますか?


87 :名無しさん@そうだ選挙にいこう:02/07/21 00:54
ない

88 :名無しさん@そうだ選挙にいこう:02/07/21 01:00
つーか、マルチうざ。

89 :名無しさん@そうだ選挙にいこう:02/07/22 01:17
age

90 :名無しさん@そうだ選挙にいこう:02/07/23 07:32
プロパティの表示などに使われているフォントを変えたいんだけど、
どうすればいいの?

91 :名無しさん@そうだ選挙にいこう:02/07/26 10:55

Excel2000のVBAで質問です。
これまでは新規に用意したブックにデータを貼り付け
A% = Application.Dialogs(xlDialogSaveAs).Show(S_name, 3)
でTab区切りテキストファイルに書き出していた処理があるのですが、
「遅いんじゃゴルァヽ(`Д´)ノ」&「毎回違うファイル名にするとファイルが雑多にな
るYO!」
と要望が出まして、
「ユーザーに選択させたファイル(存在しなければ新規)の末尾に追加で書き込む」
という方法をとることになりました。
既存ファイルに追加するのはOpen 〜 For Output As とか使えば
いけると思うのですが、
「ユーザーにファイルを選択させ(セーブや削除をせずに)、そのファイル名を得る」
方法がわかりません。
ヘルプでApplication.Dialogsの引数を見ても一覧だけでどれがファイル選択に該当
するのか
わからなくて…。・゜・(ノД`)・゜・。

どなたかご教授御願いします。




92 :名無しさん@そうだ選挙にいこう:02/07/26 11:43
>>91
Dim myPath As String
myPath = Application.GetOpenFilename("Microsoft Excel ブック (*.xls), *.xls")

みたいにすればダイアログボックスでExcelブックのファイル名が選べると思うよ。
これだけではファイルを開くこともセーブや削除もされない。

93 :名無しさん@そうだ選挙にいこう:02/07/28 05:52
データを取得してくるたびに時間を取りたいんですが、
どのようにすればよいでしょうか?
どなたか教えて下さい。お願いします


94 :名無しさん@そうだ選挙にいこう:02/07/29 18:22
>>93
Timeステートメントじゃダメなの?

95 :名無しさん@そうだ選挙にいこう:02/08/02 21:21
Excel VBA 厨房です。ム板からの紹介で来ました。

エラー処理にひっかかったら Excel を落とすってことで、Application.Quit
を使おうとしてます。以下のようなプログラムなんですけど、

なんちゃら
かんちゃら
if エラー発生 then
  MsgBox("baka")
  Application.Quit
end if
処理1
処理2
 :

MsgBox が表示されて、Application.Quit が実行されても Excel が止まらずに
処理1、処理2が実行されてしまいます。

Application.Quit って C で言う exit() みたいな使い方できないんですか?
何せVBは厨房なので恥ずかしい質問ですが、教えてくださると助かります。

96 :通りすがりの。。。:02/08/02 23:33
>>95
If エラー発生 Then
MsgBox ("baka")
Application.Quit
Exit Sub
End If
処理1
処理2

ってすればたぶん大丈夫と思います。
Application.Quitって、関数が終わってから利くみたいで、無理矢理関数
を終わらせれば思い通り動くのでは。。。
この辺は、M$さんのヘルプっていい加減!?


97 :名無しさん@そうだ選挙にいこう:02/08/02 23:40
>>95

Sub Baka()
Dim result
 result = Application.InputBox("数値以外いれんなよ!", "ゴラァ")
 If Not IsNumeric(result) Then GoTo ERR:
  MsgBox "素直やな。。", vbInformation + vbOKOnly, "V(^0^)"
 Exit Sub
ERR:
 MsgBox "なめとんのか?", vbCritical + vbOKOnly, "オラァ"
 ThisWorkbook.Saved = True
 Application.Quit
End Sub

98 :名無しさん@そうだ選挙にいこう:02/08/03 09:38
>>96 >>97
回答有り難うございます。試してみました。

Sub Parent()
  Call Child()
  処理1
  処理2
End Sub

Sub Child()
  If エラー発生 then
    MsgBox "baka"
    Application.Quit
    Exit Sub
  End If
End Sub

という具合のコードだと、Child() を抜けた後に処理1、処理2が動いちゃいますね。
しょうがないんで運用でカバーします。

…だからVBって嫌い。

99 :名無しさん@そうだ選挙にいこう :02/08/03 10:08
>>98
おまえバカ?

100 :名無しさん@そうだ選挙にいこう:02/08/03 10:17
>>98
Err.Raiseで終わるのはダメなの?

101 :名無しさん@そうだ選挙にいこう:02/08/03 12:57
>>98

Sub Parent()
If Child Then
    処理1
    処理2
Else
    MsgBox "お前が馬鹿"
    ThisWorkbook.Saved = True
    Application.Quit
End If
End Sub

Function Child() As Boolean
Child = True

  処理3

 If エラー発生 Then Child = False
End Function

102 :名無しさん@そうだ選挙にいこう:02/08/03 14:05
>>99
そうですが、何か?

>>100
うーん、ちょっとダメですね。

>>101
このようにソースを書き換えてる最中です。運用でカバーというのはちょっと表現が
ナニでしたね。

103 :名無しさん@そうだ選挙にいこう:02/08/03 17:03
>>102
ソース書き換えるのを運用でカバーと言ってしまう。
ちょっとどころじゃねーだろハゲ!
バカ丸出し

104 :名無しさん@そうだ選挙にいこう:02/08/03 17:47
おやじ?


105 :名無しさん@そうだ選挙にいこう:02/08/03 17:54
>>103
そういう意味だったのか...

106 :名無しさん@そうだ選挙にいこう:02/08/03 18:56
Excel 97/2000 のVBAで教えてください。
UserForm でリストボックスを使っています。
Form1.ListBox1.AddItem (str)
で文字列を1行ずつ追加しているのですが、日本語文字の一番下が欠けてしまいます。
(英数文字は欠けません)リストボックスの行間隔がどうも狭いようです。
フォントはMSゴシック/Pゴシック、Terminalといろいろとサイズも変えて確かめて
みたのですが、症状は変わりません。何かプロパティの設定が足りないのでしょうか。
あるいは、リストボックス行間隔を調整する方法があるのでしょうか。

107 :名無しさん@そうだ選挙にいこう:02/08/03 20:10
質問です。

未登録のCOMサーバをイベント付きで使うにはどのようにすればよいのでしょうか?
未登録にこだわるのは、配布を楽にしたいからです。

よろしくお願いします。


108 :名無しさん@そうだ選挙にいこう:02/08/03 22:27
>106

ソースをかけや。

Column が複数設定されているとかは?

109 :名無しさん@そうだ選挙にいこう:02/08/03 23:31
>>108
レスありがとうございます。
フォームの中に、リストボックス(ListBox1)を配置しただけで、配置座標以外は
プロパティには触ってない状態で試してみました。

Private Sub UserForm_Activate()
ListBox1.AddItem ("年月日×")
ListBox1.AddItem ("年月日÷")
ListBox1.AddItem ("年月日△")
ListBox1.AddItem ("年月日ABC")
End Sub

文字列の中に×や÷が入っていると、下方向にずれて一番下のラインが欠けて
しまうようです。(上の例だと、一つ目と二つ目の文字列が欠けてしまいます)

110 :名無しさん@そうだ選挙にいこう:02/08/04 00:25
>>109

ああ、ほんとだ、文字の下が欠けるね。

ComboBoxでやると、文字の上余白が通常より大きくなっているのがわかるね。
バグかな?斜体にすると入ることは入るけど。

111 :名無しさん@そうだ選挙にいこう:02/08/04 01:08
>>109
明朝なら欠けないよ、ゴシックはダメよ

112 :名無しさん@そうだ選挙にいこう:02/08/04 10:37
>>110 >>111
ありがとうございます。

斜体にすると、「日」の下の横線は見えるうになりましたが、私の環境
(Windows 2000+Excel2000,Windows Me + Excel97)では依然として
1ピクセル分ずれているようです(標準の状態だと2ピクセルずれていたの
かな?)
明朝にしてみると、例えば「日」だと下の出っ張りがあるはずなのですが
これが欠けてしまっています。

文字の下が欠けても重大事には至らない用途なので、明朝か斜体にして、
とりあえずOKとすることにします。でも、なんかおかしい挙動ですね。

113 :(;´Д`):02/08/06 19:52
VBA初心者です、どなたか教えて下さい
マニユアル見ながらマクロを作っているのですがうまくいきません

Book1というファイルを開いた状態から0001というファイルを開いて
0001ファイルのセルHF10にあるデータをクリップボードを経由しないで
Book1ファイルのセルA10にコピーしたいのですが下のマクロだと
エラーがでます。どこが間違っているのでしょうか?


Sub Macro1()

Workbooks.Open FileName:="D:\BD\0001.xls"
Application.Goto Reference:="R10C214"
ActiveCell.Range("A1").CurrentRegion.Select
Selection.Copy _
Destination:=Workbooks("Book1").Worksheets("sheet1").Range("A10")


End Sub

の中でこの辺りが間違っているみたいなんですが
Selection.Copy _
Destination:=Workbooks("Book1").Worksheets("sheet1").Range("A10")


114 :名無しさん@そうだ選挙にいこう:02/08/06 21:41
どんなエラーか知りませんが。

Sub Macro1()
  Dim c As Range
  '実行時表示しているシートのセルA10
  Set c = ActiveSheet.Range("A10")
  Workbooks.Open FileName:="D:\BD\0001.xls"
  '開いたブックの左端のシートのセルHF10
  ActiveWorkbook.Worksheets(1).Range("HF10").Copy Destination:= c
  '
  Set c = Nothing
End Sub


115 :名無しさん@そうだ選挙にいこう:02/08/06 22:15
質問です。

EXCELから直接リモートのDB2にクエリーを発行し直接結果をシートに張りたいのです。
どなたかご教授ください。

よろしくお願いします。

116 :(;´Д`):02/08/06 22:26
>>114
作っていただいたマクロを元に下の様にして
やって見たところ、うまくいきました

Dim c As Range
Set c = ActiveSheet.Range("A10")
Workbooks.Open FileName:="D:\BD\0001.xls"
Application.Goto Reference:="R10C214"
ActiveCell.Range("A1").CurrentRegion.Select
Selection.Copy Destination:=c
'
Set c = Nothing

助かりました!本当にありがとうございました

117 :名無しさん@そうだ選挙にいこう:02/08/06 22:39
excelでCtr+Shift+:(* ヶ)を押すと表全て(罫線全て)が選択されますよね?

これをVBAで実現するとどのようなコードになるのでしょうか?

118 :名無しさん@そうだ選挙にいこう:02/08/06 22:55
いくつかある数字のトップ10以内に入っているかいないかを
判定するには
ソートマクロ→上位10番目と比較したif関数
とやるしかないんでしょうか?
便利なやり方・関数をご存知でしたらご教授ください

119 :名無しさん@そうだ選挙にいこう:02/08/06 23:57
>>117

ActiveCell.CurrentRegion.Select

120 :名無しさん@そうだ選挙にいこう:02/08/07 00:20
>>118

これはVBAの質問なのか?

RANK関数と違うのか?

121 :ミトボ:02/08/07 17:48
エクセスでVBAを使ってまだ2週間なのですが、次のバージョンで使えなくなるって本当ですか?

122 :名無しさん@そうだ選挙にいこう:02/08/07 17:56
>>121
<エクセス>の次バージョンはあなたが死んでから発売しますので
安心してそのまま現バージョンをお使いください。

123 :名無しさん@そうだ選挙にいこう:02/08/07 20:54
なに?もしかしてVBA.NETにでもなるのか?マジレスキボンヌ

124 :名無しさん@そうだ選挙にいこう:02/08/07 21:21
標準でVBA使えないEXCELなんて誰も使わないから、ありえないんじゃない?

125 :名無しさん@そうだ選挙にいこう:02/08/08 16:06
あのぅ。115ですが私の質問はDQNですか?
ローカルのアクセスデータベースへのアクセスの仕方はいくらでも載っているのですが
リモートのデータベースへ繋ぐ方法がわからないのです。

よろしくお願いします。

126 :名無しさん@そうだ選挙にいこう:02/08/08 17:19
はじめて書き込むものです。
どなたか教えてください。
給与計算や経理会計の際に、データに間違いや訂正がある場合には、よく
そのセル自体に色づけをしておくと思いますが、
色づけされた隣りのセルに、なんらかの記号がかえるVBAはどうやって
作ればよいのでしょうか?
単なるIF関数での選別はできないと思います。
色も特定の色ではなく、何らかの色がついていればすべてかえるようなものをつくり
たいのです。
こういう場合はパラメータっていうものを使用するんでしょうか?

私は、なんらかの色がついている状態を変数を使ってあらわし、その変数
に対して分岐命令(IF)を使ってやってみようと思ったのですがだめでした。
まったくの初心者ですが
どうかよろしくお願いします。


127 :名無しさん@そうだ選挙にいこう:02/08/08 17:26
126のものですが、
オブジェクトがパラメータ(任意)の状態っていうものはありえないのでしょうか?
あと、たとえばアクティブシートの特定の列の一番上の行に入っているセルより
上の行をすべて行毎削除するVBAを作ったりする場合は、どうやって
その内容を表記すればよいのでしょうか?
併せてよろしくお願いします。


128 :名無しさん@そうだ選挙にいこう:02/08/08 18:00
まったくの初心者に教えるのは本気でメンドクセーので
どっかで勉強してから自分なりに考えたコードを載せて下さい。

129 :名無しさん@そうだ選挙にいこう:02/08/08 18:05
定型シート入力フロントエンドのようなものを作ろうと思っています。

定型入力に必要のないメニューやボタンを削除したいのですが、

1.現在のメニューやツールバーの状態を保存
2.必要最低限(印刷等)だけのメニュー、ツールバーを表示
3.入力
4.終了
5.メニュー等の状態を復帰
6.EXCELの終了

と言う動作を実現したいのですが、独自メニューの作成方法はわかったので
すが、それをユーザー設定のものと置き換え、終了時に復帰させる方法がわ
かりません。

どなたか教えていただけないでしょうか?

130 :名無しさん@そうだ選挙にいこう:02/08/08 18:06
>>125
何つかってローカルにつないでるの?
リモートも基本的には接続文字列にDSNが理解できるサーバ名を
入れるか直接IPアドレスで繋げるよ。検索してみ
http://www.google.co.jp/search?q=db2+connectionstring+ado&ie=UTF-8&oe=UTF-8&hl=ja&lr=

131 :_:02/08/08 18:07
次のOfficeもVBAなのかな
VBが変わったみたくVBAも変わっちゃうのかな

132 :名無しさん@そうだ選挙にいこう:02/08/09 01:33
VBAってなんて読むんですか?
ビバでいいんですか。

133 :名無しさん@そうだ選挙にいこう:02/08/09 04:31
ヴィバ

134 :名無しさん@そうだ選挙にいこう:02/08/09 14:38
>>128
126ですが、具体的なコードを載せてみました。

Sub 着色セル判別()
Worksheets("sheet2").Select
If Range("a1").Interior.ColorIndex = 6 Then
Range("b1") = "合格"
Else
Range("b1") = "不合格"
End If
End Sub

これだと、黄色のセルの場合のみ、合格が表示されます。
私が構築したいのは”なんらかの色がついているセルがある場合、合格の文字
がかえる”といったものです。

初心者として捉えなくても構いませんので
もし、やり方をご存知でしたら教えていただけませんでしょうか?
どんな形のネタでも結構ですので・・・・。


よろしくお願いします。

135 :g:02/08/09 14:47
-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能住み込みも可
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------

136 :名無しさん@そうだ選挙にいこう:02/08/09 14:54
>>134
初心者じゃ教えてもらえなきゃ「初心者じゃない」かよ。
馬鹿?社会生活大丈夫?経理におしこめられててよかったよほんと。

「色がついていない」場合の判断はInterior.ColorIndex = xlColorIndexNone
もう来ないでくれ。バイバイ。

137 :名無しさん@そうだ選挙にいこう:02/08/09 18:31
>>136
お答えありがとうございました。

ちなみに
初心者として扱った場合、わかり易く説明する手間がかかってしまうから
”128”のような文章を書いてくれたと思ったので、
上級者じゃないとわからないような回答内容でもいいですよって
いう意味で”134”の文章を書いたんです。言葉足らずですみませんでしたが
懲りずにまた教えてください。









138 :名無しさん@そうだ選挙にいこう:02/08/10 20:13
教えて頂けますか。
エクセルファイルを「打込用」と「請求書用」に分けています。
「打込用」にデータを入力しています。
A      B
001    印刷
・      ・
・      ・
004    印刷 といった感じです。
これを
「請求書用」の方で
「打込用」のB行に「印刷」値がある場合
「請求書用」の「A7」に「打込用」のAの値(001・004・・・)を
入力後印刷をする。次へ・・・
といったものを作成したいのですが。
どうか教えて頂けますか。よろしくお願い致します。


139 :名無しさん@そうだ選挙にいこう:02/08/10 21:02
>>138

単純なループ処理だと思うのだが。。

シートを分けてるのではなく、ファイルを分けてるのか?

140 :名無しさん@そうだ選挙にいこう:02/08/10 21:09
>139様
はい。そうなんです。
「打込用」「請求書用」共に月別にシートを」分けているもので。
何卒よろしくお願い致します。

141 :139:02/08/11 00:19
>>140

「請求書用」、「打込用」ブックを開く(この2つのブックのみ開く)

1.「請求書用」ブックにマクロを記入する。
2.「請求書用」の印刷したいシートをアクティブにしておく
3.「打込用」ブックのデータ元シートをアクティブにしておく
4.マクロ実行

Sub Test()
Dim wb As Workbook, wb1 As Workbook, wb2 As Workbook
Dim myRange As Range, r As Range

 For Each wb In Workbooks
  If wb Is ThisWorkbook Then
    Set wb1 = wb
  Else
    Set wb2 = wb
    Exit For
  End If
 Next wb

 If wb2 Is Nothing Then Exit Sub

 Set myRange = wb2.ActiveSheet.Range("A1:A" & _
    wb2.ActiveSheet.Range("A65536").End(xlUp).Row)

 For Each r In myRange
  If r.Offset(0, 1) = "印刷" Then
    ThisWorkbook.ActiveSheet.Range("A7") = r.Text
    'ActiveSheet.PrintOut
    MsgBox r.Text & ": 印刷"
  End If
 Next r
End Sub

142 :139:02/08/11 00:22
>>141

訂正

Exit For を削除すれ

143 :名無しさん@そうだ選挙にいこう:02/08/11 01:26
>141様
>142様(同じ師匠ですね)
うわ〜〜〜〜ん。早速やってみます。
とっても賢い方でしょうから、
私の質問に対しては時間掛かってないと思いますけど
回答頂いて感謝致します。早速やってみます。
師匠どうもありがとうございました。
勝手に師匠と呼んですいません。そんな気分なもので。。。

144 :139:02/08/11 11:36
>>143

動作テストもして、10〜15分はかかってるぞ!
情報も少ないからソースも長くなるし、、、

上手くいったのか?

145 :名無しさん@そうだ選挙にいこう:02/08/11 18:44
複数セルが選択されています。(例 Range("B2:D6"))

この時、左上のセルと右下のセルの絶対位置を数字で求めたいのですが
どのようにすれば求められるでしょうか?

上記の場合には
left=2
right=4
top=2
down=6

みたいに求めたいのです。アドバイスよろしくお願いします。

146 :名無しさん@そうだ選挙にいこう:02/08/11 18:50
質問です。
Cells(r, 1)とすれば変数をつかいセルを選択する事が出来ますが
複数セルを変数を使って選択するにはどうすれば出決ますか?
Cells(s,1):Cell(t,5) じゃ無理ですよね?

147 :名無しさん@そうだ選挙にいこう:02/08/11 19:56
>>146

Sub aho()
Dim i As Long, j As Integer
 i = 1
 j = 1
 ActiveSheet.Range(Cells(i, j), Cells(i + 100, j + 5)).Select
End Sub

148 :名無しさん@そうだ選挙にいこう:02/08/11 20:08
>>145

Left?Top?
Rectやな

Sub baka()
Dim r As Range

 Set r = Selection
 If r.Areas.Count = 1 Then
  MsgBox "Left:" & r.Column
  MsgBox "Right:" & r.Columns.Count + r.Column - 1
  MsgBox "Top:" & r.Row
  MsgBox "down:" & r.Rows.Count + r.Row - 1
 Else
  MsgBox "複数範囲は知らん!"
 End If
End Sub

149 :名無しさん@そうだ選挙にいこう:02/08/11 22:47
>>145
別解
Sub baka2()
 If TypeName(Selection) <> "Range" Then _
  MsgBox "セルを選択しる!": Exit Sub
With Selection
  If .Areas.Count = 1 Then
   MsgBox "Left:" & .Cells(1).Column
   MsgBox "Right:" & .Cells(.Count).Column
   MsgBox "Top:" & .Cells(1).Row
   MsgBox "Bottom:" & .Cells(.Count).Row
  Else
   MsgBox "複数範囲は知らん!"
  End If
 End With
End Sub


150 :名無しさん@そうだ選挙にいこう:02/08/11 23:36
vba でC言語のCONTINUEに当たるステートメントってありますか?

FORループをうまく制御できなくて困っています。

151 :名無しさん@そうだ選挙にいこう:02/08/11 23:37
みなさん、優しいレスをありがとうございました。

152 :名無しさん@お腹いっぱい。:02/08/11 23:55
>>150
Ifで条件分岐してみては?

For I = 1 to 10
'奇数のときだけ加算
 If I mod 2 = 1 Then
  J = J + I
End If
Next
MsgBox J


153 :名無しさん@そうだ選挙にいこう:02/08/12 10:58
>>56
国歌や国旗が好きなやつらはちょっと否定しただけで反日扱いするな(笑)
これじゃ世間的に危ないやつと思われてもしょうがないな。

まあハングル板は右翼の集まりだから何言ってもしょうがないがな。(笑)


154 :コギャルとHな出会い:02/08/12 11:02
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。

155 : :02/08/12 11:40
EXCELでOEのアドレス欄に登録されている方たちに
一斉送信したいのですが、どのような方法を使えばいいでしょうか?

156 :名無し:02/08/12 17:54
すみません、エクセルなんですが。
時間の計算です。13時00分を超えたら−30分し
13時00分を超えなければそのままの時間を表示したいのですが
  =IF(A1>="13:00",A1-"0:30",A1)
A1に12:00と入力するとそのまま12:00となりますが
13:00以降の数字を入力してもそのままの値が表示され
−30分されません。式が間違ってるのだと思いますが、これ以上思いつきません
知ってる方教えてくださいお願いします。

157 :名無しさん@そうだ選挙にいこう:02/08/12 19:26
>>156

激しく板違いだな

=IF(A1>TIMEVALUE("13:00"),A1-"0:30",A1)

158 :名無し:02/08/12 21:27
>>156
板違いスマソ
でも禿しくthx

159 :名無しさん@そうだ選挙にいこう:02/08/15 14:05
非常に簡単なことで申し訳ありません。

エクセルで(埼玉県)、(東京都)、(神奈川県)などとセルに入っています。
この()を外して、埼玉県、東京都、神奈川県と表示させたいのですが、どうすればいよいのでしょうか?
置換でやってみましたが、どうもうまくいかずに困ってます・・・。

160 :コギャルとHな出会い:02/08/15 14:12
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。

161 :名無しさん@そうだ選挙にいこう:02/08/15 14:38

ヒョデーイ!!!
http://2style.net/maido/R3_temp.swf?inputStr=%83q%83%87%83f%81%5B%83C%81I%81I%81I%81I

#音量ONにして飛んでね(・∀・)イイ!

参考スレッド 森恒二ホーリーランド拳闘暗黒伝セスタス技来静也4
http://comic.2ch.net/test/read.cgi/comic/1025843878/551-611



162 :名無しさん@そうだ選挙にいこう:02/08/15 14:50
痴漢したらどうなるのら?

163 :名無しさん@そうだ選挙にいこう:02/08/15 17:51
>>159
括弧の位置が決まっているならVBA使うほどでもない。
A1に(埼玉県)とか入っているなら
=LEFT(RIGHT(A1,LEN(A1)-1),LEN(A1)-2)

164 :名無しさん@そうだ選挙にいこう:02/08/15 18:00
こっちの方がすっきり。スレ違いスマソ。
=MID(A1,2,LEN(A1)-2)

165 :名無しさん@そうだ選挙にいこう:02/08/16 15:16
>>163-164
亀レスですがありがとうございました。
そうですね、VBAを使うほどではないようですね・・・。
勉強不足でした。

166 :VBAの質問:02/08/16 23:12
現在開いている任意のテキストファイルを
エクセルに貼り付けることはできないですかね?
(テキストファイル名を入力させないで)

意味不明だったらごめんなたい。

167 :初心者より:02/08/17 20:17
ExcelVBAで困ったときの5箇条
1.何がわかっていないかを整理する
2.勝手にできないと決め付けていないか確認する
3.マクロを参考にしてみる
4.ヘルプを徹底的に調べる
5.人に聞くときはやりたいこと、考えたこと、解ったこと、解らないところをはっきりする
これだけでずいぶん違うと思うんだけどなあ

168 :サービスマン:02/08/19 22:07
ExcelVBAでユーザーフォームを作成しました。
このユーザーフォームにテキストボックスを配置したのですが
書式プロパティ(数値の少数点以下桁数を設定したい)はありますか?
textboxのプロパティに設定項目が見当たりません。
お願いします。

169 :名無しさん@そうだ選挙にいこう:02/08/19 22:18
>168

テキストボックスはその名の通り、テキストを扱うボックスです。

TextBox1.Text = Format("123.456", "#,##0.00")

170 :サービスマン:02/08/19 22:27
ありがとうございます。
プロパティでデフォルト設定するのではなく
コードで記述するのですね。


171 :名無しさん@そうだ選挙にいこう:02/08/20 12:00
Excelコーディング初心者です。
会社の端末にExcelしかないもので、ExcelをAccessみたいな使い方をしています。
単表形式の帳票を出さなくてはいけなくて、

1枚目の「印刷」シートは、Accessのレポートのように線だけ引いていて、
2枚目の「データ」シートは、Accessのテーブルのようにデータを貯めています。

この「データ」を1件ずつモジュールで「印刷」シートに貼り付けて印刷を
行っているのですが、面倒なので1件ずつでなくループでもって
貼り付け→印刷→貼り付け→印刷→貼り付け→・・・
と行うと、端末スペックが貧弱なせいで、途中でハングしてしまいます。

通常、Excelモジュールで、連続して印刷を行う時は、どういう処理をするのかを
教えて欲しいのです。自分で思いつくのは上記の方法以外に
「印刷」シートをコピー増やす→データを貼り付け→コピーして増やす→・・・→
多数シートを連続して印刷
という方法くらいです。よろしくおながいします。

172 :名無しさん@そうだ選挙にいこう:02/08/20 12:53
>>171
Wordの差込印刷を使うか、VBAを組むのどちらか。
はっきり逝って、Wordの差込印刷の方が全然簡単だと思う。



173 :172補足:02/08/20 13:03
どうしても、VBAでやりたいのならコードが汚くなるが、
次の方法でやるのがいいと思う。
まず、マクロで記録をして、1行目のデータをコピぺし、印刷する。
次に、VBAを開いてModule1のMacro1に
Sub Macro1()
Dim i as integer  ←加える(別にいらないが…)         
For i=1 To 00 
        ↑データの最後の行番号をかけ。確か取得できる関数が
         あるはずだが、忘れた。
       
  '元々書いてあったコードをそのままのせる。
  'ただし、Range("A0").Copy という感じのコードがあるはずなので
  'それをRange("A" & i)に書き換える。
 
 Next i ←加える
End Sub
と、まぁ、こんな感じでやるのだが……

174 :171:02/08/20 15:32
>>172-173
どうもです。言葉足らずで申し訳ないっす。

ええと、>>171に書いた、ループなどのコーディングは出来上がっているのですが、
どういう「手法」でループして「印刷」シートに差し込んでいくのがExcelで、
もっとも端末に付加をかけずに行えるかが知りたかったのです。

Excelは表などの線を書くのは簡単で良いのですが、
差し込んで印刷→差し込んで印刷→・・・
というループには向いていないようで、すごく緩慢になってます。
Accessがほしいです。

175 :名無しさん@そうだ選挙にいこう:02/08/20 16:37
>>174
実際には負荷がどうかかっているかよくわからんが、俺の経験上だと
コピペ文を代入式に変形させれば少しは良いんじゃないかと…
sheet1.Range("A1").Copy
sheet2.Range("B1").Paste
      ↓
sheet2.Range("B1").Value=sheet1.Range("A1").Value
という感じにすれば、クリップボードにデータが残らないと思う。
あとは、実行画面を表示させないことかな……


176 :171:02/08/20 17:08
>>175
ありがとです。それらは双方ともやっていました。
貼り付けという表現がだめでしたね。申し訳ないっす。

ということは「手法」として
{貼り付け→印刷}×α
は間違っていなかったわけですね。

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

177 :名無しさん@そうだ選挙にいこう:02/08/20 19:40
オラクルとSQLどっちが最高?

178 :名無しさん@そうだ選挙にいこう:02/08/20 19:57
ハァ?

179 :名無しさん@そうだ選挙にいこう:02/08/20 20:56
>>171

どんなヘタレ環境か知らんが、多分ソースが悪い。
どんなソースか、うpしてみ。

180 :171:02/08/20 22:11
>>179
恥ずかしいので結構です。遠慮します。

あれから、いろいろ考えて、1枚の「印刷」シートに枠線を縦方向に多数コピーし、
間隔見計らって、データの差し込み→印刷を行う方法を発見し、
ハングせずに印刷できるようになりました。

以前の方法ですと、印刷時に
「1/1枚印刷しますた」→「1/1枚印刷しますた」→・・・
と何度も出ていたのが、今度の方法だと、
「○/25枚印刷しますた」
と一回の表示で行えるようになったのがデカいようです。

もしかすると、印刷のループがいけなかったのかもしれません。
とか、言ってみるテスト(と言って逃避)。

181 :名無しさん@そうだ選挙にいこう:02/08/21 13:53
アクティブセルが指定範囲内かの
チェックを入れたいのでが
どうやってチェックするのでしょうか?

アクティブセル A1
指定範囲    A1:D50
【範囲内】

アクティブセル B70
指定範囲    A1:D50
【範囲外】

お願いします

182 :名無しさん@そうだ選挙にいこう:02/08/21 14:05
>>181
Intersectは範囲のかぶってる部分を返すメソッド

Sub Macro1()
  Dim c As Range
  Set c = Application.Intersect(ActiveSheet.Range("A1:D50"), ActiveCell)
  If c Is Nothing Then
    MsgBox "かぶりなし", vbInformation, ActiveCell.Address
  Else
    MsgBox "かぶってる", vbInformation, ActiveCell.Address
  End If
  Set c = Nothing
End Sub

183 :名無しさん@そうだ選挙にいこう:02/08/21 14:16
Intersect メソッド
を本(最新2冊)で調べたのですが載っていく
オブジェクトブラウザではありました。

こんなメソッドがあるのですね。
勉強になりました。
大変助かります。ありがとうございました。

184 :初心者:02/08/21 23:05
すみませんが、VBAでWAVとかMP3を鳴らすプログラムはくめるでしょうか?
もしかしたらあほな質問をしているかもしれませんが、よろしくお願い申し上げます。

185 :名無しさん@そうだ選挙にいこう:02/08/22 00:30
音声でメッセージを出したいんだよね!
俺は知らん!

186 :名無しさん@そうだ選挙にいこう:02/08/22 00:35
>>184>>185(w
PLAYSOUND

187 :名無しさん@そうだ選挙にいこう:02/08/22 00:52
SoundNoteじゃなかったっけ。

188 :名無しさん@そうだ選挙にいこう:02/08/22 08:11
WAVならこれ(API使用)。
ブックを開いたときにWindowsの起動時の音が鳴るよ。

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Sub Auto_Open()
 sndPlaySound "C:\WINDOWS\MEDIA\The Microsoft Sound.wav", 0
End Sub

MP3はしらない、スマソ。

189 :名無しさん@そうだ選挙にいこう:02/08/22 13:33
VBMP3.dll

190 :名無しさん@そうだ選挙にいこう:02/08/22 21:46
>>141,142
レスしてからの訂正は、チョー恥、オオチャクカマスナ
だけでなく、初心者(質問者)にも間際らし!
その程度で、威張るのformat(100000000)年、早


191 :名無しさん@そうだ選挙にいこう:02/08/22 22:39
(゚Д゚)ハァ?

192 :VBA:02/08/23 23:39
98SEのラップトップですが EXCEL VBA のプロパテイ内のFontが毛筆体に化けています
どうすれば通常Fontにもどるでしょうか?(office 2000)





193 :名無しさん@そうだ選挙にいこう:02/08/24 00:52
>>192
あっ、それバグ。MSのどっかにパッチあったよ。
場所忘れたので探して

194 :名無しさん@そうだ選挙にいこう:02/08/24 07:20
プロジェクトにロックをかけててもOpenOffice.Org Calcで開くと
見えました。
しかし一部文字化けするようです。
文字化けしないようには出来ませんか?
エクセルマクロ刈ったでは解除できなかったもので。


195 :194:02/08/24 08:14
スレ違いスマソ。

196 :名無しさん@そうだ選挙にいこう:02/08/24 09:27
>>192
M$
ttp://office.microsoft.com/japan/downloads/2000/O9VBEupd.asp

197 :196:02/08/24 09:30
これが正解。 一番うしろのxが抜けてた、スマソ
ttp://office.microsoft.com/japan/downloads/2000/O9VBEupd.aspx

198 :いちゃお:02/08/24 12:34
はじめまして。
ただいま、エクセルと格闘中している者です。
例えば、A列に0〜10までの数値,B列にXまたはZの記号を入力しています。
6未満の数値をカウントしたい場合『=COUNTIF(範囲,">6")』
Aをカウントしたい場合『=COUNTIF(範囲,"X")』
私は、↑上記2つの式を合体させて、”6未満でかつAのアイテム”を
カウントする1つの式を考えたいのですが、情けないですが、
どうしても1つの式に出来ませんでした。出来ると思うのですが…。
すいませんが、どなたかご存知でしたら、お教え頂けると幸いです。
よろしくお願い致します。

199 :名無しさん@そうだ選挙にいこう:02/08/24 13:47
>>198

VBAの質問か?激しくスレ違い

Excel総合相談所7
http://pc.2ch.net/test/read.cgi/bsoft/1028725250/l50

ちなみに

=SUMPRODUCT((A1:A11<6)*(B1:B11="X"))

200 :名無しさん@そうだ選挙にいこう:02/08/24 15:56
>199
誘導だけでなく答えまで書くなんて199さん(・∀・)カコイイ!!

201 :名無しさん@そうだ選挙にいこう:02/08/25 06:57
>>198
=SUM((A1:A11<6)*(B1:B11="X"))
と入力してSHIFT + CTRL + ENTER



202 :いちゃお:02/08/25 09:54
>>199
>>201
ありがとうございました。出来ました。
誤記(>6),板違い等失礼致しました。

203 :名無しさん@そうだ選挙にいこう:02/08/25 10:16
超初心者ですが,VBAを良く分からないまま扱っていたら,当該エクセルファイルを開くたびに

マクロが どーのこーのって メッセージが出だしました。

どうやったら 出なくできるのでしょうか。

簡単な質問ですみません。(私にとっては,超難問です) 

204 :名無しさん@そうだ選挙にいこう:02/08/25 12:21
>>203

シート名のタブを右クリックして、コードの表示
VBE画面が開くので、書いてあるコードを全部消し(全部のシート)、Module1があったら削除する。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

End Sub

  ↑
 これ

その後保存して、2度とコード表示をしないこと。

205 :203:02/08/25 12:31
>>204
できましたー!!

ありがとうございました(^o^)

やっほー

206 :名無しさん@そうだ選挙にいこう:02/08/27 15:14
EXCEL2000を使っています。

VBAからセルの右クリックメニューに追加したメニューを階層化することはできますか?

たとえば、メニューバーから「ファイル」 > 「印刷範囲」を選んでその上にカーソルを合わせると、
サブメニューとして、「印刷範囲の設定」、「印刷範囲のクリア」という二つのメニューがあらわれます。

質問の趣旨は、右クリックメニューからこのようにサブメニューをだすことは可能か、という意味です。

どうやってもできないので困っています。わかる方、お助けください。

207 :名無しさん@そうだ選挙にいこう:02/08/28 08:54
>>206
コントロールの種類をちゃんと指定汁

With CommandBars("cell")
.Reset
With .Controls.Add(msoControlPopup)
.Caption = "印刷範囲(&T)"
.BeginGroup = True
With .Controls.Add(msoControlButton)
.Caption = "印刷範囲の設定(&S)"
'.FaceId = 0
'.OnAction = ""
End With
With .Controls.Add(msoControlButton)
.Caption = "印刷範囲のクリア(&C)"
End With
End With
End With

208 :名無しさん@そうだ選挙にいこう:02/08/28 13:25
Sub test()
Workbooks("test2.txt").Sheets("COM_OutData").SaveAs Filename:="c:\test3.txt", FileFormat:=xlTextWindows
End Sub
を実行するとエラーになります。

メッセージは
実行時エラー'1004'
アプリケーション定義または、オブジェクト定義のエラーです。

オプションの【FileFormat:=xlTextWindows】をコメントアウトすると
正常に動作します。

環境
OS WIN2K
EXCEL 2002

わかる方。お願いします。

209 :G:02/08/28 13:41
>>208のつづき
http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/JAPAN/support/kb/articles/JP199/2/68.asp
も関係あるかと思いしらべてみたのですが、特に保護はされていません。


210 :名無しさん@そうだ選挙にいこう:02/08/28 15:37
デジタル署名の仕方について教えてください。どこかからひっぱてくる?
LANのユーザーです。(マクロセキュリティ中に変更)
エクセルファイルを開き→エディター→デジタル署名→既存のがない
となります。どうすればいいのでしょうか?
管理者でもやってみましたがおなじところでとまりますが・・・。

211 :206:02/08/28 16:27
207さん、ありがとうございました。別件で忙しくなりまだ試せていないんですが、取り急ぎお礼まで。

212 :名無しさん@そうだ選挙にいこう:02/08/28 18:14
>>209
xlTextWindowsってことは、日本語エクセルではないのですか?

もし、日本語版ならFileFormatを
xlCurrentPlatformText とか xlCSV 辺りを試してみたらどうでしょう。

213 :まーぼー:02/08/28 21:14
EXCEL2000を使っています。

マクロが自動的に実行されるようにするには?

 マクロの作成は初心者で、マクロは記録したモノをボタンに登録して
使用するくらいです。
Excelのヘルプを見ていると、以下のような記述がありました。

>自動マクロを実行しないで Excel を起動する。
>Auto_Activate などの自動マクロは、Excel を起動したときに自動的
>に実行されます。 これらのマクロの詳細については、Visual Basic
>のヘルプを参照してください。Excel が起動したときに自動マクロが
>実行されないようにするには、 Shift キーを押しながら Excel を起
>動します。

 とありますが、Excel を起動したときに「マクロ」が自動的に実行さ
れるのではなく、 Excelが既に起動されている状態で「○○○.xls」と
いうファイルを開くとセルポインタが「○○○.xls」の「入力」シート
の「A1」セルに移動するよう下記の様なマクロが実行されるようにする
事は出来ないのでしょうか?(開くファイル自体の「○○○.xls」にマ
クロは記述したいのですが…)

−−開くと自動で実行したいF_OPENマクロ−−
Sub F_OPEN()
Application.Goto Reference:="入力!R1C1"
End Sub
−−−−−−−−−−−−−−−−−−−−−

どなたか御教示の程、宜しくお願いいたします。


214 :名無しさん@そうだ選挙にいこう:02/08/28 22:55
ブックを開いたときにマクロが実行。

標準Moduleに書く場合
Sub AUTO_OPEN()
  Worksheets("入力").Activate
  Application.Goto Reference:=Range("A1")
End Sub
ブックのイベントコード(Thisworkbook)に書く場合
Private Sub WorkBook_Open()
  Worksheets("入力").Activate
  Application.Goto Reference:=Range("A1")
End Sub

215 :まーぼー:02/08/28 23:33
あっという間に解決しました!
色々なサイトを検索しても解決できなかったのですが…
たった4行とは…

214「名無しさん@そうだ選挙にいこう」さん有り難うございます。




216 :206:02/08/28 23:35
207さん、さきほどためしたところうまくいきました。
お返事が遅れましてすみませんでした。

本当に助かりました。ありがとうございました。

217 :名無しさん@そうだ選挙にいこう:02/08/29 19:00
Excel2000です。
データからグラフを生成し、それを画像ファイル(できればJPEG)として保存するマクロを作っています。
グラフの生成までは出来たのですが画像ファイルとして保存する方法がわかりません。
どなたかよろしくお願いします。

218 :名無しさん@そうだ選挙にいこう:02/08/29 22:27
質問したいのですが、
EXCELで入力フォームを作っているんですが、
データを入力した後に一番最初のテキストボックスに
自動的にタブが戻ってくるようなマクロは
どのように作ればよろしいでしょうか?
タブの順番を設定しただけではどうしても
入力後にタブが消えてしまいマウスでクリックするか
キーボードのタブキーを押さなければならなくなってしまいます。
検索しても分からなかったので、
検索方法だけでも教えていただければありがたいです。
おねがいします(;´Д`)

219 : :02/08/29 23:07
Excel2000です。
21360秒などの長い時間を時分秒にしたいのですがいい方法ありますか?

220 :名無しさん@そうだ選挙にいこう:02/08/29 23:55
>>217
Exportメソッドを見てみ。

221 :217:02/08/30 09:31
>>220 神よ!ありがとうございます。おかげさまで出力はできるようになりました。
が、なぜか画像が幅700ピクセルまでで右側が切れてしまうのです。
それとフォントがどう見てもMS Pゴシックには見えないものに変わっていて文字が潰れてしまいます。
これらはどう回避すればよいのでしょうか?一応下にコードを出しておきます。
ちなみに画面表示・印刷は正常です。よろしくお願いします。

'' グラフ作成
With ThisWorkbook
  .Charts.Add , .Sheets(1)
  .ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="グラフ"
  With .Charts("グラフ")
    .Visible = False
    .ChartType = xlLineMarkers
    .SetSourceData Source:=Sheets("TMP").Range("A1:I3"), PlotBy:=xlRows
    .SeriesCollection(1).Name = "=""A"""
    .SeriesCollection(2).Name = "=""B"""
    .HasTitle = True
    .ChartTitle.Characters.Text = "2002"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .HasLegend = False
    .ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False
    .HasDataTable = True
    .DataTable.ShowLegendKey = True
    With .ChartArea
      .Fill.UserPicture PictureFile:="E:\My Documents\My Pictures\hokkaido.gif"
      .Fill.Visible = True
      .AutoScaleFont = False
      .Font.Name = "MS Pゴシック"
      .Font.FontStyle = "太字"
      .Font.Size = 9
    End With
    .ChartTitle.Font.Size = 16
    .PlotArea.Interior.ColorIndex = xlNone

    With .Axes(xlValue)
      .MinimumScaleIsAuto = 0
      T = #2:00:00 AM#
      Do
        If T > ThisWorkbook.Sheets("TMP").Cells(2, 9).Text Then .MaximumScale = T: Exit Do
        T = T + #12:10:00 AM#
      Loop
      .MinorUnitIsAuto = True
      .MajorUnit = #12:10:00 AM#
    End With
    .Export "graph.jpg", "jpg"
    .Visible = True
    .Activate
  End With
End With

222 :名無しさん@そうだ選挙にいこう:02/08/30 12:05
>>218
今ひとつ状況がわからないんだけど、
テキストボックス以外のオブジェクトのTabStopプロパティをFalseにするだけじゃないの?

>>219
Hour(TimeSerial(0, 0, 21360))
Minute(TimeSerial(0, 0, 21360))
Second((TimeSerial(0, 0, 21360))

223 :名無しさん@そうだ選挙にいこう:02/08/31 01:53
どなたか教えていただけませんか。
excel2000です。
シートへ入力する際、入力するセルの移動をマクロを使って操作するにはどのようにすればよいのでしょうか?
a1へ移動→入力→リターンキーで確定→d1へ移動→入力→リターンー →(繰り返し) →
a2へ移動→入力→リターンキーで確定→d2へ移動→入力→リターンー →(繰り返し)
(以降 ctrl+breakで中断するまで繰り返し)

昔のlotusでは、{?}^というマクロでOKだったと思います。
userformを使った場合、文字列すべて入力する必要があるのに対し、セルに入力する場合、上の行のデータを参照して最初の何文字か入力するだけで候補が表示されるので便利なのです。
(例:「東京都」と入力したい場合、「とう」と入力すれば「東京都」と表示される。)

また、リストボックスを使う場合は、入力する文字列の種類が100種類ぐらいあるので使いにくいのです。

セルの移動だけなら簡単なのですが、入力しながら移動させるのがうまくいかず困ってます。

よろしくお願いします。


224 :名無しさん@そうだ選挙にいこう:02/08/31 02:15
今、自宅のexcel2000でピボットテーブルを自動記録して作ってるんですが、
会社のexcel97でも動くでしょうか。
手元の本には「2000ではドラッグ&ドロップで作成が楽になった!」とか書いてあるんで、
不安なんですが、VBAコード自体も異なるんでしょうか?
よろしくお願いします。

225 :名無しさん@そうだ選挙にいこう:02/08/31 09:47
>>223
入力後のセル移動方向を「右」に設定しておいて、こんなんでどうだろう?
A1 → D1 → G1 → J1 → M1 →
A2 → D2 → G2 → J2 → M2 →
...と移動するものと仮定して、

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Select Case Target.Column
                Case 2, 5, 8, 11
                        Target.Offset(0, 2).Activate
                Case 14
                        Target.Offset(1, -13).Activate
        End Select
End Sub

すぐ右の列を選択できなくなっちゃうけど、
入力終わったらマクロを止めちゃうと言うことで...

226 :名無しさん@そうだ選挙にいこう:02/08/31 11:39
>>225
結構、悩んだのですが、あっさり対処方法がみつかってしまいました。
早速、マクロ組んでみます。
素早い回答ありがとうございます。

227 :名無しさん@そうだ選挙にいこう:02/08/31 22:23
>>223
TABで横へ移動すればいいんでないのかい
A1 入力 tab B1 入力 tab C1 入力 tab D1 入力 ENTER(勝手にA2に移動するはず)
A2 入力 tab …

228 : ◆GORUA2AQ :02/09/01 03:43
データを入力したいセルの保護を解除

シート保護をかける

データ入力→Tab→データ入力→(゚д゚)ウマー

229 : ◆GORUA2AQ :02/09/01 03:47
あ、データ入力時にEnterは押さないほうが(・∀・)イイ!!よ

と、セルの保護じゃなくてセルのロックだったね。

230 :名無しさん@そうだ選挙にいこう:02/09/01 20:38
CommandBarに以下のようにして、
CommandBarComboBoxを追加しました。

Dim CB As CommandBar
Dim CBCtrl As CommandBarControl

Set CB = Application.CommandBars("Worksheet Menu Bar")
Set CBCtrl
= CB.Controls("挿入(I)").Controls("一括挿入").Controls.Add(Type:=msoCo
ntrolEdit)

With CBCtrl
.Caption = "挿入縦サイズの設定"
End With

このとき、Type:=msoControlEditですので、
記入欄に文字をかきこむことができます。

その文字をプログラムにうけわたすには?
また、記入欄に初期値をかきこんでおくには?
また、記入欄の文字を変更した場合、初期値をそれに変更するには?

どうか教授ください。




231 :名無しさん@そうだ選挙にいこう:02/09/03 10:19
うちのEXCELにはmsoControlEditはないのでMSDNでみたところ、
msoControlEditはテキストボックスということなので、

Application.CommandBars("Worksheet Menu Bar"). _
  Controls("挿入(I)").Controls("一括挿入").Text

でフォームなどのテキストボックスと同様にやり取りをできると思うけど。
Di CBCtrl As CommandBarEdit
 という風にオブジェクト型を断定すると、固有のメンバが表示されるので、
そこで.Textプロパティがでてくるはず。

232 :231:02/09/03 18:21
Dim CBCtrl As CommandBarEdit

m 抜けてた(w

233 :230:02/09/03 21:46
解決いたしました。
とはいってもMougにも相談したんですけど。

231さんのおっしゃるとおり、Textプロパティをもちいました。

まず、ThisWorkbook部に
以下のようにしてコマンドバーを定義しておきました。

Dim CB As CommandBar
Dim CBCtrl As CommandBarControl

Set CB = Application.CommandBars("Worksheet Menu Bar")
Set CBCtrl
= CB.Controls("挿入(I)").Controls("一括挿入").Controls.Add(Type:=msoCo
ntrolEdit)

With CBCtrl
.Tag="わはは"
.Caption = "挿入縦サイズの設定"
.Text="30" ←ここで初期値の設定
End With


234 :231:02/09/03 21:47
(233のつづき)
そして、記入欄の数値を用いる関数にて(たとえばとしてmodule内としておきます。)
上記Tag:="わはは"をもつコマンドバーを探し出し、Textプロパティを用いて
値をとりだしました。

Dim t As Integer
Dim CBS As CommandBarComboBox

Set CBS = Application.CommandBars.FindControl(,,Tag:="わはは")
t=CBS.Text

どうもレスありがとうです。


235 :45:02/09/12 17:38
>>26
俺の最近のお気に入りはモンパチとデリコだね、もう断トツで。
ミスチルやB’zもロックファンとしては外せないでしょ。
しぶいところではエゴラッピンなんかもきっちり押さえてますよ。
ロック以外でもいろいろ聴いてるなあ。浜崎とか林檎とか好きだし。
宇多田も倉木も両方好きだし。意外に思われるかもしれないけど、
ドラゴンアッシュとかケツメイシなんかもたま〜に聴いてる。
洋楽はねえ、セリーヌとマライアがメインかな。
でも近頃はオアシスとかも好きになってきた。
あと落ち込んだ時なんかにはレディヘとか聴いたりして・・・
うわ、マニアックだな俺(笑
まあモーニング娘を聴いてるような人とは音楽の話はしたくないね(笑


236 :名無しさん@そうだ選挙にいこう:02/09/13 01:27
Win2000+Excel2000です。

たとえば1行に5個くらい数字があって、
それを行単位でグラフにしたいと考えています。
それが100行くらいあって、グラフをそれぞれ作成したいとき、
(数字が違うだけでグラフの形は同じ)
(たとえば
1 50 85 32 25 40
2 46 90 42 35 50
3 55 99 60 40 60

100 32 24 60 85 91
などの数字を1行づつで折れ線グラフをつくりたい。)

・そのグラフを作成するには?
(For〜Nextで繰り返しをすればいいのはわかるが、データの取り方でつまづく)
・そのグラフを100とおり作成したとき、別ののシート中に、重ならずに表示するには?
(グラフを次々つくると同じ場所に重なってできてしまう)
どうすればいいでしょか。

ついでにそのグラフを画像としてPowerPointに1グラフ/1ページで
貼り付けられればいうことないのですが。


237 :名無しさん@そうだ選挙にいこう:02/09/13 10:08
エクセルの次期バージョンのビバはドットネットになるんですか?

238 :名無しさん@そうだ選挙にいこう:02/09/13 23:06
>236

A1〜E1はタイトルとして固定
並べるのは面倒なので、グラフシート
PowerPointなぞ持ってないので知らん。

Sub test()
 Dim titleR As Range, DataR As Range
 Dim i As Integer, myC As Chart

 With Worksheets("Sheet1")
   Set titleR = .Range("A1:E1")
   For i = 2 To 100
     Set DataR = .Range("A" & i).Resize(1, 5)
     Charts.Add after:=Sheets(Sheets.Count)
     Set myC = ActiveChart
     myC.ChartType = xlLineMarkers
     myC.SetSourceData Source:=Union(titleR, DataR)
   Next i
 End With
End Sub

239 :名無しさん@そうだ選挙にいこう:02/09/14 11:24
Range("B1") = StrConv(Range("A1"), vbWide)

この方法では、文字列は全角にできますが数字ができません。
数字を半角から全角にする方法を教えてください。


240 :名無しさん@そうだ選挙にいこう:02/09/14 12:38
>>239
Range("B1") = StrConv("'" & Range("A1"), vbWide)

241 :初心者:02/09/17 05:23
すみません。教えてください。

例えば
2 2 4
2 4 4 
5 8 8

とあった時セルの中に2がいくつ、4がいくつ・・を調べて
出力したいんです・・。

For j (J=2,4,5,8) (←?)
For i = 1 To 3
Cells(1+i,1)Select (←出力するところ)
ActiveCell.FormulaR1C1 = "=COUNTIF(Rang(Cells(,),Cells(,)),j)"
Next i Next j            (←↑?)    
End Sub

?の部分がよくわかりません。わかる方よろしくおねがいします。

242 :名無しさん@そうだ選挙にいこう:02/09/17 14:21
Excel2000のVBAで一つ質問があります。

VBAのモジュールから、任意のアプリケーションがすでに起動されているかどうかを調べて、
起動されている場合は処理を一時中断し、起動されてない場合は任意のアプリケーションを起動して処理を続行させるプログラムを作成したいのですが、
このような処理はエクセルのVBAで可能でしょうか?

もし可能ならば、ヒントだけでも良いので教えてください。よろしくお願いします。

243 :名無しさん@そうだ選挙にいこう:02/09/17 21:06
>>241

A1〜C3にあったとしたらE列に出る。
A1〜C3を選択してから実行。

Sub ハァ()
Dim f, j As Integer, c As Integer, i As Long
With Selection
 If .Areas.Count = 1 Then
  c = .Column + .Columns.Count + 1
  f = Array(2, 4, 5, 8)
  j = 0
  For i = .Row To .Row + UBound(f)
    Cells(i, c) = "=""" & f(j) & _
           "は"" & Countif(" & _
           .Address & "," & _
           f(j) & ") & ""個"""
    j = j + 1
  Next i
 End If
End With
End Sub

244 :241:02/09/17 21:27
>>243
ありがとうございます!!!きちんと動きました!!!
これで夜も寝られる・・。

245 :名無しさん@そうだ選挙にいこう:02/09/17 23:41
>>242

ttp://www.moug.net/cgi-bin/technic.cgi?exvba+TI15010034

246 :名無しさん@そうだ選挙にいこう:02/09/18 09:42
>>245
ありがとうございますm(__)m
これで何とかなりそうなので頑張ってみます。

ほんと助かりました!!

247 :246:02/09/18 09:44
と思ったら、プログラムがすでに起動しているかどうか調べるうまい方法考えないといけなかった…(-_-)

248 :名無しさん@そうだ選挙にいこう:02/09/18 21:08
Excelののウィンドウの左上に表示されているアイコンを変更するこ
とは可能でしょうか?
タイトルを変更するのはCaptionの変更でできたのですが、いろいろ
調べてみましたがわかりませんでした。

どなたかご存知の方がいましたら教えていただけないでしょうか?

249 :246:02/09/19 09:15
>>248
Excel本体?それともVBAで作成したフォームのアイコン?
本体は多分変えれないと思うのだが・・・

250 :247:02/09/19 09:37
>>249
Excelのアプリケーション本体のアイコンです。

シェアウェア等でExcelを使用したアプリなどがアイコンだけ
自前のものにしているのがよくあるのでできるとは思うので
すが。

某サンプルは手に入れたのですがコードが有料なもので、、

251 :248:02/09/19 09:38
↑すいません248の間違いでした。

252 :名無しさん@そうだ選挙にいこう:02/09/21 23:37
最近VBAを始めましたが、順番にテキストどおりに進めていって、以下の所で躓いてしまいました。

Private Sub CommandButtom2_Click()
Dim Ret As Integer
Ret = NsgBox("ブックを終了しますか", vbOKCancel,"ブックの終了")
 If Ret = vbOK Then
ActiveWoekbook.close
End If
Unload UserForm1
End
End Sub

コマンドボタン(CommandButtom2)をクリックすると
「OK」「キャンセル」の2つがメッセージボックスが表示されるマクロになってますが
「OK」のみが表示されるメッセージボックスになるようにするにはどうすれば良いのでしょうか?

253 :名無しさん@そうだ選挙にいこう:02/09/22 02:39
>252

vbOKOnly

254 :252:02/09/23 00:39
>>253
If Ret = vbOK Then を vbOKOnlyにすれば良いのでしょうか?

255 :名無しさん@そうだ選挙にいこう:02/09/23 00:54
>254
Ret = NsgBox("ブックを終了しますか", vbOKCancel,"ブックの終了") の方

256 :252:02/09/23 01:21
なるほど
Ret = NsgBox("ブックを終了しますか", vbOKOnly,"ブックの終了")
でいいわけですよね?
夜遅くにありがとうございます。

257 :253:02/09/23 01:32
>254

回答は 255さんのフォロー通り

vbOKOnlyにするって事は、If Ret = vbOK Then は無意味になるってこと。
戻り値を気にしないケースに使う。

Private Sub CommandButton2_Click()

 MsgBox "ブックを終了します", vbOKOnly + vbCritical, "ブックの終了"
 Unload Me
 ActiveWorkbook.Close

End Sub


258 :名無しさん@そうだ選挙にいこう:02/09/23 01:36
http://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20107

259 :252:02/09/23 01:39
あぁ、分かりやすい説明でありがとうございました。
なにぶん仕事で全然触った事のないVBAだったので、
いくらテキストを見てもさっぱり分からなかったんです。

本当にありがとうございました。

260 :名無しさん@そうだ選挙にいこう:02/09/23 03:41
でも、終了のキャンセルができないのって意味無いね

261 :253:02/09/23 03:59
>260

そうだね。
こういったケースで使うのはおかしい。

「エラーが出たので処理を中断します」とか、「データが不正で実行出来ません」とか、
それ以外にない時に使うもんだと思う。

262 : :02/09/23 11:46
userform上のテキストボックスで、テキストを打ち変えるのに
右クリックのメニューを表示させたいんだけど、どうやったらいいの?
できないのかなあ・・・。

263 :  :02/09/23 13:38
>>262
>できないのかなあ・・・。
お前みたいなやる気の無い奴は氏ねば?

切り取り、コピー、貼り付けのプロシージャは自分で書け
Private Sub UserForm_Initialize()
On Error Resume Next
Application.CommandBars("MyPopUp").Delete
On Error GoTo 0

With Application.CommandBars.Add( _
Name:="MyPopUp", _
Position:=msoBarPopup, _
Temporary:=True)
With .Controls.Add(Type:=msoControlButton, Temporary:=True)
.Caption = "切り取り"
.OnAction = "ProcedureCut"
End With
With .Controls.Add(Type:=msoControlButton, Temporary:=True)
.Caption = "コピー"
.OnAction = "ProcedureCopy"
End With
With .Controls.Add(Type:=msoControlButton, Temporary:=True)
.Caption = "貼り付け"
.OnAction = "ProcedurePaste"
End With
End With
End Sub

264 :263:02/09/23 13:38
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.CommandBars("MyPopUp").Delete
End Sub
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = xlSecondaryButton Then
CommandBars("MyPopUp").ShowPopup
End If
End Sub

265 :262:02/09/23 17:35
ほお・・なるほどね。こういうやり方でいいわけか・・。

ありがとう。

266 :262:02/09/23 17:44
ん??実際にカット&ペーストは出来ないぞ??

まあ後は自分で調べます。ありがと。

267 :262:02/09/24 22:43
あのう・・・わかんない・・・
テキストボックスの文字列の一部分を反転させて切り取るのってどうやんの?

268 :名無しさん@そうだ選挙にいこう:02/09/25 16:11
>>262
こんなのがあった。2K以降らしいです。
ttp://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=31;id=FAQ

269 :名無しさん@そうだ選挙にいこう:02/09/28 00:24
数式を文字列として、タブ区切りで、クリップボードにコピーするマクロを作りたいのですが、
文字列を、クリップボードにコピーする方法がわからなくてつまりました。

こんなんじゃだめみたい
a="aa"
a.copy

270 :名無しさん@そうだ選挙にいこう:02/09/28 01:08
>>269
ツール→参照設定で、
Microsoft Forms 2.0 Object Library (バージョンはOfficeによって違うかも)
にチェックを入れて、
Dim myData As New DataObject
myData.SetText "aa"
myData.PutInClipboard

271 :名無しさん@そうだ選挙にいこう:02/09/28 07:49
返事ありがとうございます。
バージョンは、Excel2000なのですが、Microsoft Forms 2.0 Object Library
は入っていませんでした。

ソースを実行すると以下のエラーが発生します。
"Dim myData As New DataObject"のところで、
"コンパイルエラー。ユーサー定義型は定義されていません。"


似たような名前かなと思って以下の二つを試しましたが違いました。
Microsoft Data Formatting Object Library 6.0(SP4)
Microsoft Remort Data Object 2.5 Library

以下の4つは最初からチェックがついていました。
Visual Basic For Applications
Microsoft Excel 9.0 Object Library
OLE Automation
Microsoft Office 9.0 Object Library


272 :名無しさん@そうだ選挙にいこう:02/09/28 11:12
>>271
むむ...それじゃ
挿入→ユーザーフォーム
でダミーのフォームを追加してみたらどうだろう?

参照設定されたことを確認したうえで、左上のツリー表示のところから
解放すると言うことでヽ~ノ´Д`)
(追加されたフォームを右クリック→(Form名)の解放→いいえ)

273 :名無しさん@そうだ選挙にいこう:02/09/28 23:23
>>271

Sub aa()
Dim MyData As DataObject

 Set MyData = New DataObject
   MyData.SetText "aaa"
   MyData.PutInClipboard

End Sub

274 :名無しさん@そうだ選挙にいこう:02/09/29 08:21
>>272

VBのGUIを作ったことがないので、フォームとかの扱いがわかりません。
VB本でも、借りてきて勉強することにします。

>>273

As DataObject が通りません。
HELPにも、載ってるのに、何で通らないでしょうね。

275 :270,272:02/09/29 08:54
>>274
DataObjectが定義されてるのがMicrosoft Forms 2.0 Object Libraryのなかだから、
これが参照されてなければ「そんなのしらないよ」ってエラーが出る。

で、このライブラリはフォームを一個追加すれば自動的に参照設定されるはずなんだけど。
そのあとすぐにフォームを消しても参照設定残るから、そのあとは普通に使えるはず。

ってことだけどヽ(´▽`)ノ

276 :名無しさん@そうだ選挙にいこう:02/10/01 15:13
1.sheet1〜sheet10までのcell(3.7)のデータを加算してsheet11のcell(3,7)に格納
2.sheet1とsheet2のcell(3.7)のデータの大きい方をsheet("result")のcell(3,7)に格納
見たいな、sheet越しの操作をやろうとして、例えば、

For i=1 to 10
sum += sheet(i).cell(3,7).value
End
sheet(11).cell(3,7).value = sum
のようにスマートに書きたいのですけど、どなたか文法面で
上のコードを補ってください。


277 :(´。`)・・・。 :02/10/01 19:38
ActiveWorkbook.Sheets("Sheet1").SaveAs FileName:="C:\sheet1.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet1").SaveAs FileName:="C:\sheet1.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet1").SaveAs FileName:="C:\sheet1.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet1").SaveAs FileName:="C:\sheet1.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet2").SaveAs FileName:="C:\sheet2.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet3").SaveAs FileName:="C:\sheet3.csv", FileFormat:=xlCSV
ActiveWorkbook.Sheets("Sheet4").SaveAs FileName:="C:\sheet4.csv", FileFormat:=xlCSV
-------------------------
こんなVBAって普通?
もっと綺麗にかけてもいいと思うんだけど。
For i = 0 To 4 〜Next i でくくりたいけどsheet${i}の用に変数展開が出来ない。

ミナサン、この大問題をどうしてマスカ。
ちなみに今まで僕は、一々、Unix上でスクリプト書いて
変数展開してからVBEにコピペしてマスた。




278 :名無しさん@そうだ選挙にいこう:02/10/01 19:51
>>276

「補ってください」が、なんかムカツク

For i = 1 To 10
  Result = Result + Worksheets(i).Cells(3, 7).Value
Next i
Worksheets(11).Cells(3, 7) = Result

279 :ほれ:02/10/01 19:58
>>277

Sub ハァ()
Dim ws As Worksheet

 For Each ws In Worksheets
   ws.SaveAs FileName:="C:\" & ws.Name & ".csv", FileFormat:=xlCSV
 Next ws

End Sub

280 :名無しさん@そうだ選挙にいこう:02/10/01 22:48
みなさん、ありがとうございました。

「文字列を、クリップボードにコピー」が、できました。
これができたので、「数式を文字列として、タブ区切りで、クリップボードにコピーするマクロ」
の方も、作れました。


281 :名無しさん@そうだ選挙にいこう:02/10/03 13:57
初歩的なことですいません。

Excel2000の起動時にIMEをONにするには、
どのように記述したらよいのでしょう?
ヘルプ見ても良く分かりません…


282 :名無しさん@そうだ選挙にいこう:02/10/03 14:42
>>281
ImmSetOpenStatus

283 :sage:02/10/09 04:13
OLE技術のEXCELを外部アプリから操作できる部分は知っているけど、
VBAを起動したり、VBAのインタープリタを操作する方法ってありますか?

284 :ううう:02/10/09 23:59
スピンボタンが1から16まであるとして、そのどれかを(up、down)
クリックしたときにそのクリックしたスピンボタンの番号を取得・変数に代入
したいんだけど・・・どのオブジェクトのどのイベントで発生させたらいいのかな。

いろいろ調べてるんだけどわからないれす。

285 :名無しさん@そうだ選挙にいこう:02/10/12 21:35
こんばんわ。どうか教えてください。
過去ログで、「署名」をするやり方を見たのですが、
私のエクセルには、その「デジタル署名」というところの「選択」を押しても
「証明書」がひとつもかかれていないのです。
(選択するものがないんです)

「選択肢」を作るには、どこで「証明書」をもらってきたらよいのでしょうか?
っていうか、私は署名できないんでしょうか?

よろしくお願いします。m(__)m

286 :ううう:02/10/13 00:15
こんなんしてみたけど、うまくいかん。ううう

n = 1
Do Until UserForm1.Controls("spinButton" & n).Value = 1
If UserForm1.Controls("spinButton" & n).Value = 1 Then Exit Do
n = n + 1
Loop

If Controls("TextBox" & n * 4 - 2).Value = "" Then Exit Sub
str_length = Len(Controls("TextBox" & n * 4 - 2).Text)
Controls("TextBox" & n * 4 - 1).Text = Right(Controls("TextBox" & n * 4 - 2).Text, str_length / str_length) + Controls("TextBox" & n * 4 - 1).Text
Controls("TextBox" & n * 4 - 2).Text = Left(Controls("TextBox" & n * 4 - 2).Text, str_length - 1)

If LenB(Controls("TextBox" & n * 4 - 1).Text) > overflow Then
Controls("Frame" & n).BackColor = &HC0C0FF
Else: Controls("Frame" & n).BackColor = &H8000000F
End If



287 :名無しさん@そうだ選挙にいこう:02/10/13 01:16
列幅・行高が決まっている枠(結合されたセル)があって、そこにマクロ
で文字列を流し込むんだけど、文字列が長いと枠からはみ出ますよね?
(自動調整はしていない)
で、文字サイズを下げて枠に収まるように調整したいんだけど、枠からあ
ふれているかどうかを判定する方法ってないすか?

Do While (あふれている)= True
(セルのフォントサイズを下げる)
Loop

てな感じで。

288 :  :02/10/13 01:24
>OLE技術のEXCELを外部アプリから操作できる部分は知っているけど、
>VBAを起動したり、VBAのインタープリタを操作する方法ってありますか?
あるよ。俺はいろんな処理をEXCELファイルにVBAで関数を作って
おいて、VBスクリプトからEXCELファイル内の関数を呼び出してます。
NTのスケジューラでVBスクリプト定期実行させてるよ。

289 :名無しさん@そうだ選挙にいこう:02/10/13 03:24
>286

Dim spn As Control
Dim spnV

Sub Set_Cont(Cont As Control)
 Set spn = Cont
 spnV = Cont.Value
 If Not spn Is Nothing Then MsgBox spn.Name & Chr(13) & spnV
End Sub

Private Sub SpinButton1_SpinUp()
 Set_Cont SpinButton1
End Sub

Private Sub SpinButton1_SpinDown()
 Set_Cont SpinButton1
End Sub

Private Sub SpinButton2_SpinUp()
 Set_Cont SpinButton2
End Sub

Private Sub SpinButton2_SpinDown()
 Set_Cont SpinButton2
End Sub

290 :ううう:02/10/13 11:23
あ・ありがとう〜。
たすかりました。

291 :  :02/10/14 12:37
EXCEL板に書いちゃったけどこっちに書かなきゃいけなかったかも・・
とりあえずもう一回こっちで聞かせてもらいます

仕事で使ってる住所録があるんだけどオートフィルターの〜始まるしか
使わないのでテキストボックスとボタンで速攻検索できる用にしたいんです。
試行錯誤してるんだけど、できない!
とりあえずコードもわkんないんでオートフィルターのマクロをいじってんですが
テキストボックスに入力している文字列が取得できてないみたい。
だれかおしえて〜、説明がたんないならこたえまーす。
3日間仕事そっちのけでやってるン、





292 :名無しさん@そうだ選挙にいこう:02/10/14 13:22
>>291
おぃおぃ↓は無視してマルチポストか?
http://pc.2ch.net/test/read.cgi/bsoft/1033983470/175

293 : :02/10/14 14:13
292>>
ごめ〜ん
いいとこおせーてくれてありがと
これ使えそうです。

294 :ううう:02/10/14 14:52
あれれ???
LenB関数って、全角2バイト・半角1バイトで文字数数えるんじゃなかったっけ???

シート上だと「新宿区1-3」は9で返ってくるのに、VBAのコード内で
計算させると12で返ってくるよ・・。何でだ?

295 :名無しさん@そうだ選挙にいこう:02/10/14 15:12
取引先から「このシートへ入力して下さい」と言われて添付ファイル
みたら小数点以下の金額計算処理がされてなかった。親切にも俺が
直してデータを送ってるんだけど何も反応が無い。
大手の損保会社なんだけど、金のスペシャリストである保険屋が
こんなんで良いのか?

スマン、相談になってないな。

296 :名無しさん@そうだ選挙にいこう:02/10/14 16:24
>>295
晒せ!

297 :名無しさん@そうだ選挙にいこう:02/10/14 20:29
>294

Unicodeで扱われてるのよ。

Sub uniuni()
 s = "新宿区1-3"
 MsgBox LenB(s)
 s = StrConv(s, vbFromUnicode)
 MsgBox LenB(s)
End Sub

298 :ううう:02/10/14 21:47
ふーむ・。

ちゅうことは、一旦unicodeから戻して、処理した後にまたunicodeに
戻さないといけないのか。

299 :名無しさん@そうだ選挙にいこう:02/10/14 21:54
>298

つーか、何がしたいわけ?

>286 も読む気がしないソースだし。

300 :ううう:02/10/14 22:08
>>286とは違う話で。

全角半角入り乱れた文字列(住所録)がシート上に9000件ぐらいあって、
36バイト目で折り返し処理をしたいわけ。

Lenでやれば簡単だけど折り返し位置が一定にならないから、バイト数で
かぞえないといけなくてさ。

301 :名無しさん@そうだ選挙にいこう:02/10/14 22:23
>300

36バイト目が1バイト文字か2バイト文字かは関係ないわけ?

302 :ううう:02/10/14 22:50
ある。それで悩んでる。

303 :名無しさん@そうだ選挙にいこう:02/10/14 23:22
>>302
やりかたはいろいろあるが、住所の分割なら全部全角にしてから
分割するのがあとあと便利だと思う。
あとは、数字(1−9)来るまでで分割とか、都道府県でまず分割する
とかすればいい。

304 :名無しさん@そうだ選挙にいこう:02/10/14 23:25
>302

だから、LENBで1バイト文字も2バイト文字も2byteで返るのに、

「一旦unicodeから戻して、処理した後にまたunicodeに
戻さないといけないのか。」

となるのかって事よ?

Sub aho1()
Dim s1 As String, s2 As String
 s1 = "A"
 s2 = "あ"
 MsgBox s1 & " は、" & LenB(s1) & "byte" & _
       Chr(13) & s2 & " も、" & LenB(s2) & "byte"
End Sub

Sub aho2()
Dim s As String

 s = "東京都千代田区外神田x丁目xx番xx号あほーはいつ304号"
 If LenB(s) > 36 Then
   MsgBox MidB(s, 1, 36) & Chr(13) & MidB(s, 37, LenB(s))
 Else
   MsgBox s
 End If

End Sub


305 :bloom:02/10/14 23:31

http://homepage.mac.com/leverage/

306 :ううう:02/10/15 00:07
半角も全角も2バイトで扱うと、一件一件の折り返し幅が
一定にならないでしょ。幅の決まった用紙にプリントアウトするので。


307 :303:02/10/15 00:15
>>306
だから全部全角に変換したら何か問題あるのか?

Sub test()
Dim s As String
s = "新宿区3-6-8極東ビル3F"
s = StrConv(s, vbWide)
Debug.Print s
End Sub


308 :名無しさん@そうだ選挙にいこう:02/10/15 00:19
>306

36byte目が、2バイト文字の1byte目、2byte目の可能性がある以上、
一件一件の折り返し幅を一定しようが無いと思うが。。。

まぁ、いいや。理解出来ないんでお好きなように。

309 :無名:02/10/15 17:18
文字を1つ1つ判別して数えるしか無いんじゃないの?こんな風に…。
Function StringLineFeed(MasterString As String, Optional OutLength As Long = 36, Optional LineFeedChar As String = vbCrLf) As String
Dim RoopVariable As Long, LineCharCount As Long, UniLen As Long
LineCharCount = 0
For RoopVariable = 1 To Len(MasterString)
UniLen = LenB(StrConv(Mid(MasterString, RoopVariable, 1), vbFromUnicode))
If LineCharCount + UniLen <= OutLength Then
LineCharCount = LineCharCount + UniLen
StringLineFeed = StringLineFeed + Mid(MasterString, RoopVariable, 1)
Else
If Mid(MasterString, RoopVariable, 1) = "。" Or Mid(MasterString, RoopVariable, 1) = "、" Or Mid(MasterString, RoopVariable, 1) = "," Or Mid(MasterString, RoopVariable, 1) = "." Or Mid(MasterString, RoopVariable, 1) = "’" Then
LineCharCount = LineCharCount + UniLen
StringLineFeed = StringLineFeed + Mid(MasterString, RoopVariable, 1)
Else
LineCharCount = UniLen
StringLineFeed = StringLineFeed + LineFeedChar + Mid(MasterString, RoopVariable, 1)
End If
End If
If LineCharCount >= OutLength Then
LineCharCount = 0
StringLineFeed = StringLineFeed + LineFeedChar
End If
Next
End Function

310 :無名:02/10/15 17:26
309の様にしても
名無しさん@そうだ選挙にいこう さんの言っている様に36文字目の問題は出てきます。
309の関数の場合は36文字目が『、。,.’』の5種類の文字の場合のみ改行せずに、それ以外は35文字目で改行するようになっています。




311 :ううう:02/10/15 18:47
そうですね。
全部を全角にしてしまえばいいんだけど・・・

312 :AK:02/10/15 21:17
シートにテキストボックスやオプションボタンを貼り付けたのですが、
Tabキーを押しても次のテキストボックス等に移動してくれません。
対処方法を教えていただきたいので、ご存知の方よろしくお願いします。

313 : :02/10/15 21:33
shiね。>>AK

314 :名無しさん@そうだ選挙にいこう:02/10/16 15:03
Excelのグラフで計算される近似式について
例えば多項式近似したときの係数ををVBAで取り込みたいんですけど
どうしたらよいのでしょうか?
Y=(anX^n)の
anをとりこむ方法を教えてください。


315 :x:02/10/16 15:04
これって本当か?

↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm


316 :名無しさん@そうだ選挙にいこう:02/10/16 19:24
↑ 浪速あきんどだしあやしそう。
314 は、どうやるんだろうねえ?


317 :SOS…:02/10/17 01:05
VBAを5日前に始めたばかりの初心者です。Excelのバージョンは2000です。
Accessがない環境でExcel初心者が使用するため、
Excelでユーザーフォームを使用したデータベースを作っています。
データベースのA列のデータを参照してソートし、A列に下記の様にデータが並んだとします。
A   
A   
A   
B
B
B
C
C
D
D
D

318 :SOS…:02/10/17 01:06
続き:
この状態で、種類が同じデータのまとまりの上に1行挿入し、
A列にその種類のデータのラベルを表示させるコードを記述したいのですが、
下のコピペを実行すると一番下のデータのまとまりのみの行の挿入で止まってしまい、
すべてのまとまりに行を挿入することができません。
申し訳ありません、どなたかお教えいただけませんでしょうか…。

Sub a()

Dim i As String

ActiveSheet.Select

i = Range("A65536").End(xlUp).Value

Range("A65536").End(xlUp).Select

Do While ActiveCell.Offset(-1).Value = i
ActiveCell.Offset(-1).Select
Loop

Selection.Insert Shift:=xlDown

End Sub

319 :303:02/10/17 07:13
>>311
おまえなめてんのか?!!!
全部全角じゃ問題あるのか?
と聞いてるだろうが!

無視か!てめえ覚えてろよ!

320 :名無しさん@そうだ選挙にいこう:02/10/17 09:34
>>318
i に格納した値とセルの値が違った時点でループが終わってるから...

Sub a()
    Dim i As String
    ActiveSheet.Select
    i = Range("A65536").End(xlUp).Value
    Range("A65536").End(xlUp).Select
    Do While ActiveCell.Row > 1
        If ActiveCell.Offset(-1).Value <> i Then
            Selection.Insert Shift:=xlDown
            i = ActiveCell.Offset(-1)
        End If
        ActiveCell.Offset(-1).Select
    Loop
End Sub

321 :ううう:02/10/17 22:26
>>303

あれ・・いや、別に無視のつもりでもなかったんだけど・・・。
頂いたアドバイス通り、全角で処理するように変えました。

でも、きみ何屋さん?えらく朝早い時間に書き込みだね。


322 :名無しさん@そうだ選挙にいこう:02/10/17 22:34
テキストデータを開かずに読み込んでセルに書き込みしたいんですが、
一行一行の「平成?年?月?日」という部分(数字部はランダム)を
削除してセルに書きたいんですが・・・

Do Until EOF(1)
Line Input #1, buf

rep = Replace(buf, "平成" & * & "年" & * & "月" & * & "日", "")

ActiveCell.Offset(i, 0) = rep
i = i + 1

Loop

とやってもうまくいきません。どなたかご存じの方、教えてください。

323 :名無しさん@そうだ選挙にいこう:02/10/17 23:28
>>322
なにがどううまくいかないんだ?
皆にもコード書いてやってみろっていってるのか?

324 :名無しさん@そうだ選挙にいこう:02/10/17 23:35
>>317
A
A
B
B
C
C
というデータを
<<A_Data>>
A
A
<<B_Data>>
B
B
<<C_Data>>
C
C
にしたいということ?

325 :SOS…:02/10/17 23:54
>>320
速レスくださり、ありがとうございます!
うまくいきました…感激。

>Do While ActiveCell.Row > 1(Activecellの行番号が1より大きい間は)

行番号って、こんな風に使えるんですね。

>i = ActiveCell.Offset(-1)(ActiveCellのひとつ上のセル)

のように変数の内容を変更することについても、全く考えが及びませんでした。
最上段のかたまりにも行を挿入したかったので、
Loopの後にも「Selection.Insert Shift:=xlDown」を記述して、
試作版の第一段階は無事成功しました。
Loopに関わるステートメントは、実践になると初心者には難しいです(汗

今、ラベルの表示に取り組んでいます。
またどうにもならなくなりましたら、書き込ませていただきますね。
本当にありがとうございました。

326 :名無しさん@そうだ選挙にいこう:02/10/18 01:15
>>322
> "平成" & * & "年" & * & "月" & * & "日"
この部分はたぶん
"平成*年*月*日"
って感じでワイルドカード指定したいんだろうけど、
そもそもRelpace関数にワイルドカードは指定できない。

Instr、Mid、Left、Len等の文字列操作関数を使って地道にやるとか、
正規表現がわかるならMicrosoft VBScript Regular Expression 5.5あたりを
ツール→参照設定してRegExpオブジェクトを使うとか。

327 :SOS…:02/10/18 01:45
>>317
レスありがとうございます!
はい、その通りです。
ただ、実際のデータベースでは、データはF列にあり、
ラベルを表示させたいのがA列なので、
なかなかうまくいかないのです。
Sub a()
Dim i As String
ActiveSheet.Select
i = Range("F65536").End(xlUp).Value
Range("F65536").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell.Offset(-1).Value <> i Then
Selection.Insert Shift:=xlDown
ActiveCell.Offset(0,-5).Value = i
i = ActiveCell.Offset(-1)
End If
ActiveCell.Offset(-1).Select
  Loop
    Selection.Insert Shift:=xlDown
    ActiveCell.Offset(0, -5).Value = i
 End Sub
320さん作を元にしてこのように記述しましたが、
324さんが例に挙げているようにA,B,C3つのかたまりがあったとすると、
ラベルは
1番上のかたまり(A)「挿入行+上に(1-1)の列」、
2番目のかたまり(B)「挿入行+上に(2-1)の列」、
3番目のかたまり(C)「挿入行+上に(3-1)の列」、
に表示されてしまいます。
「i = ActiveCell.Offset(-1)」
ループすることによって、この部分が影響しているのだと今気づきました。
どのようにすれば、うまくいくでしょうか…。

328 :名無しさん@そうだ選挙にいこう:02/10/18 02:47
>>327
問題は、F列のセルのみ下にずらして逝ってること。
行全体をずらすようにしたら?

> Selection.Insert Shift:=xlDown
Selection.EntireRow.Insert Shift:=xlDown

329 :SOS…:02/10/18 23:03
>>328
ありがとうございます!
おかげさまで、行の挿入まではうまくいきました。
実は、上記のコードを実際のデータベース上で動作させてみて、
ご指摘の部分に関わる不具合があり(F列しか行が挿入されない)、
行全体が挿入されていないことに先ほど気づいたところだったのです。
参考にしたマクロの記録が、行番号をクリックして行全体を挿入したものだったのと、
テスト用のコードがA列を参照するものだったのが原因でした。
実際の参照と同じ条件でテストしなくてはだめですね…激しく反省しています。

330 :名無しさん@そうだ選挙にいこう:02/10/18 23:10
>>326

参照設定必要か!?

Sub testRegex()
Dim Regex
Set Regex = CreateObject("VBScript.RegExp")
Regex.Pattern = "平成.*年.*月.*日"
MsgBox Regex.Replace("平成14年3月31日だぞ", "")
End Sub

インストールされている WSH と VBS のバージョンによると思う。

331 :名無しさん@そうだ選挙にいこう:02/10/19 01:19
>>330
「必要じゃない、けどVBEの補完機能が使えるから参照した方が楽。」
だと思ったんでああ書いたんだけどね。
ま、その辺は好きずきで(´ー`)

332 :322:02/10/19 11:53
>>326

MIDとLEFTで出来ました。ありがおうございました。

333 :名無しさん@そうだ選挙にいこう:02/10/19 17:13
1)指定されたオブジェクトの表示・非表示を制御する
2)複数オブジェクトを選択する

以上に該当するプロパティ・メソッドを教えていただきたいのですが・・・。

ちなみにデータが入力されている最後のセル番地を取得するのは、
Valueプロパティで良いのでしょうか?

334 :名無しさん@そうだ選挙にいこう:02/10/19 17:27
1-Visible
2-質問の意味がわからんかった。

ちなみに-質問の意味がわからんかった。

335 :333:02/10/19 17:32
>>334
どうもありがとうございます。

2については、自分でも良く分かってないんで、
こんなあいまいな書き方になってしまいました。
ヘルプも見てるんですが、どうにも欲しい情報が出てこなくて・・・。

336 :333:02/10/19 19:06
すいません、自己解決しました。

337 :Fu:02/10/21 00:05
他ブックを閉じる操作について質問します。

Application.Run で呼ばれた別ブックのマクロ中から,呼び出し元のブックを
閉じる操作をしたいのですが,Workbooks("呼び出し元.xls").close が全く動
かないのです。

環境:Excel 2000, Windows 2000 Professional

338 :だれか:02/10/21 00:32
アクセスのVBについて教えてくれる人いる??????????????????????????

339 :Fu:02/10/21 03:44
>>337 Workbooks("呼び出し元.xls").close が全く動かないのです。

すいません,状況書き間違えました。書き直します。

あるブックから Application.Run で呼ばれた別ブックのマクロ中で,呼び出
し元のブックを閉じる操作をしたいのですが,Workbooks("呼び出し元.xls").Close
を実行すると,呼び出された側のマクロがそこで終了し,その後の処理に進み
ません。

その後の処理では,Thisworkbook.Close として,呼び出された側のブックも
閉じてきれいさっぱりしたいのですが...

環境:Excel 2000, Windows 2000 Professional

340 :名無しさん@そうだ選挙にいこう:02/10/21 10:47
>>339
別ブックを Workbooks.Open(Filename) で呼び出すんじゃダメなの?

341 :名無しさん@そうだ選挙にいこう:02/10/21 14:24
ウチのエクセル、ファイル開こうとしたら
『読み取り専用ファイルか、読み取り専用の場所にアクセスしようとしています』
って出て、大事なファイルが開けなくなりました・・・
どうしたらいいんでしょう・・・
どうか皆様、教えて下さいm(__)m切実なんです・・・

342 :名無しさん@そうだ選挙にいこう:02/10/21 20:30
>339

何したいのか良く理解出来ない。

343 :ぽこん:02/10/23 21:52
仕事でシート毎の印刷設定を手差しから自動給紙に変更しているのですが、結
構シート数があるのでめんどくさい!ところが複数のシートをまとめて設定し
ても、変更されるのは最初の1枚のみ。マクロで操作を記録しようとしても記録
されません。どうしたらマクロでプリンタ設定の変更が出来るのでしょうか?
詳しい方教えていただけませんか?
( Windows2000 : Excel2000 )


344 :名無しさん@そうだ選挙にいこう:02/10/23 22:13
>>341

ぱちょこん再起動してやってみれ

345 :あははははは、:02/10/23 23:06
>>338
いないよ〜、きっと〜。

346 :ふむ:02/10/23 23:42
>>343
無理だと思ふが・・・

347 :名無しさん@そうだ選挙にいこう:02/10/25 01:17
>>343
俺もそれ悩んだことある。で、結局あきらめた。

348 :もみじや:02/10/27 06:58
>>343,>>347
SendKeyでやるしかないですぅ〜

349 :ぽこん:02/10/27 20:04
>もみじやさん
そうですか・・・でもSendKeyだとそれぞれ設定が違うので都合が悪いな、と思って。なんかWSH&レジストリでいじる方法があるみたいなんですが・・ちょっと調べてやってみます。どうもありがとうございました。

350 :名無しさん@そうだ選挙にいこう:02/10/27 20:19
http://yahooo.s2.x-beat.com/

351 :中坊(なかぼう):02/10/29 10:48
会社間のやり取りでメールに添付したエクセルが文字化けします

先方からきたエクセルは当方で解凍して開けるんですが、当方から

圧縮及びそのまま送ったエクセルの添付ファイルが開けません

どなたかお知恵を拝借できませんでしょうか?






352 :名無しさん@そうだ選挙にいこう:02/10/29 11:29
>351
お互いのバージョンが違うだけでは?

353 :中坊(なかぼう):02/10/29 11:45
かもしれませんね笑


354 :名無しさん@そうだ選挙にいこう:02/10/30 22:55
せんせー質問です
エクセルですが、例えば小遣い帳で日にちを
30日→1日の順に並べ替えたいときに
日付のところの順序を変えると、日付のみが
変更してしまいます。

これを、その日の使った金額も同時に並べ替えるときは
どうしたらいいのでしょうか?
よろしくお願いします。

355 :名無しさん@そうだ選挙にいこう:02/10/30 23:40
>>354 エクセル2002でできました。
エクセル2000でもできるんでしょうか?


356 :名無しさん@そうだ選挙にいこう:02/10/31 00:06
>>354 データ入ってる所を全部選択してから並び替え

357 :名無しさん@そうだ選挙にいこう:02/10/31 20:19
セルにある文字列を一文字づつ文字コードに変換したいんだけど、
下のようにやっても、-32667とかヘンな数字で返ってきます。
なんでですか・。


a = Len(ActiveCell.Value)

  For i = 1 To a

    Cells(i, 1).Value = CStr(Mid(ActiveCell.Value, i, 1))
    Cells(i, 2).Value = Asc(CStr(Mid(ActiveCell.Value, i, 1)))

  Next i


358 :名無しさん@そうだ選挙にいこう:02/10/31 21:01
>>357
マイナス値の場合には +65536 してください

359 :357:02/10/31 21:21
+65536したけど・・おかしい

360 :名無しさん@そうだ選挙にいこう:02/11/01 00:20
>>359
どういう文字がどういう結果になったの?



361 :357:02/11/01 00:37
例えば、「大」って文字、アスキーコードは16999なのに、-28187で返ってきます

362 :名無しさん@そうだ選挙にいこう:02/11/01 00:43
>>361
ASC関数はシフトJISコードで値を返すようです。

「大」はシフトJISコードで 91E5。 10進数にすると37349。
ここから65536を引くと -28187

363 : :02/11/01 01:14
>>354
幼稚園児ですか?脳が悪いね。

364 :Excelで在庫分析:02/11/01 17:16
先人の知恵をお借りしたくまかりこしましてございます。

とあるExcelファイルにあるマクロモジュールを
独立した別ファイルにして共通化し、
複数のファイルで利用したいのですが、これって可能でしょうか?

ちょっと調べてみると
call関数で外部DLLなるものを呼べるらしいのですが2002限定みたいだし…。

一応VBAとオブジェクト指向言語は理解しています。
ご存知の方いましたらよろしく御願いします。




365 :名無しさん@そうだ選挙にいこう:02/11/01 17:58
>>364
PERSONAL.XLS使うんじゃダメなの?

366 :名無しさん@そうだ選挙にいこう:02/11/01 19:12
>>365
その手がありましたね。
あと、調べてみたらアドインアプリケーション(DLLじゃなくxlaのほう)を用いても
実現できそうです。
各端末への実装を考えるとこっちのほうが簡単かも?

アドヴァイス有難うございました。

367 :名無しさん@そうだ選挙にいこう:02/11/01 21:02
どなたか助けてください。

1.社内メールで、マクロ入りのExcelファイルがきますた。
2.開けて、マクロを有効にしてファイルの中味を確認しますた。
3.特に保存などはせず、メールのまま留め置きました。
4.「さて、自分の仕事にとりかかるか」というわけでExcel起動。
5.データ作成を1時間ほど。この間、右クリックは使用せず。
6.新しいデータ作成に入り、右クリック!
7.いきなり右クリックメニューの一番上に、
  「○○の一括コピー」という変なメニューが!
   ちなみに○○は本社のデータ名。
8.こんな変なメニューは削除したいんです。
  で、メールもファイルも全部削除してみますた。
   でも削除できないんです。ううっ・・・(泣)
ちなみに、この一括コピーという奴を使ってみると、
「●●のファイルが見つかりません。」と出て、それきりです。
●●は、メールで送られて来た添付ファイルの名前です。

明快な回答はもちろん、推測でもなんでもOKです。
いったい俺のパソコンの中で何が起こったんでしょうか。
助けてください。よろしくお願いします。

368 :名無しさん@そうだ選挙にいこう:02/11/01 21:49
>367

Sub aaa()
 Application.CommandBars("CELL").Reset
End Sub

369 :名無しさん@そうだ選挙にいこう:02/11/01 23:14
>368
ありがとうございます!
今自宅なんで、明日出社したらすぐ入れてみます!
明晩結果をカキコしますので、よかったらまた読んでください。
ありがとうございました。

370 :367:02/11/02 00:24
>369

Sub MenuAdd()
  With Application.CommandBars("CELL").Controls.Add(before:=1)
      .Caption = "Click Me"
      .OnAction = "ShowMsg"
  End With
End Sub

'--------------------------------------------------------------
Sub ShowMsg()
  MsgBox "キタ━━━━(゚∀゚)━━━━!!!"
End Sub

'--------------------------------------------------------------
Sub MenuReset()
  Application.CommandBars("CELL").Reset
End Sub

371 :助けてください:02/11/02 07:31
なぜかわからないが、家のPCのエクセルがおかしくなりました。
office2000なんですが、エクセルを立ち上げると、ワークシートしか
出てこなくて、メニューバーもツールバーもありません。
このままでは非常に使いづらいので、どうすれば復活するのでしょうか?

ちなみに一度アンインストールして、再度インストールしてもダメでした


372 :bloom:02/11/02 07:43

http://homepage.mac.com/bloombloom/

373 :名無しさん@そうだ選挙にいこう:02/11/02 12:06
>>371
http://pc.2ch.net/test/read.cgi/pcqa/1035430388/72


374 :367:02/11/02 21:30
>>367です。
セル上での右クリックは元通りになりますた!
ありがとうございました!

しかし、行番号・列番号上で右クリックすると
やっぱまだ残ってるんです。余計なのが。
どうしたらいいんでしょうか・・・。
引き続きご教授願えたらと思います。
どうかよろしくお願いします。

>>370
いぢわる。




375 :368:02/11/02 22:12
>374

Cell を Row や Column に変える。

370もオレだよ。
どうやるか教えただけ。

376 :367:02/11/02 22:26
>>375
そ、そうですたか(汗
すんません。
だって真ん中にキタ━━━━(゚∀゚)━━━━!!!"
とか入ってるからからかわれてるとか思っちゃって。
激しく初心者なもんで・・・。
早速やってみます。
ありがとうございました。

377 :助けてください:02/11/02 23:37
371です
>>373
どうもありがとうございました。
復活しました

378 :名無しさん@そうだ選挙にいこう:02/11/03 09:11
 会員名 年齢 住所 コース名 入会日
**中嶋 あき  27 川崎市川崎 法人A 1999/6/15
 佐々 舞子 43 横浜市都筑区 シングルA 2000/8/1
++富樫 直子 29 横浜市戸塚区 シングルA 1999/7/30
**中嶋 あき 27 川崎市川崎 法人A 1999/6/15
++富樫 直子 29 横浜市戸塚区 シングルB 1999/7/30

↑のようにユーザーフォームからデータを入力しています。
"**"のようにまったく同じ値があったときその値を削除したいのです。
しかし"++"のように名前は同じなのですがコース名や入会日が違う場合は
削除をいきなりするのではなくメッセージボックスで削除するかそのまま記録するか
選べるようにしたいのですが可能なのでしょうか?
重複だけに重複しているかもしれません・・・
いろいろ検索してみたのですが思うようにいきませんでした。
よろしくお願いいたします。


379 :378です。:02/11/03 11:06
↑は無視してください

380 :366:02/11/05 15:31
アドインファイルの作り方や参照設定の方法は
ヘルプやHP見て分かりましたが
肝心のアドイン内関数の呼び出し方法がわからない。・゚・(ノД`)・゚・。

単に共通化したいモジュールをエクスポートしてまとめて.xlaファイルにしただけじゃ
だめですよねぇ…

381 :もみじや:02/11/07 00:29
Publicの関数やプロシジャは素で呼び出せたと思いますが?
できなかったっけ・・???

382 :名無しさん@そうだ選挙にいこう:02/11/08 20:26
Excel2000を使用しています。
基準年月,店番,分類,売上金額
200209,105,B,20000
200210,100,A,10000
200210,105,B,20000

のようなレイアウトの表を基準年月で抽出したあと、
店番(行)×分類(列)のクロス集計した表を作成しようとしています。
そこで、2つの方法を考えました。
1.2次元配列を宣言し、該当するレコードについて対応する配列要素に加算する
  加算が終わったら、二次元配列から集計表に編集する
2.レコードについて一端、以下のように表のレイアウトを変更
 基準年月,店番,分類A金額,分類B金額,・・・・・
200010,100,10000, 0,・・・
200010,105, 0,10000,・・・
 集計表ではsumif関数で集計するシートを使う

ですが、どちらもスマートなやり方に思えません。
もっと簡単な方法はありませんか?

383 :382:02/11/08 20:29
なお、二次元配列を宣言、とあるように、
店番の数、分類の数ともに固定と判断されて結構です。

384 :名無しさん@そうだ選挙にいこう:02/11/08 22:37
EXCEL2000を使っています。

 A:ドライブ(FD)に「平成14年11月8日」と言う具合に、その日のデータを保存し
ています。毎日のデータを保存するのにファイル名に日付を入れているのですが、
マクロで毎日のデータ保存を自動化したいと思い下記の様に自動記録してみました…

------記録されていたマクロ------
Sub Macro1()
ChDir "A:\"
ActiveWorkbook.SaveAs Filename:="A:\平成14年11月8日.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
------以上------

このマクロを実行するとファイル名が"A:\平成14年11月8日.xls"となってしまいます。
 明日の9日には"A:\平成14年11月9日.xls"という様に別のファイル名で保存したいの
ですが良い方法は無いでしょうか?
 特に「平成XX年XX月XX日」にはこだわりませんので、ファイル名が重複しなければ
構わないのです。

何処かのセルに「=TODAY()」関数(表示形式=平成14年11月8日)を入れておきそのセル
をファイル名に使うようにするとか…

どなたか、御教示頂けないでしょうか。。。


385 :玩具:02/11/08 22:38
大人の玩具激安販売!!
ピンクローター190円!!
その他商品どこよりも安いですよ!
http://www.king-one.com/


386 :名無しさん@そうだ選挙にいこう:02/11/08 23:27
>>384

Sub savebook()
Dim saveName As String
 saveName = "A:\" & Format(Date, "ggge年mm月dd日") & ".xls"
 ActiveWorkbook.SaveAs saveName
End Sub


387 :名無しさん@そうだ選挙にいこう:02/11/08 23:29
>>382

ピボットテーブルで出来ない事なのか?

388 :382:02/11/09 00:55
>>387
手作業でやるなら、ピボットテーブルは真っ先に選択肢に
あがるのですが・・
検索条件をセルに入力してボタンを押すとクロス集計して、
その項目を使ってさらに計算をしたいのです。

389 :名無しさん@そうだ選挙にいこう:02/11/09 08:52
データをソートするときにアルファベット順や数値順じゃなくて、
自分で比較する関数をつくってソートできないでしょうか?

390 :384です。:02/11/09 11:06
>>386
 完璧です、有り難う御座います。
早速ボタンを作りました。


391 :超初心者:02/11/10 17:07
C列からL 列にある100個のデータの平均をA列に
出力したいんですが下のマクロではエラーがでます。
下から2行目がおかしいと思うのですがどう直したら
いいんでしょうか?ご教授お願いします。


For i = 1 To 100

Cells(i , 1).Select

ActiveCell.FormulaR1C1="=AVERAGE(Range(Cells(1 , 2+i),Cells(10 , 2+i)))"

Next i

392 :名無しさん@そうだ選挙にいこう:02/11/10 18:49
>>391
オブジェクトはワークシート関数の中じゃ使えないよ
だから
ActiveCell.Formula="=AVERAGE(" & Range(Cells(1 , 2+i),Cells(10 , 2+i)).Address & ")"
こんな風にしないとダメなんだけど・・・

もしかして
For i = 1 To 100
Cells(i,1).Formula="=AVERAGE(C" & i & ":L" & i & ")"
Next i
ってしたいんじゃ?

393 :357:02/11/10 19:00
>>391

For I = 1 To 10

Cells(I, 1).Select

ActiveCell.FormulaR1C1 = "=AVERAGE(Range(Cells(1 , " & 2 + I & "),Cells(10 , " & 2 + I & ")))"

Next I


394 :名無しさん@そうだ選挙にいこう:02/11/10 19:04
わざわざコードを書く理由は…単に学習中ということなのかな

395 :391:02/11/10 21:55
>>392 >>393
ありがとうございました。392さんの上の式できちんと動きました。
>オブジェクトはワークシート関数の中じゃ使えないよ
勉強になりました。これからも精進します。

396 :名無しさん@そうだ選挙にいこう:02/11/11 00:08
エクセル95で作った、VBA(マクロ?)が
エクセル2000でうまく動作しません。
どういう問題があるのでしょうか?

397 : :02/11/11 00:09
http://www2a.kagoya.net/~adults-toybox/sample1.wmv
http://www2a.kagoya.net/~adults-toybox/sample2.wmv
http://www2a.kagoya.net/~adults-toybox/

398 :名無しさん@そうだ選挙にいこう:02/11/11 00:30
>>396
どの部分が動かないのでしょう?
オブジェクトの体系や仕様が変更されているので、動かないものが若干あります。
特にダイアログのコントロールやグラフ周り。
また、WorksheetをMoveすると、そのワークシートのオブジェクト変数がインスタンスを見失うというバグらしきものもあります。

399 :396:02/11/11 02:06
>>398
他人が作ったものなのでソースをあまり見ていないのですが
>特にダイアログのコントロールやグラフ周り。
>また、WorksheetをMoveすると、そのワークシートの
>オブジェクト変数がインスタンスを見失うというバグらしきものもあります
まさに関係しています。
どうやら修正しないといけないみたいですね。
回答、ありがとうございました。

400 :名無しさん@そうだ選挙にいこう:02/11/11 15:21
VBAマクロを使用した業務計算で
どうしても結果がおかしい為動作を追ってみると、
i = 4.5
として、それを丸める(四捨五入)する部分で
round( i )
の結果が4になっているらしいのです。
仕方なく
Application.WorksheetFunction.Round( i , 0 )
として修正したのですが、
VBAとワークシート関数で動作が違うのは仕様なのでしょうか?


401 :400:02/11/11 15:27
あ、ちなみにExcel2000 SR-1です。


402 :名無しさん@そうだ選挙にいこう:02/11/11 17:49
>>400
仕様

参照:
http://support.microsoft.com/default.aspx?scid=kb;ja;JP194983
http://support.microsoft.com/default.aspx?scid=kb;ja;JP196652

403 :400:02/11/11 18:06
ぐはっ
マジで仕様だΣ(゚Д゚;)

ひどいよぅ…そんなのヘルプにまったく書いてない……。・゚・(ノД`)・゚・。



404 : :02/11/12 11:21
エクセルのブックをカンマ区切りのCSVにして保存したいのですが、
シートが複数ある場合、ブックをまるごとCSVに変換して保存って
普通の使い方だと出来ないですよね??
VBAを使えば出来るものなのでしょうか?
もし可能ならチャレンジしてみたいと思います。


405 ::02/11/12 21:48
>404
普通の使い方っていうのがよくわかりませんし、
私自身知りませんが、VBAなら可ですよ。

406 :名無しさん@そうだ選挙にいこう:02/11/12 23:09
>404

VBAで出来るかって意味が、複数シートを持つCSVファイルを
作れるかって意味なら不可能。

1シート1ファイルなら、こんな感じで可。

Sub aaa()
Dim ws As Worksheet
 For Each ws In ActiveWorkbook.Worksheets
   ws.SaveAs FileName:="C:\WINDOWS\デスクトップ\" _
          & ws.Name & ".csv", FileFormat:=xlCSV
 Next ws
End Sub

407 :404:02/11/14 11:25
>405
普通の使い方=マクロとかVBAとか使わないっていう意味です。
初心者なので(汗)

>406
ありがとう!完璧です!
ついでにもうひとつ質問させてください。
複数のシートを持つブックのデータ
をシートごとにでなく、全てのシートひとつのCSV
にまとめて出力することって出来ますか?

408 :じゃっく:02/11/14 15:35
>>407
1.すべてのシートをひとつの(仮の)シートにコピペしてからCSVで保存
2.シートごとにCSV保存してからそれらのファイルをひとつに結合

どっちも手作業またはVBAで可。
2の結合ではDOS窓でcopyコマンドが使える。
[ツール]-[マクロ]-[新しいマクロの記録] から勉強してみそ。

409 :名無しさん@そうだ選挙にいこう:02/11/14 20:57
一つ教えてけろっぴ。
ワークシート上で、例えば列Eのセルに書き込んでエンターキーを押せば、
必ず一つ下の行でC列のセルに移行するというプログラムを組んでるが
わからんち。。。
教えてけろ・・・打ち込み作業なのでマウスで戻るのが面倒・・・。ぁぅ


410 :名無しさん@そうだ選挙にいこう:02/11/14 21:55
>>409
質問の意味が良くわからんけど、
C4に入力→[TAB]キーでD4に移動→
D4に入力→[TAB]キーでE4に移動→
E4に入力→[Enter]キーでC5に移動→...
ではいかんの?


411 :406:02/11/14 21:56
>407

1.同一ブック内の全シートを対象にしている。(このブックにソースを仕込む)
2.全部シートとも同じ列数(行数は不問)で、1行目はタイトル行。
3.テキトーなエラー処理しかしてない。

Sub bbb()
Dim wb As Workbook, r As Range, ws As Worksheet, Cnt As Integer
 Set wb = Workbooks.Add(xlWBATWorksheet)
 Cnt = 0
 For Each ws In ThisWorkbook.Worksheets
  ws.Activate
  If Cnt = 0 Then
   Set r = ws.UsedRange
   r.Copy wb.Worksheets(1).Range("A65536").End(xlUp)
  Else
   With ws.UsedRange
    Set r = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
    r.Copy wb.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0)
   End With
  End If
  Cnt = Cnt + 1
 Next ws
On Error GoTo ERR:
 wb.SaveAs FileName:="C:\WINDOWS\デスクトップ\" _
  & wb.Worksheets(1).Name & ".csv", FileFormat:=xlCSV
 wb.Saved = True
 wb.Close
ERR:
 Set wb = Nothing
End Sub

412 :409:02/11/14 21:57
>>410
説明が下手ですまんです。
貴方の書き込んだ内容をそのまま利用すると・・・
E4に入力してエンターしたら、C5に移る様にしたいんです。

413 :406:02/11/14 22:01
>>412

マルチうざいぞ。
>410の方法で出来る、少しは考えろ。

414 :409:02/11/14 22:08
>>413
オマエモナー
俺は必死なんだ。
ひたすらセルに打つ込む作業において、少しでも時間短縮を
目指しているの。作業が早く進めばそれだけ納入が早く済むし。

415 :名無しさん@そうだ選挙にいこう:02/11/14 22:16
>>409
おまえ日本語わからないのか?
紙のような410が教えて下さったんだからウセロヤ

416 :名無しさん@そうだ選挙にいこう:02/11/14 22:19
>>414

Excel総合相談所8
http://pc.2ch.net/test/read.cgi/bsoft/1033983470/

こっちで教えてやる。

417 :名無しさん@そうだ選挙にいこう:02/11/15 13:42
エクセル出作ったユーザーフォームの中のテキストボックスに
コマンドボタンで作業を行った後フォーカスを合わせるのってどうやればいいんだろ

418 :質問です:02/11/15 13:59
XPのエクセルでアドインを使って分析ツールを組む込み、
そのツールをマクロを使って作業しようとすると
「ファイルが見つかりません。ファイル名、保存場所を確認しろ」
とでるので、確認したらきちんとファイルはありました。
検索したファイルをクリックするとマクロは動くのですが
保存してもう一回開くと同じ現象が起きます。

どうすれば正常になりますか?おしえてください。

419 :名無しさん@そうだ選挙にいこう:02/11/15 16:21
>>417
TextBox1.SetFocus

420 :417:02/11/15 16:59
それだとエラーになるのよね
アクセスのVBAならそれで問題ないんだけど

421 :419:02/11/15 17:03
>>420
どのタイミングでどういうエラーが出るのよ。
うちの環境じゃ普通に動くが(Win2k/Excel2k)

422 :417:02/11/15 17:18
えっとね。
win2kのExcelXP
でどこでエラーが出るかというと
TextBox1.SetFocus
の行で黄色くなってとまるのよ
エラーのメッセージは忘れてしまったけれど
TextBox1がないとかいうお馬鹿なことはしてないんだ
もう少し自分で考えてみる、もしかしたらこの行の . と , を違えてるかもしれない。

423 :419:02/11/15 17:21
>>422
.Enabled = False や
.Visible = False だと
エラー出るからその辺もチェックしれ (´ー`)

424 :名無しさん@そうだ選挙にいこう:02/11/16 16:25
マクロまたはVBA使うと(それ以前の状態に戻す)
元に戻すが使えなくなってしまうのですが、
どうにかならないんでしょうか?
もしくはこれを可能にするソフトってあるんでしょうか?


425 :名無しさん@そうだ選挙にいこう:02/11/16 17:17
>424

どうにもならない。
作業途中に世代バックアップでも取っておくしかない。

426 :名無しさん@そうだ選挙にいこう:02/11/20 01:37
OS・Excelともにバージョンは98です。
F3:F250の範囲に文字列が入力されているセルがあれば1に置換え、
同じようにG3:G250の範囲の文字列が入力されているセルには2を置換えるコードを書きました。

Range("F3:F250").SpecialCells(xlCellTypeConstants, xlTextValues).Value = 1
Range("G3:G250").SpecialCells(xlCellTypeConstants, xlTextValues).Value = 2

…が、必ずしも毎回文字列が入力されているとは限らないので、
エラーが起きないよう「IF…Then…Else」ステートメントを使って条件分岐しようとおもうのですが、
「F列に文字列が入力されたセルがある場合」というコードの記述の仕方がわかりません…。
すみません、どなたかお分かりになる方がいらしたら教えていただきたいです…困っています。
よろしくお願い致します。

427 :名無しさん@そうだ選挙にいこう:02/11/20 06:21
>>426

On Error Resume Next
Range("F3:F250").SpecialCells(xlCellTypeConstants, xlTextValues).Value = 1
Range("G3:G250").SpecialCells(xlCellTypeConstants, xlTextValues).Value = 2

で良いのでは?

428 :じゃっく:02/11/20 11:39
>>426

Dim oCell As Range
For Each oCell In Range("F3:F250")
If oCell.Value <> "" Then oCell.Value = 1
Next
For Each oCell In Range("G3:G250")
If oCell.Value <> "" Then oCell.Value = 2
Next

視点がちょっと違ったかな?

429 :426:02/11/20 20:54
>>427>>428
ありがとうございます〜!
428さんの方法も考慮にいれていたので、おふたりからそれぞれの方法を伺うことができ、
本当に、本当に助かりました(涙)。
ご親切に感謝しています、ありがとうございました。

さあ、がんばって続きを作成します!

430 :名無しさん@そうだ選挙にいこう:02/11/25 18:17
VBAのヘルプ ウザ過ぎ
「なんでイチイチEXCELの画面を小さくするんじゃぁゴラァ」
と画面に吼えてしまう今日この頃

431 :名無しさん@そうだ選挙にいこう:02/11/25 22:28
OS・Excelともバージョンは98です。
締め切り直前でバグが見つかりました。どなたかヘルプをおながいできないでしょうか…(号泣)

A列のセルにデータを入力すると指定のセルに日付を表示させるコードを書きました(下記)。
入力の際「Enter」を押せば指定のセルに日付が表示されるのですが、
入力時に「Tab」を押してしまう可能性も出てきたため(その場合は当然アクティブセルの位置も変わるので日付表示の位置がずれる)、
「Tab」を押した場合でも条件分岐をして指定のセルに日付を表示させたいのです。
アクティブセルが下に移動するか横に移動するかのコードが判ればできそうなのですが…。
申し訳ありません、ご存知の方、何卒お助けくださいまし。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "" And Target.Column = 1 Then
ActiveCell.Offset(-1, 14) = Date
End If

End Sub

432 :名無しさん@そうだ選挙にいこう:02/11/25 22:40
初めまして。質問させてください。

中堅企業の経理で働いています。最近、パソコンに詳しい男性が突然
辞めてしまって、部署でVBAを使える人がいなくなってしまいました。
情シス部の人に教えてもらおうにも、相手も忙しくていちいち質問に
答えてもらえません。マクロが書いてある資料がたくさんあるのに
なんのことかさっぱり分からなくてお手上げ状態です。

事実上業務を引き継いだのが私なので、こうなったらVBAなるものを
習得するしかないと悟ったのですが、みなさん最初は学校のような
所に通われたのでしょうか?私はエクセルは毎日普通に使っていて、
社内の上級研修までは済んだのですが、マクロは一切やったことが
ありません。年度末の決算資料作成に間に合うように、VBA使いに
なりたいのですが、どなたかアドバイスを下さい、お願いします。

433 :名無しさん@そうだ選挙にいこう:02/11/25 22:46
>431

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
 For Each r In Target
  If r <> "" And r.Column = 1 And r.Row <> 1 Then
    r.Offset(-1, 14) = Date
  End If
 Next r
End Sub

434 :名無しさん@そうだ選挙にいこう:02/11/25 22:49
>>432

自動記録

435 :名無しさん@そうだ選挙にいこう:02/11/25 22:56
>>432
VBAヘルプをインストールする。
新しいマクロの記録で動作をトレースしてコードの内容をヘルプを見ながら確認。
Q&Aサイトをここを含めていくつか回ればわざわざ習いに行かなくても大体のことはわかる。
でもマルチポストはきらわれるのでやっちゃだめだよ。

436 :名無しさん@そうだ選挙にいこう:02/11/25 22:57
>>432
http://www.moug.net/index.htm
このサイトと、そこで申し込めるメーリングリストがいいと思う。
最初の頃はかなりお世話になったし、今でもお世話になってるよ。
あとは自分に合った本を探して買おう!

437 :名無しさん@そうだ選挙にいこう:02/11/26 00:08
こんにちは。乱数の発生について悩んでいます。
@統計的バラツキ(標準値nを基準とした標準偏差σに基づく分布)をもった
 ある一定の範囲内の乱数を発生させることができますか?
AAとBの二つの値がありAもBもある数値の範囲内で、
しかも[A−B]<Xとなる条件に基づく乱数A,Bを発生させることが出来ます
か?
B条件付書式で3つ以上の振り分けをしたいときどうすればいいですか?
こういうのはエクセルでは不可能?



438 :名無しさん@そうだ選挙にいこう:02/11/26 00:26
社内の上級研修でVBAは教わってないのか?
どこが上級なんだよ。

439 :432:02/11/26 01:01
ありがとうございます。みなさんすごく親切で感激しています!

>>434 さん
なんの事か最初分からなかったのですが、なんとなく分かりました。
作業を覚えてもらうんですよね・・・?ありがとうございますやってみます。

>>435 さん
そのヘルプのインストールからやらないとダメな状況です。
明日朝一で入れます。ヘルプ見れば、コードの内容が分かるんですね!
それすら知らなかったです。すごく助かりました。ありがとうございます。
それからマルチポストはダメですね、覚えました

>>436 さん
早速見てきました!エクセルVBAと一般に申し込もうと思います。
本も明日探します!嬉しいですありがとうございます。

>>438 さん
ここのみなさんから見れば、レベルが低くてびっくりしますよね。
うちでは、電源を入れるのから始めるのが初級なんです。
上級ではピボットテーブルが限界なんです。古い会社で恥ずかしいですが。
でもがんばります。


440 :名無しさん@そうだ選挙にいこう:02/11/26 02:06
突然ですがMaskEdBoxコントロールには、
textAlignプロパティなる物は存在しないのでしょうか?
vbCenterにしたいのにどうしても出来ません。困り果てています
誰か知っている方、お教えください・・・一生のお願いです。

441 :名無しさん@そうだ選挙にいこう:02/11/26 08:03
>>432
>>438にもレスしてるのが気に入った。
今は初心者でもやる気があればどうにでもなる。
頑張れ。

442 :らくだ:02/11/26 11:55
どなたかお助けください。

VBA自体のフォントがおかしいです。斜体みたいなのでつぶれてます。
コマンドの所はツールで設定できますが、アプリケーション自体のフォントがおかしい。

どなたか教えてください。Exel2000です。

443 :名無しさん@そうだ選挙にいこう:02/11/26 13:00
>>442
Office2000のバグです。
以下のMSのサイトに修正ファイルがあります。

http://office.microsoft.com/japan/downloads/2000/O9VBEupd.aspx

444 :名無しさん@そうだ選挙にいこう:02/11/26 13:26
ユーザーフォームにテキストボックス1~4を作ってコマンドボタン(開始)を
作ったのですが、開始を押すとpcがフリーズしてしまいます。
いったいなぜでしょうか。また、要は、テキストボックスに何も書き込まれてないものがあったら
マクロをはじめないで注意文を出すようにしたいのですがもっと簡潔なヤリカタなどありましたら教えてください。
  s = TextBox3.Text
w = TextBox2.Text
a = TextBox1.Text
組成 = TextBox4.Text
Do Until s = True
If s = "" Then
MsgBox "Input cell [number]!"
Exit Sub
End If
Loop
Do Until w = True
If w = "" Then
MsgBox "Input cell [constant]!"
Exit Sub
End If
Loop
Do Until a = True
If a = "" Then
MsgBox "Input cell [name]!"
Exit Sub
End If
Loop
Do Until 組成 = True
If 組成 = "" Then
MsgBox "Input cell [composition]!"
Exit Sub
End If
Loop

445 :らくだ:02/11/26 13:50
>>443
ありがとうございました。治りました。

446 :bloom:02/11/26 14:58

http://www.agemasukudasai.com/bloom/

447 :じゃっく:02/11/26 15:00
>>444
なんで Do〜Loop でくくってあるの?
特に理由がなければ Do および Loop で始まる行を
すべて削除(コメントアウト)してしまえば期待している
動きになると思うが?


448 :444:02/11/26 15:15
なるほど。じゃぁ
If s Or w Or a Or 組成 = "" Then
MsgBox "date is NOT accurate"
Exit Sub
End If
はどうしてエラーがでるんですか?
また、ユーザーフォームってのは標準モジュールのときみたいにツールバーに登録して直接起動できないものなのですか?

449 :名無しさん@そうだ選挙にいこう:02/11/26 16:02
>>448
> If s Or w Or a Or 組成 = "" Then
この条件式が間違い。

> また、ユーザーフォームってのは標準モジュールのときみたいにツールバーに登録して直接起動できないものなのですか?

フォームを開くコードを標準モジュールに書いて、それをボタンに割り当てる。

450 :444:02/11/26 16:08
では
If s= "" Then ・・・・endif
を繰り返すしかないと?



451 :448:02/11/26 16:52
>>450
> If s Or w Or a Or 組成 = "" Then

If s= "" Or w= "" Or a= "" Or 組成 = "" Then

452 :449:02/11/26 16:53
>>451
448じゃなくて449ですた。

453 :444:02/11/26 17:04
解決です。
感謝。

454 :じゃっく:02/11/26 18:38
>>444 ちょっとおせっかいになるけど…

そもそも >>444 のコードはボックスごとに空文字列かを調べて、
それに従ってメッセージボックスに表示するメッセージも変えた
かったんじゃないの?そうでなければ…

If s & w & a & 組成 = "" Then

という構文が可能。And じゃなくて & を使っている理由とか、

> If s Or w Or a Or 組成 = "" Then

がなぜ間違いなのかを調べておいたほうがいいと思うよ。
多分また同じような間違いをすると思うから。

455 :名無しさん@そうだ選挙にいこう:02/11/26 20:05
>>444

Private Sub UserForm_Initialize()
 TextBox1.ControlTipText = "[number]"
 TextBox2.ControlTipText = "[constant]"
 TextBox3.ControlTipText = "[name]"
 TextBox4.ControlTipText = "[composition]"
End Sub

'-------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim tBox As Control
For Each tBox In UserForm1.Controls
 If tBox.Name Like "TextBox*" Then
  If tBox.Text = "" Then
    MsgBox "Input Cell " & tBox.ControlTipText & " !"
    Exit Sub
  End If
 End If
Next tBox
MsgBox "OK! No Problem"
End Sub

456 :444:02/11/27 00:33
>>447 & 449 & 451 & 454 & 455
あなた方は神だ。
早速調べてみよう。

457 :名無しさん@そうだ選挙にいこう:02/11/27 10:47
エクセル初心者です
ユーザーフォームの設定で%表示ができません
小数点表示になってしまう
これはどこで表示属性の設定をすれば良いのでしょうか

458 :名無しさん@そうだ選挙にいこう:02/11/27 11:30
文字列として表示Sるのでしたら[']を最初にいれてください。

459 :名無しさん@そうだ選挙にいこう:02/11/27 12:20
Private Sub TextBox13_Change()
With Worksheets("予算")
TextBox13.Value = Format(.Cells(69, 2).Value, "#%") '%
End With
End Sub
予算というワークシートの69行2列目をユーザーフォーム
のテキストボックス13に%で表示したいのだがこれだと
ダメなんです

460 :じゃっく:02/11/27 12:35
>>459 ’%’が全角になってない?

461 :404:02/11/27 16:38
>406
めちゃレスおそでスマソX1000です。
完璧な解答ありがとうございます!!
あなたは真の神!!

462 :431:02/11/27 22:38
>>433
ありがとうございます、完璧に動作しました…(涙)。
Activecellではなく、TargetAddressを基点にすればいいのですね!
初心者につき、ついついActivecellに頼りがちなんです…また一つ勉強になりました。
ご親切にお応えできるよう、今後も精進致します。
本当にありがとうございました。遅レスをお許しくださいませ。

463 :うい:02/11/29 01:22
こんばんわ VBA初挑戦なんですが
テキストファイルを
数字のファイル名の小さい順にブックとして開き
その後のデータ処理までさせたいのですが

例えば、
0.txt →処理
0.5.txt →処理
0.9.txt →…
1.5.txt




どのようにすればと、、悩んでます。
どなたか良い知恵をご教授ください

464 :名無しさん@そうだ選挙にいこう:02/11/29 01:41
>>463
情報が少なすぎ。。

465 :うい:02/11/29 02:59
>>464
うーむ。。(´-`).。oO( どこだろう…)

タブ区切りのtxtファイルをブックとして開き、
そのB列C列にある数字のAVERAGE(B20:B1020)と
(C20:C1020)を求め
新しいBook1を開き、
B列C列にそのAVERAGE値を
ファイルNoが小さい順に、上から収めていきたいのです。
Noの数、値は未定です。

(Book1)
A列 B列 C列
ファイルNo 平均1 平均2
0 … …
0.5 … …
0.9 ↓
1.5



466 :名無しさん@そうだ選挙にいこう:02/11/29 13:44
>>465
ファイル操作の問題だね。
ファイル名の文字列を解析して開いてやればいいでしょ。
Office2000以上ならFSOオブジェクトを使ってファイル操作してみ。

467 :名無しさん@そうだ選挙にいこう:02/11/29 14:42
ども、BSじゃなくム板に行くべきだったか?と思ったら上にあったんでたすかりました。

質問:Excel2000のセル入力 a@com[Enter] で、自動にハイパーリンクされない手段ありませんか?

文字データとして入力させるだけなのにリンクが貼られると誤入力の直しがつらい
さらに「ハイパリンクの削除」を行うと書式が変更、罫線の上が無くなります。
原因はスタイルにハイパリンクがあること、しかもこれ、スタイル削除しても自動で作ります。

問題なのは、間違いでクリックするとメーラが起動されることと
マクロで0文字を代入するだけでセルクリアすると、次に AAA と入力してもリンク表示、
しかしクリックも右クリックから削除も出来ない状態に。

無理矢理対処するにはセルチェンジイベントで、
リンク削除 → 書式クリア → あらかじめ用意しておいた別セルから書式だけコピー
以外に方法がない。

 □ 自動的にハイパーリンクの作成を行う。
チェックボックスないですか? 長々御無礼

468 :名無しさん@そうだ選挙にいこう:02/11/29 14:53
>>465
dim fp as integer
dim rb as string
Shell "Dir /B/ON *.txt > _2ch.tmp"
fp=freefile()
open "_2ch.tmp" for input access read as #fp
do until eof(fp)
line input #fp,rb
call sub開いて平均計算して値コピーしてシート開放Proc(rb)
loop
close #fp


469 :うい:02/11/29 22:18
>>468
ありがとうございます。
がんばって理解してみます。


470 :名無しさん@そうだ選挙にいこう:02/12/02 09:02
字下げてすと

if hoge=3 then
<br>msgbox "hage"
end if


471 :名無しさん@そうだ選挙にいこう:02/12/02 09:13
If hoge Then
a = 1
End If


472 :名無しさん@そうだ選挙にいこう:02/12/02 09:16
汚してスマソ
どうやたららインデントが入るのじゃ?
知ってる人教えてください。
おながいします。

473 :名無しさん@そうだ選挙にいこう:02/12/02 11:45
>>472
If hoge Then
    a = 1
End If
&nbsp;でいつも入れてるけどな

474 :名無しさん@そうだ選挙にいこう:02/12/02 11:57
>>472
インデントを入れるってVBAのスクリプト内でのことか?
それならインデントを入れたい業の頭でタブキーでいいと思うが

475 :名無しさん@そうだ選挙にいこう:02/12/02 12:32
>>468
勉強になります!サンクスコ!

476 :名無しさん@そうだ選挙にいこう:02/12/02 13:59
If Sheets("Sheet1").Cells(i, 1).Value = "ほにゃらら" Then
  Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(i, 2).Value
End If

という風にしてSheet1から必要なセルだけをSheet2に移動させようとしてるのですが、
If 〜 Thenの行で「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」
と出てしまいます。何がいけないのか教えてください。
よろしくお願いします。m(__)m

477 :名無しさん@そうだ選挙にいこう:02/12/02 15:14
>>476
そのままで動作するはずだけど?

478 :470〜472:02/12/02 15:16
再テスト

if hoge then
<nbsp;> a=1


479 :470〜472:02/12/02 15:18
if hohe then
< > hage

  hage

480 :名無しさん@そうだ選挙にいこう:02/12/02 15:19
>>478
if hoge then
a=1
end if

481 :名無しさん@そうだ選挙にいこう:02/12/02 15:20
本当だ。
インテンドできない・・・

482 :476:02/12/02 15:20
>>477 ってことは私のエクセルが壊れてるのかな…(;´Д`)


483 :470〜472:02/12/02 15:22
おおうまくいったみたいだ。472ありがとう。
再確認

If hoge Then
  Call hage 'スペース4個
End if

484 :名無しさん@そうだ選挙にいこう:02/12/02 15:23
>>482
シート名が間違ってたりとか単なるタイプミスとか、そういうのかも。
もう1回チェックしてみて!

485 :470〜472:02/12/02 15:30
スペースの数は倍入れないと駄目なのか?
ここをMSゴシックで見る人もいないだろうが。

123456789
  1
  2
  3
  4
  5
  6

486 :470〜472:02/12/02 15:32
123456789
   &;nbsp;4

487 :470〜472:02/12/02 15:38
やっと分かったよ。何度もすまなかった。
486は失敗だけど今度はしっかりスペース4個入るだろう
123456789
    4

488 :476:02/12/02 15:39
>>484
シートの名前とか変えてみたんですが、やっぱり同じエラーが出ました…
あと、デバッグモードでシート名部分を書き換えても、やっぱり黄色いハイライトが消えません…
全文書くとこんな感じです。

Sub Macro1()
  Dim i As Integer
  Dim j As Integer
  j = 0
  For i = 0 To 13000
    If Sheets("Sheet1").Cells(i, 1).Value = "datanum" Then
      j = j + 1
      Sheets("Sheet2").Cells(j, 1).Value = Sheets("Sheet1").Cells(i, 2).Value
    End If
  Next i
End Sub

これが標準モジュールのModule1に入ってます…

489 :476:02/12/02 15:41
>>488
ちなみにデバッグモードでハイライトされるのは6行目の
If Sheets("Sheet1").Cells(i, 1).Value = "datanum" Then
です。
おながいします。m(__)m

490 :470〜472:02/12/02 15:48
Sheets("Sheet1").Cells(0, 1)ってのはないよ。

For i = 0 To 13000は
For i = 1 To 13000じゃないのか?



491 :☆☆☆☆☆:02/12/02 15:54
http://alink3.uic.to/user/ranran2.html

492 :名無しさん@そうだ選挙にいこう:02/12/02 15:54
>>488
For i = 0 To 13000 → For i = 1 To 13000
それだと、j=j+1もいらない?

Sub Macro1()
  Dim i As Integer
  For i = 0 To 13000
    If Sheets("Sheet1").Cells(i, 1).Value = "datanum" Then
      Sheets("Sheet2").Cells(i, 1).Value = Sheets("Sheet1").Cells(i, 2).Value
    End If
  Next i
End Sub

493 :名無しさん@そうだ選挙にいこう:02/12/02 15:55
>>492
ごめん、間違えた。

Sub Macro1()
  Dim i As Integer
  For i = 1 To 13000
    If Sheets("Sheet1").Cells(i, 1).Value = "datanum" Then
      Sheets("Sheet2").Cells(i, 1).Value = Sheets("Sheet1").Cells(i, 2).Value
    End If
  Next i
End Sub

494 :476:02/12/02 15:59
>>490-492
わかりました!ありがとー!なんか凄く馬鹿な自分に鬱になりました…

495 :470〜472:02/12/02 16:34
インデントデスト。
vbeの置換でスペースを に変えてみた。

If hoge1 Then
    If hoge2 Then
        If hoge3 Then
            a = 1
        End If
    End If
End If


496 :名無しさん@そうだ選挙にいこう:02/12/02 18:14
誰か教えてください。
とても長い配列を作りたいんですが、
var = Array(〜)
が1024バイトを超えてしまって、かけないんですが、どうしたらいいでしょうか?

497 :名無しさん@そうだ選挙にいこう:02/12/02 20:01
試してないんですまんが、

Dim s As String
s="hogei,hoge2,hoge3,hoge4,hoge5........hoge10000"
var=Split(s,",")

では駄目か?

大体1024バイトを超えるようなのをシコシコと書くのも疲れると思うが、
セルに書いてVariantの配列にとりこむのでは駄目なのか?


498 :名無しさん@そうだ選挙にいこう:02/12/02 23:15
>>497
レスどうもです。最終的には配列使わないで、
Stringを211行に渡って定義してしまいました(汗
多分なんですが、そのやりかただと
s="hogei,hoge2,hoge3,hoge4,hoge5........hoge10000"
っていう行が1024バイトを超えちゃうんで、多分その時点で
エラーになると思うです。1024バイトの文字列を配列として
使えないんじゃなくて、VBAが1024文字以上の行自体を
受け付けないんです。
配列の中身はそれの一覧が改行されたテキストとして
手元にあったんで、改行を「","」にエディタで置き換えして
貼り付けようと思ってました。

499 :名無しさん@そうだ選挙にいこう:02/12/03 11:13
>>495
いいかげん鬱陶しいんで、どっかのテストスレでやってくれないか?(´ー`)

500 :470〜472:02/12/03 17:49
>>499
須磨ソ。もう分かったからやらないよ。
漏れ以外にも知らんやついそうだから、少しはみんなのためになったんじゃないか?


501 :名無しさん@そうだ選挙にいこう:02/12/03 20:37
>>467
http://support.microsoft.com/default.aspx?scid=kb;ja;JP417113

502 :名無しさん@そうだ選挙にいこう:02/12/04 13:08
>>501
サンクスコ!
結局コード書かなきゃいけないのか〜。

503 :名無しさん@そうだ選挙にいこう:02/12/07 13:17
ExcelやWordに書き込みができません。
ツールバーの項目もクリックできませんし…。
バージョンは2002でOSはXPです。
解決策分かる方は教えて下さい。。

504 :名無しさん@そうだ選挙にいこう:02/12/07 14:27
EXCEl2000です。
一つのフォルダの中にたくさんのファイルが入っていて、
ファイルの中には3枚のシートが入っているのですが、
すべてのファイルの1枚目のシートと2枚目のシートと3枚目のシートをバラバラにしたいのです
可能ですか??

505 :名無しさん@そうだ選挙にいこう:02/12/09 00:08
うん

506 :名無しさん@そうだ選挙にいこう:02/12/09 00:36
>>504
可能ダス。そんなのショッチュウやってるよ。

507 :441:02/12/09 09:21
教えてください。
二つのエクセルファイルのブックの中身で、重複するレコードものを消去する
方法ってありますか?
あれば、教えてください


508 :506:02/12/09 09:49
どうすればいいのでしょうか??

509 :名無しさん@そうだ選挙にいこう:02/12/10 00:27
>>506
コード書けってか?

510 :名無しさん@そうだ選挙にいこう:02/12/10 00:32
>>508
各ファイル名を取得して、WorkbooksでOpenして、各WorksheetをMoveかCopyしたやつのParent(Workbook)をSaveすればいいだけじゃん。
VBA知っていれば、これでもう組めると思われ。
知らなかったら、この名著を買って勉強すれ。
[開発者のためのExcel2000VBAプログラミングガイド]
 大村 あつし (著), 佐野 夏代 (著)

511 :名無しさん@そうだ選挙にいこう:02/12/10 00:36
>>507
レコードID番号を配列に読み込んで比較して重複するやつにフラグを立てればすればよかろう。
VBA知っていれば、これでもう組めると思われ。
以下、略。

512 :511:02/12/10 13:35
訂正:
レコードID番号を配列に読み込んで比較して重複するやつにフラグを立てて、そいつを削除すればよかろう。
TYPE型の配列が便利かも。

513 :名無しさん@そうだ選挙にいこう:02/12/10 17:39
>>508
熟練工でも、テストを含め、きちんとしたものを作るのに3時間は
かかると思いますね。
素人さんは5日やってもできないでしょう。
どっかの業者さんに委託したら?

514 :じゃっく:02/12/10 18:04
>>504 etc
俺だったら次のようなアプローチをとるかな…

1)フォルダの Excel ファイルの一覧をワークシートに作る。
2)一覧をたどりつつファイルをオープン、3)のサブルーチン
  を実行してセーブせずにクローズ。を繰り返す。
3)アクティブなブックをシートごとに新規ブックにコピーし、
  名前を付けて保存する。保存先はもとのファイルとは
  別のフォルダがいいだろね。

 以上、ネット上に散らばってるサンプルコードなどを集めて
調べれば、そんなに難しいことではないと思うが、>>504
VBAを使って今後も仕事するつもりがないなら、>>513
言う通り。

515 :名無しさん@そうだ選挙にいこう:02/12/10 23:15
>504

マクロを仕込んだブックを対象フォルダに置いて実行。
エラー処理一切無し。

Sub aaa()
Dim fs As FileSearch, wb As Workbook, i As Integer
Dim FName As String, FPath As String

FPath = ThisWorkbook.Path
Set fs = Application.FileSearch
fs.NewSearch: fs.LookIn = FPath :fs.FileName = "*.xls"
If fs.Execute > 0 Then
 For i = 1 To fs.FoundFiles.Count
  If Dir(fs.FoundFiles(i)) <> ThisWorkbook.Name Then
   Workbooks.Open (fs.FoundFiles(i))
   Set wb = ActiveWorkbook
   FName = Mid(Dir(wb.Name), 1, Len(Dir(wb.Name)) - 4)
    For j = 3 To 2 Step -1
     wb.Worksheets(j).Move
     ActiveWorkbook.SaveAs (FPath & "\" & FName & "_" & j & ".xls")
     ActiveWorkbook.Close
    Next j
   wb.SaveAs (FPath & "\" & FName & "_1.xls")
   wb.Close
  End If
 Next i
End If

End Sub

516 :名無しさん@そうだ選挙にいこう:02/12/11 12:07
>>515
グッジョブ!お疲れ様です。
業務用としてなら、エラー処理組み込まないといけないから
コードが5〜10倍くらいに膨れてしまいますね〜。

517 :507:02/12/11 17:05
>>515
ありがとう御座います。。
本当に助かりました。ちゃんと勉強してきます。。

518 :515:02/12/11 20:37
>516

5〜10倍、、、そんなにはならんだろ。

シート数が3枚じゃなかったら処理しないってのと
On Error GoTo くらい入れとけば十分実用に耐えると思うが。

519 :515:02/12/11 20:37
>>517

504=507?

520 :517:02/12/12 11:56
ごめんなさい。別人さんです。。504でした。。

521 :名無しさん@そうだ選挙にいこう:02/12/12 23:22
GetOpenFilenameで、一番始めに開くフォルダを変更することはできますか?

一度、ファイルを選択すると
2度目に開くときには、一つ目のファイルのあったフォルダが開くので
可能そうだなぁとは、思うのですが・・・方法がどうにもわかりません

検索キーワードでもいいので、どなたかご教授ください。

522 :名無しさん@そうだ選挙にいこう:02/12/12 23:36
>>521
ChDir "c:\"
'ファイル開くダイアログの表示
If Not Application.Dialogs(xlDialogOpen) _
.Show(Arg1:="") _
Then Exit Sub
↑の方が良くない?

523 :名無しさん@そうだ選挙にいこう:02/12/12 23:50
>>522

目的の動作は
ChDirでできそうです。
ありがとうございました。


とある計測器の吐き出した
特殊な、拡張子のテキストファイルの"一部"をエクセルに取り込む
マクロを作っているのでGetOpenFilenameでパスをゲットしてReadしています

524 :名無しさん@そうだ選挙にいこう :02/12/13 21:39
教えてください
一つのフォルダの中にたくさんのエクセルファイルがあって
ファイルは[全4枚のシートの保護]と[ブックの保護]がかかっています。
パスワードは共に123456
フォルダの中にある全てのファイルのパスワードを外せますか?
よろしくお願いします

525 :名無しさん@そうだ選挙にいこう:02/12/13 23:02
>524

Excel総合相談所 9 の 292 は無視してマルチか?


526 :名無しさん@そうだ選挙にいこう:02/12/14 20:26
スレ違いでしたらごめんなさい。
あるブックをcsv(カンマ区切り)で保存すると各フィールドの間がカンマで区切られますよね。
各フィールドのデータをダブルコーテーションで囲んだ上で、カンマ区切りで
保存するにはどうしたらいいでしょうか?
例えばこんな感じで。
"0001","山田","太郎"


527 :名無しさん@そうだ選挙にいこう:02/12/14 22:07
>526
Write文使え

528 :526:02/12/15 00:08
>527
ソースをください、とかいったら怒りますか?

529 :名無しさん@そうだ選挙にいこう:02/12/15 09:02
>528
527ではないが、聞く前に調べたら?
下のはエラーチェックしていないんで、動くかどうかわからん。

Sub aho()
fd = ThisWorkbook.Path: fn = "\manko.csv": ff = FreeFile()
Open fd & fn For Output As #ff
With Sheet1
y = 1
Do While .Cells(y, 1) <> ""
x = 1
Do While .Cells(x, y) <> ""
Write #ff, .Cells(x, y);
x = x + 1
Loop
Write #ff, vbCrLf;
y = y + 1
Loop
End With
Close #ff
End Sub

530 :名無しさん@そうだ選挙にいこう:02/12/15 18:29
おせっかいだが、上を読みやすくしてみた。
Sub nbspaho()
    fd = ThisWorkbook.Path: fn = "\manko.csv": ff = FreeFile()
    Open fd & fn For Output As #ff
    With Sheet1
        Y = 1
        Do While .Cells(Y, 1) <> ""
            X = 1
            Do While .Cells(X, Y) <> ""
                Write #ff, .Cells(X, Y);
                X = X + 1
            Loop
            Write #ff, vbCrLf;
            Y = Y + 1
        Loop
    End With
    Close #ff
End Sub


531 :530:02/12/15 18:31
>>529
変数の宣言くらい白よ。
しないと上達が二年くらい遅れるぞ。


532 :名無しさん@そうだ選挙にいこう:02/12/15 19:00
>>530-531
本当におせっかいだな。

533 :名無しさん@そうだ選挙にいこう:02/12/15 19:20
もともと、おせっかいがいるから成り立ってるスレですし。。。

534 :526:02/12/15 19:25
>527、529,530
レスありがとうございます。
Macのエクセル98で動かしているせいか、うまくいきませんでした。
いちばん近かったのは529さんのコードでした。
ソースをみてもちんぷんかんぷんでしたが、
これを機会に自分でもチャレンジしてみます。


535 :名無しさん@そうだ選挙にいこう:02/12/15 20:25
VBAチンプンカンプンならVBAなんてつかわずに

sheet2のA1に

= """" & Sheet1!A1 & """"

と入力してオートフィルで全部のセルに適用すりゃいいんじゃねーのか?

536 :名無しさん@そうだ選挙にいこう:02/12/15 20:36
Excel2000でVBAを用いてあるユーザー定義関数を作成し,
それをアドインファイルとして組み込ませました。

ワークシートのセル上で関数ウィザードを開き,
このユーザー定義関数を選択するとウィザードの説明欄に
『[ヘルプ]をクリックすると、この関数と引数に関するヘルプトピックが表示されます』
と表示されます。
他の関数では,この『』内にその関数の説明が表示されています。
(例)AND関数の場合『全ての引数がTRUEのとき、論理値TRUEを返します。』

自作したユーザー定義関数の説明を関数ウィザードで表示したいのですが,
どうすれば出来るのでしょうか?

537 :学会は偽善者の集まり!:02/12/15 20:39
学会の糞偽善者どもは、さり気なく情報を訊き出しては、
行く先々にあらゆる人材を送り込み、偶然を装っては
チンケな猿芝居やコザカしい罠、悪質な嫌がらせを次々と仕掛けてくる。
その、あまりにも回りくどく分かりにくい嫌がらせの手法で、
実際、気付くのに五年以上かかった。普通はまさか?と思うものだ。
だが偶然ではなかった。全て計画的に仕組まれたものだった。
あくまでも偶然を装ってである。何とも白々しく腹黒く悪質で陰険なことか!
こっちが気付かない、或いは知らん振りしてると、しつこく睨み続けてくる。
こっちが気付き不快感をあらわにすると、知らん振り。
頭にきて攻撃すると、散々自分から仕掛けて来ておきながら、
いかにも自分が被害者ぶるのである。
たとえ地元から遠く離れていても、である。
前以って嫌がらせを組織や会場にに潜り込ませたり、
あらかじめ通過地点に嫌がらせを配置・待機させる事もある。
一体奴らは何がしたいのか?気に入らないならダイレクトに来い!
被害妄想と思うかもしれないが、そうする事で
今までの不可解な出来事の全てにおいて、つじつまが合うのである。
偽善者という言葉は奴等の為にある。
学会のあるクソ信者と一緒にいると、
必ず初対面の人間からも頭ごなしに白い目で睨まれる。
明らかに年下の人間も俺を見下した目で見ている。
「あいつはロクでもないガキだ!」とでも吹いて回ってるんだろう。
表面上は親切ぶっていても、裏で糸を引いているのは奴等である。
正に偽善者と呼ぶに相応しい。
いつでも助けてやるよ!と言いながら、足を引っ張っているのは奴らだ!
偽善スマイルの裏では、腐ったはらわたがドス黒く渦巻いている。
学会の人間に心を開いてはいけない。
自分の知らない同一人物が目の前に度々現れたら要注意である。

538 :536:02/12/15 23:10
>>536 自己レス。
別の場所で回答を教えてもらってしまいました。
MacroOptionsメソッド を利用するそうです。

539 :526:02/12/15 23:19
>535
どうもです。
なるほど、そんな事もできるんですね。
でもそれだと用途がちがうんです。
ワンタッチで"aaa","bbb"・・・・形式にする必要があるんで。


540 :名無しさん@そうだ選挙にいこう:02/12/16 22:25
VBAから利用できるmsHogeHogeという組み込み定数があるとき、
文字列"msHogeHoge"からこの定数を導く関数又は方法にはどのようなものがありますか。


541 :名無しさん@そうだ選挙にいこう:02/12/17 11:53
>>540
オブジェクトブラウザでも使ったら?
VBAのエディタで表示→オブジェクトブラウザ

542 :名無しさん@そうだ選挙にいこう:02/12/18 14:56
過去ログにある質問ならごめんなさい。
エクセルのシートを開くと同時に自動的に実行されるマクロ
を作成したいのですが、どのようにしたらいいでしょうか?

543 :名無しさん@そうだ選挙にいこう:02/12/18 15:07
Private Sub Worksheet_Activate()
を実行したいシートに。

544 :542:02/12/18 15:45
>>543
ありがとうございます。ちゃんと調べたらありました。
お恥ずかしい。

545 :名無しさん@そうだ選挙にいこう:02/12/21 02:07
WIN2000, EXCEL2002 です。
会社のシステムから(WEBを使って)データをダウンロードしたものを
エクセルに貼り付けて加工しています。(ダウンロード時はエクセル形式)

A列に数字 B列に日付が入るのですが数値としてではなく
文字列になっているようです。(元データの時点で)
そこで、
Sub 数値に直す()

'数値部分
Columns("A").Value = Columns("A").Value

'日付部分
RowN = Range("B1").End(xlDown).Row
'作業用列=C列
Range("C1").FormulaR1C1 = "=DATEVALUE(RC[-1])"
Range("C1").Copy _
Destination:=Range("C2:C" & RowN)

End Sub
という方法で今はなんとかやってるのですが
日付部分(B列)も数字(A列)のようなシンプルなやり方が
あれば教えて下さい。(物凄く困っている訳ではないのですが
シンプルな方法があるのでは・・・と思いまして。)
宜しくお願いします。



546 :名無しさん@そうだ選挙にいこう:02/12/21 02:45
>545

上手く動くか解からんが。

Sub aaa()
Columns("A:B").NumberFormatLocal = "G/標準"
Columns("A:A").TextToColumns FieldInfo:=Array(1, 1)
Columns("B:B").TextToColumns FieldInfo:=Array(1, 5)
End Sub

547 :名無しさん@そうだ選挙にいこう:02/12/21 03:36
>546 ありがとうございました。ばっちりでした。「区切り位置」を
使うと良かったのですね・・・(使ったことなかったです・・・)
色々と活用できそうです。ありがとうございました。

548 :名無しさん@そうだ選挙にいこう:02/12/23 14:20
>>316
詳しくはわからんが、直接保存は出来ないみたい。

WorkBookをWeb形式で保存してから画像を抜き出せば一応できるみたいだ。
PublicObjectsコレクションのaddメソッド、publishメソッドあたりを調べてみたら?

549 :名無しさん@そうだ選挙にいこう:02/12/23 14:21
ありゃ、恥ずかしいことしてしまった…鬱誌…

550 :|∀・) ...:02/12/26 15:31
 

551 :おしえてくん3号:03/01/06 09:44
みなさま、新年あけおめ
で、早速教えてくんで申し訳ないんだが。
定型作業をして、作業内容の主要事項を別のブックに書き込む、
このときに書き込むべきブックが
別の人間が開いていた場合に編集が可能になるまで待つコード教えて

552 :おしえてくん3号:03/01/06 14:41
>>551
のコードは自力解決しました。

553 :名無しさん@そうだ選挙にいこう:03/01/10 14:21
横スクロールしてもスクロールされない列になるようにするのには
どうすればいいのでしょうか。
そういうコマンドもしくはコードを教えてください。
1行目縦スクロール禁止は
Range("B2").Select
ActiveWindow.FreezePanes = True
だとは知ってるのですが。。。



554 :名無しさん@そうだ選挙にいこう:03/01/10 14:29
>>553
マクロ記録したら?

555 :553:03/01/10 15:14
マクロ記録しようにも、スクロール禁止のボタンがわからんのですよ。

556 :名無しさん@そうだ選挙にいこう:03/01/12 17:31
エクセルのSUMIFで範囲、条件を2ペア使いたいのですがどうすればいいですか。
たとえば、この表で「田中」カツ「みかん」で15+22=37をしたいのです。
田中、みかん、15個
佐藤、りんご、30個
田中、みかん、22個
佐藤、りんご、10個
田中、りんご、21個
田中、りんご、17個
佐藤、みかん、25個
どうかよろしくお願いします。

557 :海やん:03/01/12 18:17
弥生販売ってソフトを使って、利益計算をしようと思ったのですが、
このソフトでは
あるお得意に対しての利益を把握することはできないですね。
分析するところがあって、お得意に対する販売の利益や利益率は
ボタンひとつででるのですが、この数字は、いたっていい加減なもんです。
在庫の単価は、仕入れた商品登録のところの価格を変えるたびに、
その新しい価格に変わってしまいます・・・・。
つまり、在庫品を売った場合の利益は、事実を反映してないです。

中央市場で使うつもりなので、毎日、同じ品目の野菜でも、
仕入れ価格は変わり、お得意さんへの売り価格も変わります。
こんな状況で、しっかり、お得意さんへの利益管理のできる
ソフトって、ご存知ないでしょうか??


558 : :03/01/12 18:34
>>556
SUMIFてえ何だよ?

559 : :03/01/12 18:49
>>556
Sub 寒いフ()
Dim ret As Long
Dim Vol As Long
Const NM_A As String = "田中"
Const FT_A As String = "みかん"

Vol = 0
For i = 1 To Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
ret = IIf(Cells(i, 1) = NM_A, _
IIf(Cells(i, 2) = FT_A, CLng(LEFTCells(i, 3).Value), 0), 0)
Vol = Vol + ret
Next

MsgBox Vol
End Sub

560 :名無しさん@そうだ選挙にいこう:03/01/12 19:02
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

561 :名無しさん@そうだ選挙にいこう:03/01/12 20:57
あの〜、請求書作りたいんですが、
  A    B
1山田政子 129200
2大島秀文 120150
3金田義弘 402379

と言うようなデータの後に下の方のページに
    A     B    C     D     E
70  =$A1             =$A2     
71 合計金額  =$B1*3      合計金額   =$B2*3
72 以上の通り請求します    以上の通り請求します
73
74  =$A3             =$A4     
75 合計金額  =$B3*3      合計金額   =$B4*3
76 以上の通り請求します    以上の通り請求します

と、1ページに2個ずつ請求書を作りたいのですが、これを自動でやるにはどうやれば・・
お願いします…これを60個分作らなきゃならないんですが、気が遠くなりそうで…

562 :名無しさん@そうだ選挙にいこう :03/01/12 21:21
>>561
>と、1ページに2個ずつ請求書を作りたいのですが、これを自動でやるにはどうやれば・・
>お願いします…これを60個分作らなきゃならないんですが、気が遠くなりそうで…

ふざけるな。その仕事が終わればいいだけなんだろ?
「別にエクセルなんていちいち調べずにネットで聞けば、どっかの暇人がやってくれるし。」
なんて思ってんだろ?
お前のような向上心の無い人間は社会の役に立たない。
会社なんて辞めちまえ!クズ野郎!

563 :名無しさん@そうだ選挙にいこう:03/01/12 21:24
>>562
くだらないこと書くな。

564 :562:03/01/12 21:24
>>561
マクロの記録を実行して、
まず、1個だけ間違えないように操作をマクロ記録する。

後はマクロをループさせてセルをずらすだけだ。

565 :sage:03/01/12 21:28
>562
3分でいい人になったな。(藁

566 :562:03/01/12 21:32
>>561>>563
やっぱ、氏ねよおめーら。

567 :名無しさん@そうだ選挙にいこう:03/01/12 21:37
>>562
うーむ、調べはしたんですがねぇ・・と、まぁそれは言い訳ですね・・・
ありがとうございました〜

568 :sage:03/01/12 21:37
>562
本当はいい人なのに悪びれてるんだろ?
シャイな不良と一緒だな。

569 :vvv:03/01/12 21:49
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

570 :名無しさん@そうだ選挙にいこう:03/01/13 11:33
…うーむ、全然分からん…
マクロをループさせてセルをずらすって…一体どこをどうすれば…

571 :名無しさん@そうだ選挙にいこう:03/01/13 11:37
>>553
WorkSheetのScrollAreaプロパティで移動できる範囲を限定したらどうでしょう?
起動するたびに設定しなければいけないのが難点だけど(XL97ではそーだった)。

572 :名無しさん@そうだ選挙にいこう:03/01/13 11:49
>>570
一例

Option Explicit
Sub HogeHoge()
 Dim lngI As Long, lngR1 As Long, lngC1 As Long
 For lngI = 1 To 60
  lngR1 = ((lngI - 1) \ 2) * 4 + 70 '行位置計算
  lngC1 = 4 - (lngI Mod 2) * 3    '列位置計算
  With ActiveSheet
   .Cells(lngR1, lngC1).Formula = "=" & "A" & lngI
   .Cells(lngR1 + 1, lngC1).Value = "合計金額"
   .Cells(lngR1 + 2, lngC1).Value = "以上の通り請求します"
   .Cells(lngR1 + 1, lngC1 + 1).Formula = "=" & "B" & lngI & "*3"
  End With
 Next
End Sub

Modとか\とかは演算子です。

573 :572:03/01/13 11:54
一部修正
「=」と「A(B)」を離す必要がなかったです。

= "=" & "A" & lngI  →  = "=A" & lngI
= "=" & "B" & lngI & "*3"  →  = "=B" & lngI & "*3"

574 :名無しさん@そうだ選挙にいこう:03/01/13 12:15
>>572
うーむ、わざわざすみませんです。ちょっとやってみます

575 :名無しさん@そうだ選挙にいこう:03/01/13 12:35
よくセルに「=A108」とか使いますよね。
たとえばの話ですが、「=A100」から「=A125」までを=A2に、
=A126から=A150までを=A3と言う風繰り返し置き換えしたいのですが
一体どうすれば…

576 :名無しさん@そうだ選挙にいこう:03/01/13 14:07
>>575
570さんと同じ人?
A100〜A125にA2の値を参照させるのか
A2にA100〜A125の値を順次参照させるのか(そして印刷?)
どっち?

577 :名無しさん@そうだ選挙にいこう:03/01/13 15:05
ここで聞いてもよろしいでしょうか?
http://pc3.2ch.net/test/read.cgi/tech/1023755967/528-529

578 :名無しさん@そうだ選挙にいこう:03/01/13 15:55
同じっす・・・
「=A100〜A125」を参照しているセルを置き換えで=A2
を参照させたいんですが…

579 :名無しさん@そうだ選挙にいこう:03/01/13 16:06
>>577
これでしょうか?
http://support.microsoft.com/default.aspx?scid=kb;ja;JP416637
向こうにも貼っておきます

580 :名無しさん@そうだ選挙にいこう:03/01/13 16:25
>>578
説明ヘタだな・・・

581 :名無しさん@そうだ選挙にいこう:03/01/13 17:08
こんな処理でつか?
Sub hogehoge()
 Dim rng1 As Range, rng2 As Range, rng3 As Range, tf As Boolean
 On Error Resume Next
 Set rng2 = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
 On Error GoTo 0
 If Not rng2 Is Nothing Then
  For Each rng1 In rng2
   On Error Resume Next
   Set rng3 = rng1.DirectPrecedents
   On Error GoTo 0
   If Not rng3 Is Nothing Then 
    If rng3.Count = 1 And rng3.Column = 1 Then '=A100*A120 や =A100*2 等は除外する
     If Application.WorksheetFunction.Substitute(rng1.Formula, "$", "") = "=" & rng3.Address(False, False) Then
      Select Case rng3.Row
       Case 100 To 125: rng1.Formula = "=A2"
       Case 126 To 150: rng1.Formula = "=A3"
      End Select
     End If
    End If
    Set rng3 = Nothing
   End If
  Next
  Set rng2 = Nothing
 End If
End Sub


582 :名無しさん@そうだ選挙にいこう:03/01/13 17:51
うーむ、オレにはバカ過ぎて分かりませんが、とりあえずそれ見て勉強し、
理解しようと思います。
ありがとうございました〜

583 :名無しさん@そうだ選挙にいこう:03/01/13 23:22
vbaの事を全然知らない人むけの解説書で、
何かいい本はありますか?


584 :仕様書無しさん:03/01/13 23:40
>>583
http://www.cbook24.com/

検索は「EXCEL VBA」

585 :577:03/01/14 09:53
>>579
!!!それです!!! ありがとうございます〜。

586 :577:03/01/14 10:10
・・・経過報告・・・

>>579さんが教えてくれたページで

>漢字変換を 1 文字ずつ行うことによって正常に変換することができます。
との記述を見つけ、ほっとしたのもつかの間。例えば「未払い」をどうやって
1文字ずつ変換するのか悩んでしまう。

「未」→「み」+変換→OK
「払」→「はらい」+変換→文字化け
再度挑戦
「払」→「はら」+変換→変換候補にでてこない(当然か・・・)
再々度挑戦
「払」→「ふ」+変換→変換候補にでてこない(まあ、当然か・・・)
今度こそ
「払」→「ふっ」+変換→変換候補にでてこない(ふっ、漢字力の無いオレには無理)

587 :577:03/01/14 10:16
・・・最終報告・・・

「払」→「ふつ」+変換→OK(さっきはなぜ小さい「っ」にしちゃったんだろう?)

とやってるうちに、メモ帳で変換した後でコピペした方が早いことに気づく。
ん?それだと以前と全く変わらんぞ。な〜んの解決にもなっていない。
IntelliPoint ドライバを外すしかないか・・・

588 :山崎渉:03/01/15 16:41
(^^)

589 :名無しさん@そうだ選挙にいこう:03/01/16 17:39
左のセルに数値を入力したら 右のセルに その入力時刻を表示させるのは
どうしたらいいのでしょうか?
new() は 使わないで。  再計算しちゃうから。よろしくお願いします。

590 :仕様書無しさん:03/01/16 20:45
>>589
jは、貴方が日付を入力したい列を指定

Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Long
j = 2

Cells(Target.Row, j) = Time
End Sub

591 :仕様書無しさん:03/01/16 20:50
うっ!既に答えが出ていたのか......

592 :名無しさん@そうだ選挙にいこう:03/01/16 22:50
>>590
なるほど!  たいへん参考になりました。ありがとうござます。

593 :名無しさん@そうだ選挙にいこう:03/01/16 23:11
すいませんが、朝6時になったら設定範囲を自動印字させて、セルA列のデータを全
クリアしてセル位置の「A1」にカーソルを移動するってできますか? 
怒らないでおしえてくださーい。

594 :名無しさん@そうだ選挙にいこう:03/01/17 00:18
>朝6時になったら
スケジューラあるいはATコマンドでVBスクリプトを登録

>設定範囲を自動印字させて、セルA列のデータを全
>クリアしてセル位置の「A1」にカーソルを移動するってできますか? 
マクロ登録しておいて、上のVBスクリプトからマクロを記録したエクセルの
インスタンスをCreateObjectで生成後、マクロ関数をコールするだけ。

楽勝ジャン

595 :名無しさん@そうだ選挙にいこう :03/01/17 00:35
>怒らないでおしえてくださーい。
てことは、恒常的に我々が怒っていると......


596 :名無しさん@そうだ選挙にいこう:03/01/17 06:18
594>>
なんとなく 意味はわかりました。 本日挑戦してみます。
ありがとうございます。
595>>
もしかしたら つまらない質問をしてしまったとの危惧から出てしまった
セリフなのです。


597 :アップ:03/01/17 07:09
     ∧_∧
    ( ´∀`)<http://www.boreas.dti.ne.jp/~keitarou/ten.html
    /,   つ
  ( ((_(_, )) )
     しし'

598 :名無しさん@そうだ選挙にいこう:03/01/17 16:03
589ですが 出来ました! と喜んだのですが 左セルの数値を削除しても時間がでちゃうんですね。 それは消せませんか?

599 :名無しさん@そうだ選挙にいこう:03/01/17 16:45
>>598
B列を非表示にしてC列に =IF(A1="","",B1) ってな感じで記入すれば?
C列のセルの書式設定で表示形式を設定する必要あるけど

600 :名無しさん@そうだ選挙にいこう:03/01/17 17:14
Excel95からExcel2000に変換してVBAへ修正できて正常に動作していますが、
メニューバーの訂正ができません。
ファイルを立ち上げると前のメニューバーになります。
削除しても同じです。Excel95のメニュー作成方法が分からないので
不具合がどこにあるか見当もつきません。

601 :名無しさん@そうだ選挙にいこう:03/01/17 17:16
>>598
r.Offset(0, 1) = Time
 ↓
if r = "" Then
r.Offset(0, 1) = ""
else
r.Offset(0, 1) = Time
end if

ただこれでも、Wクリックでセルの中に入っちゃうと
内容が変わらなくても時刻が変わってしまうんだがね。

602 :590:03/01/17 18:39
>>598
消せますよ。

603 :名無しさん@そうだ選挙にいこう :03/01/17 19:04
>>601
Wクリック(F2も同じく)は現在のセルの値を同じセルに上書きすること
なので値を編集したことになる。

604 :名無しさん@そうだ選挙にいこう:03/01/17 19:14
>>600
ただ、現状報告してるだけで質問じゃないよね?
へー、大変だね。

605 :590:03/01/17 19:24
セルの編集モードになる前にセルの値をグローバル変数TEMPへ退避させて
アクティブセルが変わった時にTEMPと比較させるだけだよ。
いまコーディングして確認しました。

---------------------------------------------------------------
どうして自分で考えようとしないの?何も考えずに質問してるだけでしょ?
1週間くらい考えないと考えたうちにはいらないんだよ。あまりふざけないでね。

606 :名無しさん@そうだ選挙にいこう:03/01/17 19:36
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★

607 :600:03/01/17 20:21
解決しました。
新規ブックにシートをコピー。
マクロはインポート。
それからメニューバーを作成。

608 :名無しさん@そうだ選挙にいこう:03/01/18 06:55
601>>
解決しました。
ありがとうございました。
今後もよろしくです。

609 :マクロいらん:03/01/18 10:49

初歩的な質問ですがお願いします。

マクロで作ったシートをマクロ抜きで相手に渡したいのですが何か簡単な方法はありますか?

今は新規のワークシートにデータ部分だけをコピーしてマクロなしのファイルを作っています。

もっとスマートで簡単な方法がありそうなものですが。

データが大量にあるので、ワンクリック程度ですませたいです。


610 :名無しさん@そうだ選挙にいこう:03/01/18 11:02
データファイルとマクロファイルを分ければ?

611 :マクロいらん:03/01/18 11:18
>610
 最初にそうすればよいのですが、マクロ付きのファイルがすでにいくつもできてしまい、元のデータは揮発性のため後戻りはできません。
 

612 :名無しさん@そうだ選挙にいこう:03/01/18 11:57
シートだけコピーして、新規ブックを作成するマクロを作ればいいのでは?
(personal.xlsに作ろう)

613 :名無しさん@そうだ選挙にいこう:03/01/18 12:35
毎日 同時刻に警告するマクロを組んだのですが
どうもうまく動作しません。ご指導よろしくどうぞ。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sub macro_kaisi()
Application.OnTime TimeValue("12:03:00"), "MyMsg"
End Sub


Sub MyMsg()
MsgBox "時間ですよ!"
End Sub


614 :マクロいらん:03/01/18 13:29
>612
レスありがとうございます。結局その方法しかなさそうですね。
それでやってみます。

615 :素人OL:03/01/18 15:36
初心者です。
質問させて下さい。

EXCEL200で複数のファイルで
同じ内容のセルだけを一度に
書き換えるにはどうすればよいですか?


616 : :03/01/18 16:35
EXCEL200とは、如何に?

>複数のファイルで
>同じ内容のセルだけを一度に
>書き換えるにはどうすればよいですか?
質問は具体的に


617 :名無しさん@そうだ選挙にいこう:03/01/18 16:47
>615
置換と同じ動きをすればいいんですか?

618 :  :03/01/18 16:54
>>613
以下はThisWorkBookに
Sub Workbook_Open()
Application.OnTime TimeValue("16:51:00"), "MyMsg"
End Sub

以下は標準モジュールModule1に
Sub MyMsg()
MsgBox "時間ですよ!"
End Sub


619 : :03/01/18 16:58
>>613
つーか、こんなしょーもない質問すんなよ。
いろいろ試せば出来るだろ

620 :素人OL:03/01/18 17:01
>616 >617

一つのフォルダにECXELデータがcsv方式(?)で何千個か有るんですよ。
その中で"A"と書かれているセルを全部検索して"B"に全部置換したいんですよ。
会社でそういうのをやれって言われたんですけど 出来るんでしょうか?

本当によく分かってないんでごめんなさい。

621 : :03/01/18 17:05
へ?
CVSならエクセルとか使わずにワードパッドや秀丸で
「,A,」==>「,B,」に置換するだけじゃないの?

622 :621:03/01/18 17:05
CSV誤り

623 :名無しさん@そうだ選挙にいこう:03/01/18 17:09
>620

それはそのファイルを自動で開いて自動で置き換えて…って動きをさせたいって事ですか?


624 :621:03/01/18 17:12
>一つのフォルダにECXELデータがcsv方式(?)で何千個か有るんですよ。
>その中で"A"と書かれているセルを全部検索して"B"に全部置換したいんですよ。

grepとsedで変換します。

Windowsのバージョンは?
95,98,Me,NT,2000,XP?

625 :素人OL:03/01/18 17:14
>620
そんなかんじですけど できませんか?

>621
ワードパッドや秀丸って知らないんですけど難しいいんですか?

626 :素人OL:03/01/18 17:18
>624
WINDOWSは98です

627 :621:03/01/18 17:24
以下のツールをダウンロードして、解凍後
それぞれの解凍フォルダ内のgrep.exe,sed.exeを
\Windows\SYSTEM32 フォルダへコピーして下さい。

grep
マルチバイト文字対応版 GNU grep, egrep, fgrep
http://www.vector.co.jp/soft/dl/dos/util/se008484.html

sed
マルチバイト文字対応版 GNU sed
http://www.vector.co.jp/soft/dl/dos/util/se008493.html

628 :621:03/01/18 17:25
>素人OL

>ワードパッドや
ネタ質問でしたか(ワードパッド知らないって)。

629 :621:03/01/18 17:32
Windows98にもワードパッドあるやん。
あー、しょーもねー煽りにのっちまった。

630 :名無しさん@そうだ選挙にいこう :03/01/18 17:33
エクセル素人ではなくOLとして素人だと......

631 :素人OL:03/01/18 17:44
わけがわからないです。
ワードパッドってどこにあるんですか?

632 :名無しさん@そうだ選挙にいこう:03/01/18 17:55
>631
あくせさり


633 :名無しさん@そうだ選挙にいこう:03/01/18 18:11
>>631
>わけがわからないです。
わけがわからないです。



634 :名無しさん@そうだ選挙にいこう:03/01/18 18:21
>>633
同感です。

635 :621:03/01/18 18:25
遊び人OLに回答する気はしない。もう1月だから
昨年4月入社でも10ヶ月経ってる。何やってたの?

sedやgrep使わなくてもフォルダ内ファイルまるごとテキスト置換
するツールも有る。あえて紹介はしない。

>わけがわからないです。
>ワードパッドってどこにあるんですか?
じゃあな。

636 :名無しさん@そうだ選挙にいこう:03/01/18 18:30
メニューバーにmenuを次のように追加したい。
どのようにコーディングすれがいいのでしょうか?
menu
....menu-1
....menu-2
........menu-2-1
........menu-2-2
....menu-3

Sub AddMenuBar()
Const MenuType = "Worksheet Menu Bar"
Dim MainMenu As CommandBarControl
Dim SubMenu As CommandBarControl

Set MainMenu = CommandBars(MenuType).Controls _
.Add(msoControlPopup, , , , True)
MainMenu.Caption = "menu"

Set SubMenu = MainMenu.Controls.Add
SubMenu.Caption = "menu-1"
SubMenu.OnAction = "'menu-1'"

Set SubMenu = MainMenu.Controls.Add
SubMenu.Caption = "menu-2"
SubMenu.OnAction = "'menu-2'"
'''''''''''
'?????????
'''''''''''
Set SubMenu = MainMenu.Controls.Add
SubMenu.Caption = "menu-3"
SubMenu.OnAction = "'menu-3'"
End Sub

637 :名無しさん@そうだ選挙にいこう :03/01/18 18:34
>どのようにコーディングすれがいいのでしょうか?

http://www.moug.net/

638 :名無しさん@そうだ選挙にいこう:03/01/18 18:36
>620
ttp://www.pst.co.jp/Powersoft/DownLoad/PsBR.htm


639 :名無しさん@そうだ選挙にいこう:03/01/18 22:06
>>637
........menu-2-1
........menu-2-2
ここをコンボを使った例はあったが、
使わない例はないかな?

640 :名無しさん@そうだ選挙にいこう:03/01/18 22:40
Private Sub Workbook_Open()
Application.OnTime TimeValue("04:59:50"), "バックアップ"
End Sub
上記のようなマクロを組みました。
これで毎日 朝4時59分50秒にバックアップをしてくれますか?
もちろん バックアップ記述はモジュールに組んであります。

641 :名無しさん@そうだ選挙にいこう:03/01/18 22:50
>>640
先に回答した者ですが、できません。
1回で終わりです。

そういうのはVBスクリプトファイルからマクロをコールします。
もちろんVBスクリプトはスケジューラに登録します。

努力を惜しむ香具師は氏ねよ。

642 :名無しさん@そうだ選挙にいこう:03/01/18 22:56
>これで毎日 朝4時59分50秒にバックアップをしてくれますか?
マシンの時刻を1分戻してみるとかしてテストできるだろ。
それくらいのことも思いつかんのか?大丈夫かよ、お前。


643 :ゆうか ◆mcYUKA.SR6 :03/01/18 23:08
エクセルで折れ線グラフを作りました。
その折れ線の後尾から垂直に直線が降りています。
どうしても消せないのですが困っています。
どうか教えてください。

644 :636:03/01/19 00:06
Set m = MenuBars(xlWorksheet).Menus("menu-2-1")
m.MenuItems.AddMenu Caption:="menu-2-1"
できた

645 :名無しさん@そうだ選挙にいこう:03/01/19 00:24
642>>
ここのトップを読むと暴言は即連絡となってます。
退場。

646 :名無しさん@そうだ選挙にいこう:03/01/19 11:48
>>645
 1.質問する時は丁寧に、教えてあげる時は偉そうに。

暴言というほどでなく、ただ偉そうに言ってるだけだから問題ないとおもわれ。

647 :ぶうびい:03/01/19 12:29
>>642 偉そう。
>>645 暴言。

648 :名無しさん@そうだ選挙にいこう:03/01/19 14:39
>643
散布図じゃなくて折れ線でですか?
元のデータから図を再度作り直しても同じようになりますか?
あと、問題の部分のデータはどんなでしょうか

649 :名無しさん@そうだ選挙にいこう:03/01/19 17:14
>643
今更気付いたが、そもそもスレ違いみたいだけど。
VBA使ってるんじゃないんだよね?
http://pc.2ch.net/test/read.cgi/bsoft/1042913355/l50

650 :ゆうか ◆mcYUKA.SR6 :03/01/19 17:34
>>649
ありがとう

651 :名無しさん@そうだ選挙にいこう:03/01/20 12:10
このスレの上の方でExcelVBA本には良書がない、と書かれてますが、
敢えて選ぶとすればどれがマシでしょうか?

当方の事情ですが、Excel2000使用、VBAはおろか、VBは全然知りません。
そのベースとなっている(らしい)Basicの文法は全く分かりません。
他方、CとPerlの最低レベル(入門書終了レベル)の知識はあります。
ので、例えば変数の意味や基本的なアルゴリズム程度は分かります。
Cについては、コンソールの使い捨てプログラムが書ける程度、Win32のAPIは
知らない、と言ったほうがいいレベルです。
全くプログラミングを知らない人向けの本は最初がつらいので、
多言語を多少知ってる人が新しくVBAに触れる、という想定で書かれた本が
希望です。該当する本がなければ、中級以上レベルより、全くの初心者向け本
の方がいいです。
当面の目的は、別ソフトで出力したcsvファイルのデータに数段階の加工を
加えて、帳票を出力することです。
よろしくです。

652 :名無しさん@そうだ選挙にいこう:03/01/20 12:27
>>651
釣り師ですか?
Cの最低限のことが判ればVBAなんぞ屁みたいなものと思うのですが・・・
取りあえず、エクセルの記録マクロで何か作業をして、
後でこのコードを読めば判ります。
VBAは、英単語を少し判るんなら、面倒なことは殆どないんですが・・・

653 :名無しさん@そうだ選挙にいこう:03/01/20 13:08
いや、VBAの場合、ループを素直にfor i=……で回さないほうがいいとか、
大概の処理は専用の物があるのでそれを使うべしとか、
大量のプロパティやらメソッドに埋もれて訳がわからないとかそう言う事では?
分岐やらループの制御は解ってても、それ以外の比重がメチャ高いでしょ?>VBA

漏れは本買ってないが……他言語で基本の制御構造をマスターしてるなら
ネットの解説サイトととヘルプとmougと此処で済ませることも可能かと(w

654 :名無しさん@そうだ選挙にいこう:03/01/20 13:15
>>653
>分岐やらループの制御は解ってても、それ以外の比重がメチャ高いでしょ?>VBA

てか、プログラミングの基礎的な事ができる人なら
このスレなどで既出の(VBAの)ソースコードを
コピペして動かせば、VBAなら
かな〜り熟達するでしょうが (#゚Д゚)ゴルァ!


655 :名無しさん@そうだ選挙にいこう:03/01/20 13:28
cがわかってるなら構文の違いはすぐ慣れるでしょ。
どれがオススメとか言えないけど、漏れのばやいは
Visual Basic for Excel 97 完全制覇(日経BP)
あとは自動記録のコード見て、冴子タンに訊いたり
2ちゃんROMったり。

656 :653:03/01/20 14:03
>654
だから、漏れ本買わずに済ませてるんだが……

651はまだ手をつける前の情報収集してるんだから、意を汲んでやってよ

657 :654:03/01/20 15:19
>>656
漏れも、あんたが書籍ageだとは言っていないのモナー

(;´ー`).。oO(「VBA本 逝ってよし」の仲間が増えた…)

658 :名無しさん@そうだ選挙にいこう:03/01/20 20:06
>>651
Mougのオーナーの本も良いかも。
ただ全部そろえると諭吉が消えてしまうが

http://www.amazon.co.jp/exec/obidos/ASIN/4774114804/ref%3Dbr_ac_502742_top5_1_1/249-1320389-9179505


659 :名無しさん@そうだ選挙にいこう :03/01/20 21:39
>>651
リストやハッシュ、木構造とかCアルゴリズムの基礎だから理解してるってことだよな。
嘘書いてないよね?

お薦め本:かなり評判のいい本です。
http://www.oreilly.com/catalog/vbanut/

>Cについては、コンソールの使い捨てプログラムが書ける程度、Win32のAPIは
>知らない、と言ったほうがいいレベルです。
もっと謙虚に

660 :名無しさん@そうだ選挙にいこう:03/01/21 00:24
ふ、その程度のこと、簡単簡単。
STL使えば(獏


661 :どぶねずみ:03/01/21 16:38
今勉強中です。縦の列に数字が入力してあるエクセルシートがあります。
それぞれのセルを自動的に8文字以外の文字が入っている場合エラーを出そうと考えております。
教えてくださいませ。

662 :名無しさん@そうだ選挙にいこう:03/01/21 18:20
>>661
エラーメッセージ表示のタイミングは、いつ?
どこにメッセージを表示する?

663 :どぶねずみ:03/01/21 18:24
12345678
123456   ’ここでエラーを出したいのです。
12345678

宜しくお願いします。



664 :はやいものがち:03/01/21 18:46
■■■■■■「貯金クラブ」が1月15日Open!!■■■■■■

入会詳細はここをクリック
https://www.e-ats.jp/ddm/i?INTRO_ID=a000013950
本部紹介
http://www.webhouse.ne.jp/n/s.htm


665 :名無しさん@そうだ選挙にいこう:03/01/21 18:56
>>663
入力規則で済む話では?

666 :名無しさん@そうだ選挙にいこう:03/01/21 19:02
>>663
エラーを出すという意味がよくわからないので、赤に塗ってコメントつけてみた。
Sub Macro1()
  Dim Obj1 As Range
  For Each Obj1 In Range("A1:A1000").SpecialCells(xlCellTypeConstants, xlNumbers)
    With Obj1
      If Len(Format(.Value, "0")) <> 8 Then
        .Interior.ColorIndex = 3
        .AddComment
        With .Comment
          .Text Text:="だめぽ"
          .Visible = True
        End With
      End If
    End With
  Next
End Sub

>>665
確かにその方が簡単そう。

667 :名無しさん@そうだ選挙にいこう:03/01/21 19:31
VBA板なんだから、>>666が正解っぽい。


668 :名無しさん@そうだ選挙にいこう:03/01/21 20:51
>>666は二流だな。

669 :名無しさん@そうだ選挙にいこう:03/01/22 09:19
666は悪魔の数字だな。

670 :お金:03/01/22 09:59
■■■■■■「貯金クラブ」が1月15日Open!!■■■■■■

入会詳細はここをクリック
https://www.e-ats.jp/ddm/i?INTRO_ID=a00003950
本部紹介
http://www.webhouse.ne.jp/n/s.htm


671 :どぶねずみ :03/01/22 10:11
666です。ありがとうございました。

672 :どぶねずみ:03/01/22 11:29
ななしさんありがとうございます。
Private Sub CommandButton1_Click()
Dim Obj1 As Range
For Each Obj1 In Range("A7:A9").SpecialCells(xlCellTypeConstants, xlNumbers)
With Obj1
If Len(Format(.Value, "0")) <> 8 Then
.Interior.ColorIndex = 3
MsgBox "入力ミスです"
Else
MsgBox "従業員番号OKです"
End If
End With
としましたが、これではセルをひとつずつチェックしてしまいます。
エラーがあるところだけチェックして、エラーがもしひとつもなければ
最後にメッセージを出したい場合はどうするのでしょうか?

673 :名無しさん@そうだ選挙にいこう:03/01/22 12:00
Sub test()
Dim i, ErNum As Long
ErNum = 0
For i = 1 To 10 '調べる行を入れる
If Len(Cells(i, 1)) <> 8 Then '調べる列を指定
ErNum = ErNum + 1
End If
Next
If ErNum = 0 Then
MsgBox "エラーは無かったよ"
Else
MsgBox "エラー" & ErNum & "ヶみっけ"
End If
End Sub

字下げのコード忘れたんで省略

674 :名無しさん@そうだ選挙にいこう :03/01/22 13:58
エクセル2kで、表を作成したのですが
印刷時に出力されないコメントを入力したいのですが
そんなことできるんでしょうか?

できるのであれば教えてください。
よろしくお願いします。

675 :どぶねずみ:03/01/22 14:25
名無しさん@そうだ選挙にいこう さんどうもありがとうございました。

676 :君死にたもうことなかれ:03/01/22 14:40
672の人、Else
      MsgBox "エラー" & ErNum & "ヶみっけ"
      End If
      End Sub
を最後に何箇所あったか表示させるのではなくエラーがあったらその部分を表示させる場合には
どうすんの?


677 ::03/01/22 14:42
エラーはMsgBox "エラー"と出す。
すべてエラーがない場合最後にメッセージをだすのはいっしょ。

673だと、いったんすべて読み込んでからエラーチェックするもんね
エラーが出たときにメッセージボックスを1回1回だすようにするんだよ。

678 :673:03/01/22 15:02
>>675
どぶねずみさん、釣りですか?

Sub test()
Dim i As Long
For i = 1 To 10
If Len(Cells(i, 1)) <> 8 Then
Cells(i, 1).Select
MsgBox "エラーぢゃ ゴルア"
End If
Next
End Sub


679 :君死にたもうことなかれ:03/01/22 15:27
上の方 質問と答えがあってませんよ
従業員 
12345678   
12345678  
上のようなデータがあって八文字以外はエラーが出るとします。
上は当然出ませんが、
従業員 
12345678   
123456789
であれば、123456789のセルを読み込んだ時点でエラーのメッセージを出します。
この二つの作業を一つとしてPGしたいのです。
宜しくお教えくださいませ。




680 :たまさん:03/01/22 15:30
君死にさん、
Sub test()
Dim i, ErNum As Long
ErNum = 0
For i = 1 To 10 '調べる行を入れる
If Len(Cells(i, 1)) <> 8 Then '調べる列を指定
ErNum = ErNum + 1
End If
Next
If ErNum = 0 Then
MsgBox "エラーは無かったよ"
Else
MsgBox "エラー" & ErNum & "ヶみっけ"
End If
End Sub ではエラーが出た場合最後にエラーメッセージがでるから
エラーの場合はひとつずつチェックさせたいのですね

681 :673:03/01/22 15:41
何か遊ばれてるな。
>>680は漏れじゃないからね。

682 :名無しさん@そうだ選挙にいこう:03/01/22 15:50
>>679
「質問と答えがあってませんよ 」だって。激ワラ

本題:
たしかに Excel は基本的には左上のセルから右下のセルまで
入力されている値を順次読み込み、また同時に計算もやっているわけだが、
Excel 形式のファイルからセル内の値を読み込むのを途中でやめるっていう
ことはできない。それが Excel の仕様だから。

普通はそういうの、必要なら別のファイルにマクロ組んでそこに読み込むとか、
ビューを作るとかするんじゃない?


683 :君死にたもうことなかれ :03/01/22 15:52
ではどうするんでしょう?
エラーのときだけは一個ずつチェックして、メッセージボックスを出し、
ない場合は最後にメッセージボックスを出す方法を。
お手数ですがお教えください。


684 :だぼはぜくん:03/01/22 16:09
だから673と678を組み合わせれば医院だよ。

685 :君死にたもうことなかれ:03/01/22 16:26
Sub test()
Dim i, ErNum As Long
ErNum = 0
For i = 1 To 10 '調べる行を入れる
If Len(Cells(i, 1)) <> 8 Then '調べる列を指定
ErNum = ErNum + 1
End If
Next
If ErNum = 0 Then
MsgBox "エラーは無かったよ"
Else
Cells(i, 1).Select
MsgBox "エラーぢゃ ゴルア"
End If
End Sub
?だめだー エラーの部分がおかすィーです。
誰か教えてくださーい



686 :名無しさん@そうだ選挙にいこう:03/01/22 16:35
>>674
セルで印刷しない設定は出来ないと思う。
外見だけならコントロールのラベルを使えば?
Altを押しながらセルの大きさに重ねて貼付けて、
コントロールの書式設定でプロパティ>オブジェクトを印刷する
のチェキを外す。

687 :どぶねずみ:03/01/22 16:42
これでいいんじゃない?
Sub check()
Dim chin, ErNum As Long
ErNum = 0
For chin = 7 To 10 '調べる行を入れる
If Len(Cells(chin, 1)) <> 8 Then '調べる列を指定
Cells(chin, 1).Select
MsgBox "エラー"
ErNum = ErNum + 1
End If
Next
If ErNum = 0 Then
MsgBox "エラーはない"
End If
End Sub


688 :名無しさん@そうだ選挙にいこう:03/01/22 16:44
>>685
こらこら、そんな組み合わせすんなよ。

Sub test()
Dim i, ErNum As Long
ErNum = 0
For i = 1 To 10
If Len(Cells(i, 1)) <> 8 Then
ErNum = ErNum + 1
Cells(i, 1).Select
MsgBox "エラーぢゃ ゴルア"
End If
Next
If ErNum = 0 Then
MsgBox "エラーは無かったよ"
Else
MsgBox "エラー" & ErNum & "ヶみっけ"
End If
End Sub


689 :名無しさん@そうだ選挙にいこう:03/01/22 16:52
>>683
エラーのセルが100個あれば…

メッセージボックスが100回表示されるけど (゚ε゚)キニシナイ!!
最初にエラー表示された対象のセルがなんだったのか
じきに忘れちゃうけど (゚ε゚)キニシナイ!!

メッセージボックスが表示される都度
(;´д`).。oO(なんで今すぐデータを修正させてくれないんだろ?)
という疑義が擡げるが ソンナコト (゚ε゚) キニシナイ!!

690 :OL一年生:03/01/22 17:09
sでーす。
エクセルシートのセルに入力された値が漢字以外であれば
エラーを出すにはどうするの?ちなみにB11〜B20まで
入力していまーす。
おしえてくださーい。

691 :名無しさん@そうだ選挙にいこう:03/01/22 22:34
ファイルが100ほどあります。すべて同じフォームです。
そのファイルの中の一部分だけをコピーして、一つのファイルにしたいのです。
コピーする部分は同じ部分です。
(例)
 ファイルAのA1〜A10までを、まとめファイルのA1〜A10に貼り付ける。
 ファイルBのA1〜A10までを、まとめファイルのB1〜B10に貼り付ける。
 ファイルCのA1〜A10までを、まとめファイルのC1〜C10に貼り付ける。



という感じです。
1つのファイルを開いて、コピーして、ファイルを閉じる。
そしてまた別のファイルを開いて、コピーして、ファイルを閉じる。
を繰り返すようなマクロを考えています。
アドバイスお願いします。

692 :名無しさん@そうだ選挙にいこう:03/01/22 22:40
>>690
答える気が起こらない質問の仕方だな。

>>691
今の構想で良いと思う。

693 :名無しさん@そうだ選挙にいこう:03/01/22 23:12
小遣い稼ぎ
http://banana.fruitmail.net/cgi/introduce_jump2.cgi?1363289

694 :( ´Α`):03/01/22 23:21
すいません。関数使って、
セル「あいうえお:かきくけこ」
セル「あいうえお」「かきくけこ」に分ける事って可能でしょうか?
教えてください。

695 :名無しさん@そうだ選挙にいこう:03/01/22 23:27
>>692
両方とも胴衣。

ファイル名が通し番号で処理できて、
シート名が全部同じなら記述が簡単になるな。

696 :f:03/01/22 23:28
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 24時間受付  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  hentaimtt@k9.dion.ne.jp
   グローバル探偵事務局 



697 :名無しさん@そうだ選挙にいこう:03/01/22 23:51
>>694
説明は詳しく書いてね。
1つのセルに入力された文字列を2つのセルに分けるの?
で、その文字列って必ず「5文字:5文字」って組合せなの?

よくわかんないけど、とりあえず。
=LEFT(A1,FIND(":",A1)-1)
=MID(A1,FIND(":",A1)+1,100)

698 :名無しさん@そうだ選挙にいこう:03/01/22 23:58
>>690
つられているのは分かっているが、つい(w
きちんとするならコードを調べるんだろけど、面倒なので。
記号がある等の場合結果が違うぞゴルァというつっこみは無し
@の部分にIf分を追加すれば済むから、厳密にするなら自分でして。

Function f1(s1 As String) As Boolean
 s1 = StrConv(Application.WorksheetFunction.Clean(s1), vbKatakana)
  If s1 = "" Then Exit Function
  '// @
  If StrConv(s1, vbNarrow) = StrConv(s1, vbWide) Then f1 = True
End Function
Sub DQN()
 Dim myRange As Range
 For Each myRange In [B11:B20]
  myRange.Offset(, 1) = f1(myRange.Text)
 Next myRange
End Sub

699 :691:03/01/23 00:09
>>695
シート名は全部同じです。ファイル名を通し番号にするといいんですね。
でも自分ではそこまで書けないんです。

700 :名無しさん@そうだ選挙にいこう:03/01/23 00:23
>>699
書けないなら勉強したら?

701 :名無しさん@そうだ選挙にいこう:03/01/23 00:28
全角文字から半角文字への修正を自動で行う機能を考えてます。
機能的には、セルに入力後、自動修正といったようになります。
僕が考えた方法としては、

1. ExcelのASC関数を用いる
2. VBAのStrConv関数を用いる
3. Excelの「入力規則」で日本語入力を無効にして
  そもそも全角文字を入力させない

などを考えましたが、それぞれ

1. 自セルを参照しているため、循環参照となる
2. マクロの実行は手動のため、完全自動修正ではない
3. 他のセルのコピー&ペーストにより、
  全角文字の入力が可能となってしまう

などの問題が生じてしまいます。
何か良い方法ないですかね?

702 :なな:03/01/23 00:40
どなたか教えてください。
個人用マクロブックのマクロを削除しょうとしていたら、BOOK1が表示されなくなってしまいました。
エクセルを立ち上げ直してもPASONALの方が、表示されます。元に戻す方法を教えてください。

703 :名無しさん@そうだ選挙にいこう:03/01/23 00:42
>>701
VBAが分かるなら絶対(2)。
Changeイベントで。

704 :名無しさん@そうだ選挙にいこう:03/01/23 00:48
>>702
Personal.xlsを削除したら良いかも
Winの検索で見つかるでしょ?

705 :701:03/01/23 00:57
>>703
VBAはじめたばかりでChangeイベントというのは知らなかったんですけど
調べたらわかりました。
ありがとうございました!

706 :名無しさん@そうだ選挙にいこう:03/01/23 00:59
>>702
Personal.xls選んどいて、ウインドウ→表示しない
Book1はウインドウ→再表示→Book1を選択かな

707 :( ´Α`):03/01/23 02:29
>>697
レスが遅くなってすいません。
バッチリできました、ありがとうございます。


708 :( ´Α`) :03/01/23 14:32
半角以外エラーを出す場合にはどうすんの?
おせーて 

709 :名無しさん@そうだ選挙にいこう:03/01/23 15:05
>>708
=IF(LEN(A1)=LENB(A1),"OK","NG")

710 :名無しさん@そうだ選挙にいこう:03/01/23 16:08
>>699
Cドライブの「Data」フォルダに「MyData1.xls」〜「MyData100.xls」が
あるとする。また、シート名は「Sheet1」とする。
マクロを実行するときにアクティブなワークブックのSheet1に書き込まれる。

Sub Macro1()
Dim MyFile, MySheet, ThisFile As String
Dim i, j As Integer
ThisFile = ActiveWorkbook.Name
MyFile = "C:\Data\MyData"
MySheet = "Sheet1"
For i = 1 To 100
Workbooks.Open FileName:=MyFile & Format(i) & ".xls", ReadOnly:=True
For j = 1 To 10
Workbooks(ThisFile).Sheets("Sheet1").Cells(j, i) = ActiveWorkbook.Sheets(MySheet).Cells(j, 1)
Next j
ActiveWorkbook.Close
Next i
End Sub

711 :どぶねずみ:03/01/23 17:11

A(列) B C
従業員番号従業員氏名(漢字) 従業員氏名(カナ)
12345678    矢田亜希子      タケダクミコ
12354567    高輪のやしろ明き夫人 ノビ
23456274    123456789       

上のようなデータを従業員番号、氏名(漢字)、(カナ)の順にエラーをチェック
していくのですが、エラーがある場合にはそこのセルを指定してメッセージボ
ックスをだしたいのです。もし、従業員番号にエラーがなければそこの列全部
を読み込んだ時点で従業員番号OKとメッセージをだし、(漢字)チェックに
移るという仕様でかんがえております。





712 :どぶねずみ:03/01/23 17:14
今は
Private Sub CommandButton1_Click()
Dim i, ErNum As Long
ErNum = 0
For i = 7 To 10 '調べる行を入れる
If Len(Cells(i, 1)) <> 8 Then '調べる列を指定
Cells(i, 1).Select
MsgBox (i & "・・・エラーです")
ErNum = ErNum + 1
End If
Next
If ErNum = 0 Then
MsgBox "エラーは無かったよ"
End If
Dim R As Range
with CreateObject("VBScript.RegExp")
Each R In Range("B7", Range("B10").End(xlDown))
If Not .test(Trim(R.Value)) Then
R.Select
If MsgBox(R.Address(0, 0) & "... Error発見") = vbOK Then
Exit Sub
End If
End If
Next
End With
End Sub
で、問題は数字の場合、空欄の場合はエラーがでないんですー。
お教えください 



713 :名無しさん@そうだ選挙にいこう:03/01/23 20:35
>>704
Winの検索ってなんですか?
すみません。
教えて下さい。
>>706
book1の再表示じたいがありません。

Book1の再表示じたいが、ありません。

714 :名無しさん@そうだ選挙にいこう:03/01/23 20:46
>>713
Windowsのスタート→検索のこと

Excelのメニュー→ウィンドウ→再表示

715 :名無しさん@そうだ選挙にいこう:03/01/23 20:54
>>712
IFを記述すれば良いだけだろ?
(数値はislng辺りでチェックして、空白は<>"")

716 :なな:03/01/23 21:06
ファイルではなく、Excelをたちあげると
Book1ではなくPerspnalがひらきます。
再表示は、ありません。


717 :名無しさん@そうだ選挙にいこう:03/01/23 21:11
>>716
メニュー→ウィンドウ→表示しない→Excel再起動
Personal.xlsは保存すること

718 :名無しさん@そうだ選挙にいこう:03/01/23 22:28
>691

マクロを組んだXLSファイルと同じフォルダに処理したいファイルを全部入れて実行

Sub Test()
Dim fs As FileSearch, openBook As Workbook, Col As Integer
Dim newBook As Workbook
On Error GoTo ERR
Application.ScreenUpdating = False
Set fs = Application.FileSearch
fs.NewSearch: fs.LookIn = ThisWorkbook.Path: fs.FileName = "*.xls"
If fs.Execute = 1 Then Exit Sub
Set newBook = Workbooks.Add(xlWBATWorksheet)
For i = 1 To fs.FoundFiles.Count
 If Dir(fs.FoundFiles(i)) <> ThisWorkbook.Name Then
   Set openBook = Workbooks.Open(fs.FoundFiles(i))
   Col = newBook.ActiveSheet.Range("IV1").End(xlToLeft).Column + 1
   openBook.ActiveSheet.Range("A1:A10").Copy
   newBook.ActiveSheet.Cells(1, Col).PasteSpecial (xlPasteAll)
   openBook.Close
 End If
Next i
Application.DisplayAlerts = False
newBook.ActiveSheet.Columns(1).Delete
ERR:
Application.DisplayAlerts = True
Set openBook = Nothing: Set newBook = Nothing: Set fs = Nothing
End Sub

719 :691:03/01/24 00:00
>>710>>718
見捨てられたと思ってたら、、、ありがとうございます!!
早速明日やってみます!!

720 :名無しさん@そうだ選挙にいこう:03/01/24 09:10
エクセル2kでセルに文字を入れて
そのセルに対角に斜線(/)を入れたいのですが
どうやったらできるのでしょうか?
よろしくお願いします。

721 :名無しさん@そうだ選挙にいこう:03/01/24 10:06
>>720
斜め罫線だよね。
自動記録でやってみれ。

722 :なな:03/01/25 00:05
>>717
ありがとうございます。やってみます。

723 :名無しさん@そうだ選挙にいこう:03/01/25 09:32
マクロのモジュールを一括解放できるツールはありませんか?
インポートはドラッグで簡単なんですけどね

724 :ああああ:03/01/26 13:43
すんません、うまくいかないので教えてください。
VBSのファイルから、エクセルを起動してファイルオープンのダイアログ
を表示したいのですが、(↓VBSファイル内の一部)

1:Dim objXL
2:Set objXL = CreateObject("Excel.Application")
3:objXL.Visible = TRUE
4:objXL.Dialogs(xlDialogOpen).Show

↑4行目で、実行時エラーが出てしまいます。これ、無理なんでしょうか?

725 :名無しさん@そうだ選挙にいこう:03/01/26 14:05
>>723

標準モジュールを全部消すマクロ
Sub HogeHoge()
  Dim Obj1 As Object, Obj2 As Object
  Set Obj1 = ActiveWorkbook.VBProject.VBComponents
  For Each Obj2 In Obj1
    '//Moduleだけ削除する
    If Obj2.Type = 1 Then Obj1.Remove Obj2
  Next
  Set Obj1 = Nothing
End Sub

XPでは制限があるらしいですが。

726 :名無しさん@そうだ選挙にいこう:03/01/26 17:09
組込定数が使えないようで。

xlDialogOpen=1なので

Dim objXL, DlgAns
Set objXL = CreateObject("Excel.Application")
objXL.Visible = TRUE
objXL.Dialogs(1).Show


727 :726:03/01/26 17:11
>>724
が抜けてました。

728 :名無しさん@そうだ選挙にいこう:03/01/26 18:27
>>725
> XPでは制限があるらしいですが。

ツール→マクロ→セキュリティ
→「Visual Basic プロジェクトへのアクセスを信頼する」にチェック

729 :名無しさん@そうだ選挙にいこう:03/01/26 19:28
>>725
>>728
ありがとうございます。試してみます。

730 :ああああ:03/01/26 20:53
>>726-727 ありがとうございます。ありがd。

731 :名無しさん@そうだ選挙にいこう:03/01/27 01:38
一つ質問なのですが、
  並び替え前      並び替え後
A B C A  B  C   A A B B C C
1 4 7 10 13 16 1 10 4 13 7 16
2 5 8 11 14 17 ⇒ 2 11 5 14 8 17
3 6 9 12 15 18 3 12 6 15 9 18

上のように並び変える場合、簡単な方法で並び変え可能でしょうか?
もし、ありましたらアドバイス教えてください。
また、このように変換できるマクロがあるのでしょうか?

732 :名無しさん@そうだ選挙にいこう:03/01/27 01:44
>>731
A B C A B C ⇒ A A B B C C
と言うところが、よく分からない。

マクロは「ある」のじゃなくて、「作る」ものなんだけど・・・。

733 :名無しさん@そうだ選挙にいこう:03/01/27 06:02
マクロの一括エキスポートする方法も教えて欲しい

734 :名無しさん@そうだ選挙にいこう:03/01/27 09:43
>>731
横のソートは簡単にはできないかと
別のシートにコピペする際に縦横換えてソート
それをさらに別のシートに縦横換えてコピペ


735 :名無しさん@そうだ選挙にいこう:03/01/27 12:06

セルA1が「a」ならセルA2は「1」
セルA1が「b」ならセルA2は「2」
セルA1が「c」ならセルA2は「3」
セルA1が「d」ならセルA2は「4」
セルA1が「e」ならセルA2は「5」
.
.
.
.        
みたいな表を作成したのですがイマイチ上手く行きません。
商品名やら社名やらを入力すると自動的にそれに対応するコードが出るようなそんな表です
どなたか宜しくお願いします

736 :dada:03/01/27 15:52
みなさん、教えてください。
従業員番号従業員氏名(漢字)従業員氏名(カナ)
12345678     矢田亜希子第一
123456789     [空白] ダイイチ

従業員番号八桁、 従業員氏名全角(漢字)、 従業員氏名(カナ)、
それぞれ、空欄などの場合はエラーを出す処理を考えています。
最後、カナのところを考えていますが、わかりません。おしえてください。




737 :dada:03/01/27 15:57
上のものですが、ちなみに今のところは次の部分まで考えました。
Private Sub CommandButton1_Click()
Dim i As Long, j As Long
Dim s As Boolean
For i = 1 To 3
s = False
For j = 7 To Range("A65536").End(xlUp).Row
If kanji(Cells(j, i), i) Then
s = True
End If
' ErNum = ErNum + 1
'If ErNum = 0 Then
Next
If s = False Then
MsgBox "列目エラーなし"
End If
Next
End Sub
Function kanji(myR As Range, myI As Long) As Boolean


738 ::03/01/27 15:57
Select Case myI
Case 1
If Len(myR.Value) <> 8 Then
myR.Select
MsgBox "文字数エラー"
kanji = True
End If
Case 2
If myR.Value = "" Then
myR.Select
MsgBox "空白セル発見"
kanji = True
Else
If LenB(myR.Value) = _
LenB(StrConv(myR.Value, vbFromUnicode)) Then
Else
myR.Select
MsgBox "半角文字発見"
kanji = True
End If
End If
End Select
End Function



739 : :03/01/27 18:47
セルのA1からA10までにそれぞれ数値が入っているとして、
1つおきずつのセルを選択してコピーし、それをとなりの列に並べたいのですが
VBAでどうやればいいですか?

740 :名無しさん@そうだ選挙にいこう:03/01/27 18:53
>>733

Sub HogeHoge()
  Dim Obj1 As Object, Obj2 As Object, DirName As String
  '//ActiveWorkbookが対象
  With ActiveWorkbook
    Set Obj1 = .VBProject.VBComponents
    If .Path <> "" Then DirName = .Path Else PathName = CurDir
  End With
  DirName = DirName & Application.PathSeparator
  For Each Obj2 In Obj1
'//タイプが標準Moduleかつ空でないものだけExport
    With Obj2
      If .Type = 1 And .CodeModule.CountOfLines > 0 Then
        .Export DirName & .Name & ".Bas"
      End If
    End With
  Next
  Set Obj1 = Nothing
End Sub

741 :名無しさん@そうだ選挙にいこう:03/01/27 19:06
>>731

A1:F4までその表が入っているとすると。

A1:F4を選択し、
 データ→並べ替え→ オプションで 方向を列単位に変更し、
 ソートキーを最優先キーを行1・昇順、2番目のキーを行2・昇順としてOK

これをマクロで記録して、Select・Selectionをはずすと、

Sub HogeHoge()
Range("A1:F4").Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlLeftToRight, SortMethod:=xlPinYin
End Sub

742 :名無しさん@そうだ選挙にいこう:03/01/27 19:10
>>735
(V/H)LOOKUPワークシート関数またはSUMIFワークシート関数でいいのでは?

743 :名無しさん@そうだ選挙にいこう:03/01/27 19:48
>>742
いや、それがなぜかうまくいかなくて...
スイマセン、式を教えていただけるとありがたいのですが...

744 :名無しさん@そうだ選挙にいこう:03/01/27 20:06
>>740
ありがとうございます。
こういうマクロは便利です。

745 :名無しさん@そうだ選挙にいこう:03/01/27 22:11
>>743
A1:A10に会社名、B1:B10にコード番号、C1に検索する会社名が入ってる場合。

ツール → アドイン でLookupウィザードにチェックがついてるのをまず確認

=VLOOKUP(C1,A1:B10,2,FALSE)
でC1セルの値と対応するコード番号が取得できます。
会社名が無かったらエラーになります。

もし、会社コードが数値(数値として演算可能)ならば、
=IF(COUNTIF(A1:A10,C1)>1,"複数一致",IF(COUNTIF(A1:A10,C1)=0,"一致なし",SUMIF(A1:A10,C1,B1:B10)))
という式でLookUp風の処理が出来ます。

746 :745:03/01/27 22:23
>ツール → アドイン でLookupウィザードにチェックがついてるのをまず確認
 ずっと勘違いしてますた。必要なかったようです、スマソ。

LOOKUPワークシート関数を使うとV(H)LookUpと同じように数値以外も取れます。

=LOOKUP(C1,A1:A10,B1:B10)

VLookUpの最後の引数が省略またはTrueの時と同じく、検索キーが昇順に並んでないとだめなんだそうです。

747 :名無しさん@そうだ選挙にいこう:03/01/27 23:04
>737

関数の方が速いと思うが。。。
=IF(AND(LEN(A7)=8,ISNUMBER(A7)),1,0)
=Mod(Len(B7),2)
=IF(AND(LENB(C7)=LENB(JIS(C7)),LENB(C7)/2=LENB(ASC(C7))),1,0)

Sub aaa()
Dim r As Range, s As Range
Set r = Range("A7:A" & Range("A65536").End(xlUp).Row)
For i = 0 To 2
 For Each s In r.Offset(0, i)
  Select Case i
  Case 0
   If Not IsNumeric(s) Or Len(s) <> 8 Then
     MsgBox s.Address & ""
   End If
  Case 1
   If s = "" Or _
    (LenB(StrConv(s, 128)) Mod 2) > 0 Then
     MsgBox s.Address
   End If
  Case Else
   If s = "" Or _
    s <> StrConv(s, 4) Or s <> StrConv(s, 16) Then
     MsgBox s.Address
   End If
  End Select
 Next s
Next i
End Sub

748 :名無しさん@そうだ選挙にいこう:03/01/28 11:03
>>745,746
サンクスです!上手く行かなかった理由がわかりました。
で、ふと思ったのですが、このようにしてとったコードナンバーを連番でとる事ってできるのでしょうか?

例えば「a」がこの表の中で2回目なら「1002」、3回目なら「1003」、4回目なら「1004」
同じく「b」がこの表の中で2回目なら「2002」、3回目なら「2003」、4回目なら「2004」
みたいな感じです。

こう言う事って可能なんでしょうか?VLOOKUPで各社名に対応したコードを表示させつつも
そのコードを連番で取る、みたいな...

749 :名無しさん@そうだ選挙にいこう:03/01/28 11:13
>>748
VBAが解るなら楽勝


750 :748:03/01/28 19:05
>>749
いや、VBA解りませぬ...今時情けない話ですが、まだ未知の領域でして...
教えて頂けるとありがたいです


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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)