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

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

VBAについて Ver.4.0

1 :デフォルトの名無しさん:05/01/07 23:30:29
前スレ
http://pc5.2ch.net/test/read.cgi/tech/1078187762/

2 :デフォルトの名無しさん:05/01/07 23:57:31
22

3 :デフォルトの名無しさん:05/01/08 00:19:56
3げっと。

4 :デフォルトの名無しさん:05/01/08 00:29:45
このスレをたてたのは私。そして私は4様。誰もこないな。。。

5 :デフォルトの名無しさん:05/01/10 16:22:47
スレ立てお疲れ様です。

Excel2002で早速質問なのですが、
今Sheet1がアクティブになっている状態で、Worksheets("Sheet2").Range("A1").Select
のコードを実行しようとしたのですが、「RangeクラスのSelectメソッドが失敗しました」
とエラーが出ます。

Sheet2は存在する状態にも関わらず、なぜSelectできないのでしょうか。
ご回答いただければ幸いです。

6 :いけめん太郎:05/01/10 16:34:47
>>5 Sheet2をアクティブにしてからA1を選択してはいかがですか?

僕も質問させていただきますと、
Excel2000にて、セル範囲の各値を、
10項目(セル)ずつ、スペースを一つずつ空けてテキスト形式にて
保存する方法を探しています。
1 1 1 1 1 1 1 1 1 1 **項目
2 2 2 2 2 2 2 2 2 2 ** (値)
のように、右端に項目名を書き込みし、
その下の段の右端にその項目の値を書き込みたいと思っています。
セルの値のところ 1 1 1 1 の辺りは、一行の値を書き込み、
右端に一項目ずつ、見やすく記入したいと思っています。
Cells() で指定し、Print()にてファイルに書き込むと、
大きなタブが入ってしまいます。
セル範囲の参照は、ベタ打ちでもOKです。
ご意見よろしくお願い致します。

7 :デフォルトの名無しさん:05/01/10 20:31:55
Public Sub 変数を使った計算例()
X = 10
X = X + 20
Range("A1").Value = X
End Sub
基本的なことが・・・・反映することができません〜


8 :デフォルトの名無しさん:05/01/10 21:25:23
>>6
Print → Write でどう?

>>7
質問の意味がよくわからないけど、単に呼び出してないだけとか。

9 :デフォルトの名無しさん:05/01/10 21:55:11
>>5
ActiveなシートしかSelectできないです。
ちなみにValue取得はActiveでなくてもできます。


10 :デフォルトの名無しさん:05/01/10 21:58:44
>>7
うちでは問題なくできました。(Excel2000)


11 :デフォルトの名無しさん:05/01/10 22:11:08
>>6
>>9

SelectするにはActiveにしないといけないのですね。
とても参考になりました。ありがとうございます。

12 :デフォルトの名無しさん:05/01/10 22:19:50
7ですができました。実行していませんでした。

13 :デフォルトの名無しさん:05/01/10 23:14:19
>>6
少し、違うかもしれないが、
1 セルの幅を数値に合わせる。
2 テキスト(スペース区切り)*.prnで保存

14 :marukome:05/01/11 12:17:33
こちらで質問してよくなければどこかへ誘導して頂けたらうれしいです。

<アップロードの処理>
エクセルVBAで、あるサイトをIEで開く処理まではやっとできたのですが、
そのサイトの(テキストボックス?)にローカルのパスとファイル名を
入れて、ボタンを押すという作業をさせたいと思います。

ソースを見てみたのですが、どうもPHP3とか書いてあるのですが、
よく分かりません。
何かヒントなりあればよろしくお願いします。

15 :marukome:05/01/11 13:58:24
sendkeys を使っても、そのサイトが更新されたらすぐに使えなくなって
困ってます。不安定なので、できればなんとかならないかと

16 :デフォルトの名無しさん:05/01/11 17:33:00
End Subの後に
Option Base 1をいれたらエラーがでるのです。
エラーをださない方法ありますか?


17 :デフォルトの名無しさん:05/01/11 19:32:33
>>16
Option Base 1ステートメントはモジュールの先頭でしか宣言できなかったと思う。
なので、End Subの後に入れるのは不可能っぽいです。

18 :デフォルトの名無しさん:05/01/11 19:43:11
>>17
ご返答ありがとうございます。
Option Base 1を先頭にしてみます。

19 :デフォルトの名無しさん:05/01/11 21:03:40
>>14
with ie.Document.Forms(0)
.Item("テキストボックスのName").Value = 値
.Submit
end with

細かいところは、目的のフォームに合わせて変えてくれ。

20 :marukome:05/01/11 22:10:19
>>19
ありがとうございます!
早速試してみます。
また、よろしくお願いします!

21 :デフォルトの名無しさん:05/01/11 23:06:20
OutLookの予定表画面で
[ファイル]→[インポートとエクスポート]→[ファイルへエクスポート]→[MicrosoftExcel]
としてエクスポートしたExcelファイルを開くと、
"内容"の列に改行文字(?)として"・"が表示されることがあります。
これを削除したくて、次のようなソースを書きましたが、
依然として"'・"と表示される、文字のようなもの(選択できません)が残ります。
どうやったらExcel上で消えるんでしょうか?

Sub ToNoLf()
'改行コード削除
Cells.Replace What:="" & Chr(10) & "", Replacement:="", _
LookAt:=xlPart, SearchOrder:= xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
End Sub


22 :21:05/01/11 23:09:09
言葉足らずでした。
上に書いたマクロを実行すると、"・"が減るんですが、"・"が
2つあるセルは1つだけになるということです。
文字コードに弱いのでどなたかお願いします。

23 :デフォルトの名無しさん:05/01/11 23:57:53
>>21
OutLook持ってないから確かめられないけど、
改行コードがCR+LFなんじゃないかな?

そうだったらCRも同じ方法で除去すればOK
文字コードはChr(13)
まとめて、vbCrLfでもいけそうだけど、環境依存になるかも。

あと、空白セルは見ても仕方ないので、CellsよりUsedCellsとか
の方がよさげ。

24 :デフォルトの名無しさん:05/01/12 12:44:15
サブフォームに表形式フォームを組み込んでいるのですがスクロールさせると
最後のレコードの後に灰色の隙間が3レコード分くらい空いてしまう
(表形式フォームをサブフォームに組み込むとデフォルトでこうなると思います)
のですがこれを消すことは出来ないでしょうか?
分かりにくいかとは思いますがご教授お願い致します。


25 :デフォルトの名無しさん:05/01/12 17:13:12
>>24
全然VBAじゃない気がする。

アクセスと見て、こちらに誘導↓
http://pc5.2ch.net/test/read.cgi/bsoft/1089812359/l50

26 :marukome:05/01/12 19:50:47
>>19さん。
せっかくヒント与えていただいたのに、
すみません、できませんでした。
↓がExcel側のコードです。実際細かいところでつまづいていると思います。
よろしくご教授お願いします。
-----------------------------------------

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True

objIE.Navigate "https://***/*****.php3?action=4"

Do While objIE.Busy = True
DoEvents
loop

-----------------------------------------


27 :21:05/01/12 19:50:58
>>23
できました!ありがとうございます。

> あと、空白セルは見ても仕方ないので、CellsよりUsedCellsとか
の方がよさげ。

仮ソースなので自動記録のマクロをいじっただけなんです。。。


28 :marukome:05/01/12 19:51:36
 
下記がソースです(一部伏字)
----------------------------------------
<form action="*****.php3" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="1">
<tr>
<td>
<input type="file" name="***file" value="" size="20">
<a href="Javascript:openSubWindow('/guide/?m=n&s=18')"><img src="****.gif" width="16" height="14" border="0" align="absmiddle" alt="○○な○○"></a>
</td>
</tr>
<tr>
<td align="center"><input type="submit" value=" アップロード "></td>
</tr>
</form>
----------------------------------------

29 :デフォルトの名無しさん:05/01/12 20:42:22
Sub 配列の要素数を変更()
Dim Wakusei() As String
ReDim Wakuswi(1)
Wakusei(0) = "水星": Wakusei(1) = "金星"
ReDim Preserve Wakusei(3)
Wakusei(2) = "地球": Wakusei(3) = "火星"
End Sub
これを実行するとエラー9インデックス有効範囲ではありません
となるのですが、どうすれば解除することができるのでしょうか?

30 :デフォルトの名無しさん:05/01/12 20:54:12
>>29
ネタにマジレスかもしれんが、
Wakuswi(1)→Wakusei(1)

マジボケだったら、option Explicit をおすすめする。

31 :デフォルトの名無しさん:05/01/12 21:04:03
>>30
ご返答ありがとうございます。
間違い訂正してもエラーが出ます
option Explicit をつければなおるのですか?
先頭につけるものなのかな〜



32 :デフォルトの名無しさん:05/01/12 23:51:30
>>29
うちの環境では問題出ませんでした。(Excel2002)
>>30の変数の訂正をした後ね。
これでエラーが出るならちょっと分からないかも。。

33 :デフォルトの名無しさん:05/01/13 00:32:04
同じ2002なのに、エクセルの方に何か書けばいいのかな〜

34 :デフォルトの名無しさん:05/01/13 01:02:47
>>33
option base 1ステートメントは宣言してないでしょうか。
もししていたなら、Wakusei(0) = "水星"でエラーになります(要素数0は存在しないため)。

考えられる原因としたらこのぐらいかな。。
他にはモジュールにsubプロシージャなどは記述していませんか?

35 :デフォルトの名無しさん:05/01/13 11:09:07

質問です。
下記スレより誘導されました。
●EXCEL・VBAの勉強法教えてスレ●
http://pc5.2ch.net/test/read.cgi/tech/1054356121/l50

ExcelVBAにて、
列数に応じて列幅を変えたいのですが、
列幅をPixcel指定することは出来ないのでしょうか?


36 :デフォルトの名無しさん:05/01/13 17:41:23
>>34
ご返答ありがとうございます。
option base 1の所に書いてありました。
他のモジュールの方でためしたら、エラーはでなかったです。
でも何もエクセルの方に反映されませんでした。
こういうのがいくつかあるのです・・・こういうものなのでしょうか?




37 :デフォルトの名無しさん:05/01/13 21:01:20
>>36
どういたしまして。解決できて良かったです。

>でも何もエクセルの方に反映されませんでした。
これはsubプロシージャの変数がセルに反映されていないという意味でしょうか?

>>29のプロシージャだけだと、実行してもセルなどには何も反映されません。
もしセルに変数の値を反映させたいのならば、cells(1,1)=Wakusei(0)などとします。
上記はA1セル(cells(1,1)またはRange("A1"))にWakusei(0)の値を代入せよという意味です。

38 :デフォルトの名無しさん:05/01/13 22:25:07
>>37
やっぱりセルに書かないと反映されないのですね

色々モジュールに書いているのですが必要なのかどうかわからなくなっています
まだ本の最初の方だからそういうふうに思うのかな〜
後半になればVBAのすごさがわかるようになるのかな〜

39 :デフォルトの名無しさん:05/01/13 22:43:18
セルに反映したいのにセルに書く(代入する)のが面倒ってことかな。
何か意味が分からない。
処理中は2次元配列変数に代入しておいて最後に一括してセルに
反映することもできます。



40 :デフォルトの名無しさん:05/01/13 23:28:39
VBAで書かなくてもセルに書いた方が早いと思っているのです。
まだVBAすごさがわかっていません。
今の時点ですごいのだけど、それに気づいていないのかな〜
反映すると面白いと思う、でも必要性を考えると ?
これからなのかな?

41 :デフォルトの名無しさん:05/01/13 23:37:53
>>35
ここ読んでみてください。
ttp://www.keep-on.com/excelyou/2001lng4/200106/01060093.txt

42 :デフォルトの名無しさん:05/01/14 00:15:23
>>40
セルに書いた方が早いなら無理にVBAでコードを書かなくても良いような気がします。
結局は「適材適所」、これに尽きるかと。
自分は業務で同じ作業を手で何度もやるのが面倒&間違う恐れもあるためVBAを使うことが多くなりました。

ヘルプも多少分かりづらい部分があるとはいえ、有用ですよ。
あとは、マクロ記録をしてどういうコードが記述されるか見ていくうちに、徐々に分かってくるようになっていくかも。

43 :デフォルトの名無しさん :05/01/14 00:37:58
>>42
ご返答ありがとうございます。
もうちょっとがんばってみます。
VBAでゲームが作れるみたいですね
まだまだ先かな〜

44 :デフォルトの名無しさん:05/01/14 02:26:45
エクセルからmdbファイルに接続してレコードを取得する時

Sheets(1).Range("A1").CopyFromRecordset r

こんな感じでレコードを取得できるんですが
セルに表示させる前にレコードの各要素を配列変数で受け取りたいと思って

Dim X(0 to 9) As Strange
中略
X.CopyFromRecordset r

といった感じで、配列に渡そうとしても出来ません
配列変数などに入れる方法ってあるんでしょうか?


45 :デフォルトの名無しさん:05/01/15 01:55:07
>>26
こんな感じでどうでしょう
Sub test()
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "file://c:\test.htm"
Do While objIE.Busy = True
DoEvents
Loop
SendKeys "{TAB 3}", True '環境に合わせて数字を変更してください
SendKeys "c:\test", True '参照に表示させたい文字列
Set x = objIE.document.all.tags("input")
For Each y In x
If y.Value Like "*アップロード*" Then
y.Click
End If
Next
End Sub


46 :デフォルトの名無しさん:05/01/16 17:13:19
質問させてください。

プライベート関数の中からgoto構文を使ってパブリック関数へ飛ばす際、
パブリックで必要な処理が終わった後に再びプライベートの中のgotoの次の行の処理を
させることは出来るのでしょうか?

ちょっと分かりにくい説明かも知れませんが、例えば、

private sub プライ()

Goto 処理1
Goto 処理2

end sub

purlic sub パブ()

'処理1
label1.caption = "まいった
'処理2
label2.caption = "困った"

end sub

こんな感じの文で、処理1が終わった後に一旦プライベートの方に戻り、それから再び
処理2の方に進みたいのです。

すいませんがどなたか力を貸してください。

47 :デフォルトの名無しさん:05/01/16 17:49:35
>>46
Goto構文は流れが分かりにくくなって、バグを誘発するだけだから
できるだけ使わないほうがいいと思うが。
普通にこんな感じではだめ?

private sub プライ()
 Call 処理1
 Call 処理2
end sub

public sub 処理1
 label1.caption = "まいった
end sub

public sub '処理2
label2.caption = "困った"
end sub

48 :デフォルトの名無しさん:05/01/16 18:17:18
>>47
どうもありがとうございます!
Call構文自体今まで知らなかったです。
いやぁ無知は罪なもんですねw
今からCall構文について調べてみます。
ありがとうございました!

49 :デフォルトの名無しさん:05/01/16 19:36:28
条件付き書式によって変わっているセルの色を取得する方法
はないでしょうか?


.Interior.ColorIndexでは元の色しか返ってきません
お願いします

50 :デフォルトの名無しさん:05/01/16 19:56:03
>>49
ここ読んでみてください。
ttp://keep-on.com/excelyou/1999lng4/199908/99080044.txt

51 :デフォルトの名無しさん:05/01/16 20:02:26
>>46

>>47さんの処理1と処理2を1つの関数にまとめるなら、

Private Sub プライ()

Call パブ(1) '処理1
Call パブ(2) '処理2

End Sub

Public Sub パブ(Arg As Integer)

Select Case Arg
Case 1 '処理1
  label1.Caption = "まいった "
Case 2 '処理2
  label2.Caption = "困った"
End Select

End Sub

という感じで。

52 :49:05/01/16 20:56:38
>>50

初心者には難しいですがなんとかできそうです
ありがとうございました

53 :デフォルトの名無しさん:05/01/16 22:18:07
>>52
SpecialCells(xlCellTypeAllValidation)

を使えば少しは楽になるかな。
とにかく、Excelで色の取得するのは何かと大変。。。

確か隠し関数にちょうどいいのがあった気がするんだけど、
何だったっけ?

54 :デフォルトの名無しさん:05/01/16 22:51:13
エクセルで確率密度関数(Px)に対応した累積分布関数(Fx)の値を作成したい
のですが、乱数の値が1の場合、確率密度関数が0.05に対応した累積分布関数の値
の算術式はどのようになるのでしょうか?


55 :デフォルトの名無しさん:05/01/16 22:58:31
>>54
それはVBAじゃなくて、単にExcelの関数で十分なのでは。

56 :デフォルトの名無しさん:05/01/16 23:03:12
補足。
よくある分布関数なら、NORMDIST、BETADISTとかで。
積分可能な関数なら積分した式をぶち込めば終わり。

むちゃくちゃな分布なら・・・セルに計算させて足し算?

57 :デフォルトの名無しさん:05/01/17 15:19:36
>>53
Get.Cell

58 :デフォルトの名無しさん:05/01/18 23:27:25
Sub セル範囲を習得_エラー処理()
Dim prRange As Range
On Error GoTo errMSG
Set prRange = Application.InputBox(Prompt:="印刷範囲を選択してください"), _
Title:="印刷範囲指定", Type:=8)
With ActiveSheet
.PageSetup.PrintArea = prRange.Address
.PrintPreview
End With
Exit Sub
errMSG:
MsgBox "処理を終了します"
End Sub
エラー処理がエラーになる・・・
_ がいけないのでしょうか?

59 :デフォルトの名無しさん:05/01/18 23:46:37
うちではエラー出ませんね。
てか、括弧が多いのは直してますよね。

60 :デフォルトの名無しさん :05/01/19 00:03:11
あっ確かにカッコが多い。でも本にこう書いてる。
カッコはずしてためしてみます。ご返答ありがとうございます

61 :デフォルトの名無しさん:05/01/19 00:11:52
はずしたらできました。ありがとうございます

62 :デフォルトの名無しさん:05/01/19 16:57:12
イベントプロシージャに関する質問です。

特定の列のセルをダブルクリックしたときにだけ
マクロを実行するにはどのようなコードを書けばよいのでしょうか?

B列のどれかのセルをダブルクリック→イベントプロシージャ
それ以外のセルをダブルクリック→反応無し
としたいのです。

IfやActivecell.Rangeなどで試行錯誤したのですがうまくいきませんorz
教えて下さい。よろしくお願い致します。

63 :デフォルトの名無しさん:05/01/19 21:29:01
Worksheetイベント
BeforeDoublClick
Target.Column = 2

64 :デフォルトの名無しさん:05/01/20 00:49:23
質問させてください。

Access VBAでクラスモジュールを作成、クラスモジュール内で自身のクラス
名を取得したい場合、どのようにすればよいでしょうか。

クラスモジュール内でデバッグ用に、現在実行中のクラスが何処かをmsgbox
で表示させたい、というのが意図です。

宜しくお願いいたします。

65 :デフォルトの名無しさん:05/01/20 03:05:37
AutoFilterの質問なんですが。

本に、
With Range("出荷伝票テーブル")
.AutoFilter 2, "=スーパーマルジュウ", xlOr, "=フードランド"
.AutoFilter 8, ">=1999/8/1",xlAnd, "<1999/9/1"
End With
というVBAがあって、これを例えば
With Range("出荷伝票テーブル")
.AutoFilter 2, "=スーパーマルジュウ", xlOr, "=フードランド"
.AutoFilter 3, "=アイス",xlOr, "=苺"
End With
のようにして計4つのキーワードの抽出をしたいのですが、こうすると
全部消えてしまいます。AutoFilterを2つ使う場合、1つはキーワード
もう一つは期間でやらないとダメなんでしょうか?

66 :デフォルトの名無しさん:05/01/20 17:21:41
>>63
回答ありがとうございます。
大変参考になりました。感謝感激♪

67 :デフォルトの名無しさん:05/01/20 19:36:42
>>65
フィールドナンバーは合ってます?

68 :デフォルトの名無しさん:05/01/20 21:07:15
>>67
フィールドナンバーは合ってます。

69 :marukome:05/01/21 21:42:24
>>45
ありがとうございました。できました。
後段のfor eachの処理をこれからですが
勉強します。本当にありがとうございました!
遅くなりましてすみませんでした。

70 :デフォルトの名無しさん:05/01/22 22:54:58
X 1 2 3 4
P(x) 0.25 0.15 0.1 0.05
F(x) 0.7 0.85 0.95 1.0
Rnd関数により一様乱数を生成後、ある確率密度関数に従う乱数の生成は、
乱数―確率関数−累積分布関数のテーブルを用いて行う。上の表を参照
して
乱数(x)の値と累積分布関数の値F(x)を用いて乱数を作成するFunctionプロシージャ
を作成してください。
次に、生成した一様乱数の値yが
     F(xi) ≦ y < F(xi + 1)
 のときに、乱数Xは「xi + 1」とする。
 例えば、乱数Rndの値yが0.567の場合、
F(0.45) ≦ y(0.567) < F(0.7)
となり、乱数Xとして「5」を選択する。
Functionプロシージャの実行結果(乱数の発生結果)
はエクセルのA12以下から結果が出るようにしたいです。
長文すいません。よろしくお願いします。助けてください。

71 :、、、、:05/01/23 00:10:33
どうしてもわかりません
天才の方々どうか教えて下さい。
セルの中の文字列をコピーする
コードがわかりません。


Excel中のセルの中の文字列を
ボタン一つでコピーして
ロータスのノーツに貼り付けたいのです。

一つのセル全体をコピーするのは記録で
作れますが、セルの中の文字列をコピー
するという記録がうまくいきません。

どうかお助け下さい。


72 :デフォルトの名無しさん:05/01/23 00:55:43
>71
ビジネスソフト板のExcelスレで同様の質問があり、回答も付いてるので向こうを見てこい

73 :デフォルトの名無しさん:05/01/23 09:54:47
下のようなコードを実行すると"loopに対応するdoがありません"というエラーが出てしまいます。
こんなエラーは見たことがなかったのですが、どこがいけなかったのでしょうか?
どなたか教えてください。お願いします。

sub 照合()
Dim finale0 As Integer
finale0 = Workbooks(acw0).Worksheets("基本").Cells(Worksheets("基本").Rows.Count, 9).End(xlUp).Row
Dim finale1 As Integer
finale1 = Workbooks(acw1).Worksheets("基本").Cells(Worksheets("基本").Rows.Count, 9).End(xlUp).Row
Dim gyou0 As Integer
Dim gyou1 As Integer
gyou0 = 6
gyou1 = 4

Do Until gyou0 = finale0

If Workbooks(acw0).Worksheets("基本").Cells(gyou0, 9) = Workbooks(acw1).Worksheets("基本").Cells(gyou1, 2) Then
Workbooks(acw0).Worksheets("基本").Cells(gyou0, 15) = Workbooks(acw1).Worksheets("基本").Cells(gyou1, 7)
gyou0 = gyou0 + 1
gyou1 = 4
Else
gyou1 = gyou1 + 1
If Workbooks(acw1).Worksheets("基本").Cells(gyou1, 2) = "" Then
gyou0 = gyou0 + 1
gyou1 = 4
End If

looping:
Loop
end sub

74 :デフォルトの名無しさん:05/01/23 11:21:44
>>73
End If が足りないから。

75 :デフォルトの名無しさん:05/01/23 12:27:38
>>74
1あぁ・・・本当だ・・・これを見つけられずに一週間も悪戦苦闘してた俺って一体・・・orz
どうもありがとうございます。


76 :タク:05/01/24 10:37:52
OS:XP
Access Version:2003
すいません、えっと
前もって変数が決められたものに対してSETステートメントを実行するときにクエリーで抽出させる方法はありますでしょうか?

----------------------------------------------------------------
例:

クエリ名 Q施工内容
抽出したい変数名 TEL

Dim TEL AS String * 20

Set DB_01 = CurrentDb()
Set ST_01 = DB_01.OpenRecordset("Q施工内容",dbOpenSnapshot)
----------------------------------------------------------------

このときにクエリを開く際にTEL変数の抽出をしたいのです。
何か構文はありますか?
それとも他に良い方法がありますでしょうか?
よろしくお願いします。


77 :デフォルトの名無しさん:05/01/24 18:19:42
CompactDatabaseでaccess97からaccess2003に変換する場合の
dbVersionの値はいくらのでしょうか?
4.0(access2002)以上ってないのでしょうか?
誰かご存知の方は教えてください。

78 :デフォルトの名無しさん:05/01/25 00:45:05
>>76
何が聞きたいのかさっぱり分からないんだが、
誰か分かる?

79 :デフォルトの名無しさん:05/01/25 20:02:52
Excelで時間割を作っています

「セルA1に時間を入力すると、そこを参照してセルB1に色を付ける。」と言ったことがやりたいのですが

例えばセルA1の値が9:00〜9:15(時間)の間であれば、セルB1に赤色を着色する様にしたいのですが

どうすればできるでしょうか、どうかご教授下さい。

80 :デフォルトの名無しさん:05/01/25 21:30:00
>>79
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    If Left(Target.Text, 1) = 9 Then
        If Right(Target.Text, 2) <= 15 Then
        Range("B1").Interior.ColorIndex = 3
        End If
    End If
End If
End Sub

81 :デフォルトの名無しさん:05/01/26 00:16:47
>>79
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    Select Case Target.Value
    Case Is > TimeValue("9:15")
      Range("B1").Interior.ColorIndex = xlNone
    Case Is >= TimeValue("9:00")
      Range("B1").Interior.ColorIndex = 3
    Case Else
      Range("B1").Interior.ColorIndex = xlNone
    End Select
  End If
End Sub


82 :デフォルトの名無しさん:05/01/26 01:07:11
>>79
条件付書式では不足?

83 :79:05/01/26 08:18:25
おはようございます、レスありがとうございます。
教えて頂いた式で想い通りの動作が確認できました。

いつもとは違い私には込み入った物を作っていますので
助かりました、ありがとうございました。

84 :デフォルトの名無しさん:05/01/26 11:07:23
>>79 です

度々すいませんが、解らなくなったので再度質問させて下さい。

If Target.Address の部分にもう一つのセルの時刻を取得させて

(セルA1(9:00から9:15の間の値))かつ(セルA2(15:00から15:15の間の値))であれば

(セルB1に赤色を着色、セルB2に青色を着色、セルB3に青色を着色、以下任意に追加)と言うようにできるでしょうか?




セルA1(開始時刻) と セルA2(終了時刻) を取得して

15分区切りの升目(セル)を、B列に作って居るので、時間の目盛りに沿って塗りつぶしたい(多色)のですが

よろしければ教えて下さい。

85 :デフォルトの名無しさん:05/01/26 22:38:16
エクセルのワークシートって、横(カラム)は、256までしかないの?
縦(ROW)はいくつまであるの??

86 :デフォルトの名無しさん:05/01/26 23:04:56
65536

87 :デフォルトの名無しさん:05/01/26 23:49:08
さんくす>>86

やっぱ、横(カラム)は、256より増やせないんですね??


88 :デフォルトの名無しさん:05/01/28 00:09:37
>84
何がしたいのかさっぱり分からんぞ
前半のA1とA2がB1,B2,B3と、どうリンクしてるのかも謎だ
前半と後半では質問内容が違うみたいだ

まず81氏のSelect Caseステートメントか
IF,Then Elseステートメントを使えば何でもできるぞ

Private Sub Worksheet_Change(ByVal Target As Range)
With Target

If .Column = 1 Then
If .Value > TimeValue("9:15") Then
.Offset(0, 1).Interior.ColorIndex = xlNone
ElseIf .Value >= TimeValue("9:00") Then
.Offset(0, 1).Interior.ColorIndex = 3
Else
.Offset(0, 1).Interior.ColorIndex = xlNone
End If
End If
End With
End Sub

A列の時刻からB列の設定をする場合は
If .Column = 1 Then をトリガーにして、Offset(0, 1)で指定すればいいし

A1とA2をトリガーにしたい場合は
If .Address = "$A$1" Or .Address = "$A$2" Thenとか
If .Row < 3 and .Column = 1 Thenなんか
使えば良いんだ

分かるところまで自分でコード作って考えてみないと作れないぞ

89 :デフォルトの名無しさん:05/02/01 16:25:24
ユーザーフォームにテキストボックスが4個あるとして、
ある条件をみたした時に、
カーソルを好きなテキストボックスへ持っていきたのですが、
どうすれば良いでしょうか?

90 :デフォルトの名無しさん:05/02/01 16:26:02
×持っていきたのですが、
○持っていきたいのですが、

91 :デフォルトの名無しさん:05/02/01 21:38:26
If (条件) Then
TextBoxXXX.SetFocus
End If

92 :デフォルトの名無しさん:05/02/02 23:27:36
>90
氏ね

93 :デフォルトの名無しさん:05/02/02 23:57:58
>>89

まず間違いなく92=89だが、「氏ね」のセリフを吐くだけで正答を書いてくれている
91さんには何にもなしかよ。
これじゃ日本がおかしくなるわけだ。あぁ嫌だ嫌だ

94 :デフォルトの名無しさん:05/02/03 09:59:29
昨今の不況で日本人は心まで貧しくなってしまったのかねぇ。


95 :デフォルトの名無しさん:05/02/03 23:46:09
91氏の答え以上に
答えようが無いし、これで出来るはずなんだけどなぁ

聴く方ももっと、具体的に自分なりに考えて書いたコード載せて
何をしたいのか、明確にしたほうが良いと思われ

ここで、もらった答えをコピペでは
その場しのぎにしかならないよ

96 :デフォルトの名無しさん:05/02/04 00:03:49
Excel vbaに限って言えば、プログラム経験が全くない人がウェブで質問しているケースが
多いように思う。
碌に変数の定義のしかたさえ知らない輩が、答えを教えてもらってシメシメとか思っているん
だろうな。第三者の視点から見ていても、今後の保守管理を当人が出来るのか心配になって
くるよ。

俺は絶対に自分が理解できるまで、他人から教えた貰ったコードは流用しないがね。

97 :デフォルトの名無しさん:05/02/04 18:41:59
VBAを使えるようになりたいと思って本屋さんに行ってきたんですが
ワードのVBA、エクセルのVBAと、別々の本になってました。
まさかそれぞれが独立してるとは思ってなかったので
何も買わずに帰ってきました。

最初にどれから学ぶべきなんですか?
ちなみに僕はアクセス使ってて、
最初から定義されてるマクロだけじゃ思うように出来なかったので
VBAをと思ったんですが。
でも、どうせ憶えるならエクセルのが良さそうだし・・・

98 :デフォルトの名無しさん:05/02/04 19:37:43
>97
勉強する目的を明確にしろ。
それ以上助言できん。


99 :デフォルトの名無しさん:05/02/05 00:19:43
>>97
ExcelかAccessがええんとちゃう

いや、俺もこれから覚えたいのだが
Word VBAって意味ある?

100 :デフォルトの名無しさん:05/02/05 00:37:16
漏れの職場では一部の課が桐とか使ってるが

今から勉強するならExcelかAccessだろうな
Excelも、その内部にVBそのものが実装されてるから
極めるとAccessのファイルやらCSVファイルやらオラクルのファイルをコントロール出来るようになる

VBAはExcelからはじめるのが取っ掛かりやすいかと
必要であれば、その先にあるAccessとかVB、SQL、オラクルを勉強すればいいし

Word は・・・・
会社の方針でワードで作ってくれと
言われなきゃ使わないなァ
Word VBAも使ってない

101 :デフォルトの名無しさん:05/02/06 21:35:16
OutlookのVBAを使ってみようと思ったらマクロ自動記録機能がないから、
どんなソース書けばいいかわからん。ヘルプじゃわからんし。ガックシ

102 :デフォルトの名無しさん:05/02/06 22:06:51
shellからOutlookExpressを起動させてメールを作成したいんですが、添付ファイルの
やり方がわからない・・・。誰か教えてくれないかなぁ。↓ネットで検索してここまでは分かった
だが。

Shell "C:\Program Files\Outlook Express\msimn.exe /mailurl:mailto:宛先?bcc=宛先&subject=件名
&body=本文%20"


103 :デフォルトの名無しさん:05/02/06 22:53:34
word VBAはいらんかも。
俺ならexcelかaccessでデータ抽出・適当に加工後、wordを起動して張り付ける。
情報処理の観点からすれば、それで十分でしょ。

104 :デフォルトの名無しさん:05/02/07 20:30:59
>>102
なんで、そんなメールボムみたいなのを作ろうとしてるんだ?

105 :デフォルトの名無しさん:05/02/07 20:35:28
sheet1からsheet2のセルをクリアしようとするとほんの一瞬画面がsheet2に移ってしまいます。
これをうつらないようにするにはどうしたらいいんでしょうか。

またhideで隠していたシートをvisible = trueとして表示する時にも同じように一瞬画面がそのシートに移ってしまいます。
これもどうしたら直るのかおしえてください。

106 :デフォルトの名無しさん:05/02/07 21:14:12
openするまえにhideする

107 :>104:05/02/07 21:27:26
得意先とのやりとりに使うプログラムなのでメーラーに送信履歴を残しておきたいのだよ。
メルボするなら態々メーラーを起動しないでSendMailを使って送信するわな。

108 :デフォルトの名無しさん:05/02/07 21:30:37
ログファイル作るだけでいいじゃん

109 :デフォルトの名無しさん:05/02/07 21:53:56
営業や重役がOEで確認したいんだとさ。



110 :105:05/02/07 23:04:28
hideしていたのを戻す時にも画面が移ってしまうんですが、それはどうしたらいいのでしょうか?

111 :デフォルトの名無しさん:05/02/07 23:14:46
よく読んでないが、

Application.ScreenUpdating = False

でどう?

112 :デフォルトの名無しさん:05/02/07 23:21:07
おお!できましたっ!!
ありがとうございます。


113 :デフォルトの名無しさん:05/02/09 15:20:08
質問させて下さい
Case文で、特定のセルに入力された時間の値を下記のように取得させたのですが

例) Case Is = TimeValue("7:00")

これを2つのセルから値を取得できる様にしたいのですが

Case Is = セルA1TimeValue("7:00") and セルA2TimeValue("7:00")

このようにする形式はあるでしょうか?
2つのセルから値を取り出して、どちらも正ならばAの処理をするとしたいのですが。
どうかご教授下さい。

114 :デフォルトの名無しさん:05/02/09 22:21:22
>>113
  Select Case True
  Case Range("A1").Value = TimeValue("7:00") And Range("A2").Value = TimeValue("7:00")
    MsgBox "どちらもTrueなのでAの処理をする"
  End Select

ってこと?

115 :デフォルトの名無しさん:05/02/10 00:15:26
読み辛いなぁ。
これならifにandで羅列していったほうが可読性は高そうだが・・

116 :デフォルトの名無しさん:05/02/10 01:32:53
そうか?
Select Caseは自分の場合、殆ど使わなかったんだが
Target.Value をつかうことしか思いつかなかったよ
Select Case Trueの"True"を使うことでずいぶんスッキリまとまっていて
114氏のセンスのよさを感じたよ

With Target
If .Address = "$A$1" Or .Address = "$A$2" Then
If Range("A1").Value = TimeValue("7:00") And Range("A2") = TimeValue("7:00") Then
MsgBox "Aの処理をする"
End If
End If
End With

漏れの頭ではこんなふうにしか書けなかったよ

117 :113:05/02/10 10:46:55
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5:$D$6" Then
Select Case True
Case Range("D5").Value = TimeValue("7:00") And Range("D6").Value = TimeValue("20:00")
Range("D43:BH43").Interior.ColorIndex = 4
Case Else
Range("D43:BH43").Interior.ColorIndex = xlNone
End Select
End If
End Sub

>>114様ありがとうございました、教えていただきました通り
上記のように関数を書き換えてみました、しかし巧く動作してくれません
何処か書式に誤りがあるでしょうか?

118 :113:05/02/10 11:02:24
質問し直したばかりですが、いまうまく動作させることができました。
慌ててしまい失礼しました。
下記手直しの文です。


Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$D$5" Or .Address = "$D$6" Then
Select Case True
Case Range("D5").Value = TimeValue("7:00") And Range("D6").Value = TimeValue("20:00")
Range("D43:BH43").Interior.ColorIndex = 4
Case Else
Range("D43:BH43").Interior.ColorIndex = xlNone
End Select
End If
End With
End Sub




119 :114:05/02/11 00:48:12
>>118
そういう処理なら、私ならこう書きます。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Check As Boolean
  
  If Intersect(Target, [D5:D6]) Is Nothing Then Exit Sub
  Check = Range("D5").Value = TimeValue("7:00") _
    And Range("D6").Value = TimeValue("20:00")
  Range("D43:BH43").Interior.ColorIndex = IIf(Check, 4, xlNone)

End Sub

120 :デフォルトの名無しさん:05/02/11 06:06:08
114はいい!
良いセンスしてる。


121 :118:05/02/11 19:12:05
>>114

こういう処理もあるのですね、参考になりました。

  If Intersect(Target, [D5:D6]) Is Nothing Then Exit Sub
  Check = Range("D5").Value = TimeValue("7:00") _
    And Range("D6").Value = TimeValue("20:00")
  Range("D43:BH43").Interior.ColorIndex = IIf(Check, 4, xlNone)

1行目の[D5:D6]の部分と 2、3行目の("D5")("D6")と同期して、4行目の処理が行われますが
参照セルを増やして個別の処理をさせることはできるでしょうか?

1行目の[D5:D6]を[$A:$B]などに代入処理して、別途式を作る途中ですが
例えばD7に値が入力された場合、2、3、4行目の処理内容を変えるようにできるでしょうか?

122 :デフォルトの名無しさん:05/02/11 19:12:22
条件付書式をマクロでいじる方法ありますか?

123 :デフォルトの名無しさん:05/02/11 19:22:25
ありません

124 :デフォルトの名無しさん:05/02/11 19:37:33
>>122
マクロの記録でちゃんと記録されるよ。
あとは自分で好きなように弄ればいい。
「FormatConditions」でググれば解説してるサイトもあるし。

125 :デフォルトの名無しさん:05/02/11 19:37:59
excelのVBAについてお聞きしたいのですが。

例えば、A列が分類分け、 B列が値 
そして、C列は、A列に応じた計算式によって値が入る

Aが ○ だったら C=B*100
Aが ● だったら C=B*200
Aが ■ だったら C=B*300
※○●■はキーワード

みたいな感じにしたいのです。
いろいろ勉強して、select caseを使うことによって
1件目限定なら実現できたのですが

それを、A列にデータが入っていれば2件目以降にも
自動的に適用されるようにすることができません。

どなたかアドバイスをいただけないでしょうか?
レベルは初心者です。


126 :デフォルトの名無しさん:05/02/11 20:05:08
>>125
>A列にデータが入っていれば2件目以降にも 〜
というのがよく判らんのだけど、ここら辺もう少し詳しく書いてくれたら。

127 :デフォルトの名無しさん:05/02/11 20:31:28
125です。

>>126
説明が足らなくて、申し訳ありません。

例えば、野菜を扱う表だったとして

A1 に大根 と入力すれば C1=B1*100 の値
A2 に人参 と入力すれば C2=B2*200 の値
A3 に白菜 と入力すれば C3=B3*300 の値

という感じです。
うまく伝わればよいのですが。

この表で言えば、A1の部分(1件目)だけなら、調べたサンプルを参考に
成功したのですが、この定義を2件目以降にも適用しようとして、
詰まっています。

入力済みデータの件数を取得して for next を使って、select caseを使ってとか
いろいろやってもうまくいかないもので。
近くに詳しい人もいない環境なので、良いアドバイスをいただけたらと思います。




128 :デフォルトの名無しさん:05/02/11 20:40:25
>>121
やりたいことをもっと詳しく説明してくれないと、なんとも言えません。
たぶんできるとは思いますけど。

129 :デフォルトの名無しさん:05/02/11 20:45:29
excelでやるもんじゃないな

130 :デフォルトの名無しさん:05/02/11 20:46:36
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 1 Then
If .Value = "大根" Then
.Offset(0, 2).Value = .Offset(0,1).Value * 100
ElseIf .Value = "人参" Then
.Offset(0, 2).Value = .Offset(0,1).Value * 200
ElseIf .Value = "白菜" Then
.Offset(0, 2).Value = .Offset(0,1).Value * 300
End If
End If
End With
End Sub

そういうのは>>88を参考にOffsetを使うと良いよ
多分、Select Caseとか価格表とか使って操作した方が
もっと、スマートに記述できると思うが。

131 :デフォルトの名無しさん:05/02/11 20:56:36
話し変わるんだけど、喪前らDim とか Constとか
最初に記述する宣言文って、やっぱり全部、Subの先頭に集めてる?

漏れの場合は、Subの中で分かれた各処理群の先頭に分割して
Dimを記述してるんだけど

一箇所にまとめるとどの宣言文だったか
分からなくなってくるんで・・・


132 :デフォルトの名無しさん:05/02/11 21:00:35
>>130
価格改定されるたびにソース直すのか

133 :デフォルトの名無しさん:05/02/11 21:03:50
>>131
普通、先頭じゃないか?

134 :デフォルトの名無しさん:05/02/11 21:04:45
>>132
俺もそう思いながら書いたんだw
3つしか書いてなかったから

そこは、価格表とかつくってやればいいかと。

135 :デフォルトの名無しさん:05/02/11 21:10:58
つーか130はインデントしろよ。

136 :121:05/02/11 21:17:31
>>128
D5:D6のセルを参照してD43:BH43の色を変更していますが

この式のまま、多数の参照先とそれに対する処理を作りたいんですが。

1行目の[D5:D6}と2、3行目の("D5")("D6")、そして4行目の("D43:BH43").を代入演算子で置き換えて

  If Intersect(Target, [$A:$B]) Is Nothing Then Exit Sub
  Check = Range("$AA").Value = TimeValue("7:00") _
    And Range("$BB").Value = TimeValue("20:00")
  Range("$C1:$D1").Interior.ColorIndex = IIf(Check, 4, xlNone)


$A = D5ならば$AA=D5、$BB=D6、$C1=D43、$D1=BH43  D7ならば別のセルを割り当てる

として、想定したセル内に値が入力されるとこの式で処理できるようにしたい訳なのですが。。

137 :デフォルトの名無しさん:05/02/11 21:19:48
RDB使えよ

138 :デフォルトの名無しさん:05/02/11 21:36:44
>>124
ありがとう

>>123
知ったかクンさようなら

139 :デフォルトの名無しさん:05/02/11 21:41:13
>>136
>D7ならば別のセルを割り当てる
この場合それぞれどのセルになるのかまで分からなければ
コードを簡略化させる時の法則がわかりません。


D列の場合のみ処理するというのであれば、最初の行を

If Intersect(Target, [D:D]) Is Nothing Then Exit Sub

にしておけばよさそうですが。

140 :デフォルトの名無しさん:05/02/11 21:44:09
>>139
「最初の行を」じゃなくて「最初の行だけは」でした。

それ以降の部分は、D7の時どうなるかによって変わります。

141 :デフォルトの名無しさん:05/02/11 21:58:48
125です。

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

野菜は例えで使っただけで、
実際に扱うものは、めったに単価が変わらないんですよ。
(ほぼ100掛けなんだけど、たまに200掛けとか300掛けのが混じったりとか)

だから、あらかじめその分類ごとに計算式を取得できたら
楽だなと思ったもので。
あとはEXCELの勉強の意味もあります。

教えていただいた構文は、うまく動作しませんでした。
もう少しにらめっこしながら、悩んでみます。

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

142 :139:05/02/11 22:29:48
43行目から色を変えてるわけだからMAXでも42行目なのかな。

5行目以降から処理するとして、

If Intersect(Target, [D5:D42]) Is Nothing Then Exit Sub

でしたね。

143 :121:05/02/12 08:51:16
>>142

レスありがとうございます

TargetセルはD5〜G10の範囲なんですが、Targetを指定したとして
2行目以降の処理を個別に指定したいのです。

Targetセルが一つであれば以降の式には、そのままセル名を直接書けばいいのですが
複数指定した場合、配列に格納しておいて自動的に消化される様にできないかと思ったんです。

$A = (Target A = 処理A、 Target B = 処理B、 Target C = 処理C)

簡単に考えるとこういう物で、以降の該当箇所に代入されて処理されていく様にできないでしょうか?

144 :デフォルトの名無しさん:05/02/12 09:24:31
>>143
あなたのやりたいことがいまいちわからないのですが、
以下のコードで参考になりますか?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ChangeArea As Range
Dim Cell As Range

  Set ChangeArea = Intersect(Target, [D5:G10])
  If ChangeArea Is Nothing Then Exit Sub
  For Each Cell In ChangeArea
    MsgBox Cell.Address '一つのセル
  Next Cell
End Sub


ここのセル(例えばD7,E8,F9,G10)がそれぞれこうだったらここのセルに
こういう処理をするというのを書いてもらえればわかりやすいんですけどね。

145 :143:05/02/12 11:11:46
>>144


  If Intersect(Target, [D5:D6]) Is Nothing Then Exit Sub
  Check = Range("D5").Value = TimeValue("7:00") _
    And Range("D6").Value = TimeValue("20:00")
  Range("D43:BH43").Interior.ColorIndex = IIf(Check, 4, xlNone)

それぞれの処理についてですが

D5に7:00と入力され、かつ、D6に20:00と入力された場合は、D43〜BH43 に色を塗る
いまはこの処理のみですが

D7に7:00と入力され、かつ、D8に20:00と入力された場合は、D44〜BH44 に色を塗る
D9に7:00と入力され、かつ、D10に20:00と入力された場合は、D45〜BH45 に色を塗る

と処理先を変更したいのです。
参照先がこの程度なら、式をそのまま参照セル分コピーするのですが、参照先が膨大になるため代入処理したいと
思って居るんですが、なにか良い手はありませんか?


146 :デフォルトの名無しさん:05/02/12 13:47:20
>>145
それだけの情報しかないのであれば、こうなります。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Check As Boolean
  
  With Target
    If .Count > 1 Then Exit Sub
    If Intersect(Target, [D5:G10]) Is Nothing Then Exit Sub
    If .Row Mod 2 = 0 Then Set Target = .Offset(-1)
  End With
    
  With Target
    Check = .Value = TimeValue("7:00") _
    And .Offset(1).Value = TimeValue("20:00")
    .Offset(38 - (.Row - 5) \ 2).Resize(, 57).Interior.ColorIndex _
    = IIf(Check, 4, xlNone)
  End With

End Sub

E,F,G列の場合の色を塗る範囲が判断できませんので、それは
ご自分で工夫なさってください。

147 :デフォルトの名無しさん:05/02/12 22:25:44
ここ最近の10レスぐらいの間に
全て、やり方が散りばめられてるんだがなァ

Worksheet_Changeのトリガーを
.Column = 4 とかにして

あとはOffsetかCellsを使って
>>146 氏のOffsetとresize使うか
Range(Sheet01.Cells(.ROW, 4), Sheet01.Cells(i, 60)).).Interior.ColorIndex
とか使えば良いだけなんだが

148 :デフォルトの名無しさん:05/02/12 22:29:47
訂正
Range(Cells(.ROW, 4), Cells(.ROW, 60)).Interior.ColorIndex

149 :デフォルトの名無しさん:05/02/13 00:33:24
Sub ブック内ハイパーリンク作成()
Dim i As Integer
Worksheets.Add after:=Worksheets(Worksheets.Count)
i = Worksheets.Count
ActiveSheets.Name = "Sheet" & i
Worksheets(1).Activate
Worksheets(1).Hyperlinks.Add _
anchor:=Worksheets(1).Range("B65536").End(xlUp).Offset(1), _
Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!A1", _
TextToDisplay:=Worksheets(i).Name
End Sub

ActiveSheets.Name = "Sheet" & i の所いけないみたいなのですけど
どういう事なのでしょうか? エクセルのシートに名前が必要なのでしょうか?

150 :デフォルトの名無しさん:05/02/13 01:09:35
ActiveSheets.Name ×
ActiveSheet.Name ○

151 :デフォルトの名無しさん:05/02/13 01:09:36
Excel2000のVBAでUserFormにWebBrowserコントロールを貼って
以下のようなコードを書きました

Sub test()
UserForm1.WebBrowser1.navigate "http://www.2ch.net/2ch.html"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
UserForm1.Show
MsgBox TypeName(pDisp)
MsgBox TypeName(pDisp.document)
End Sub

これを実行すると、まず左フレームに板一覧
右のフレームに「2ちゃんねるへようこそ」が表示され
一つ目のMsgBoxで「WebBrowser」と表示されるのですが、
二つ目のMsgBoxのところで
「実行時エラー'438':オブジェクトはこのプロパティまたはメソッドをサポートしていません。」
というエラーが出て止まってしまいます。

原因を調べようと、二つ目のMsgBoxのところにブレークポイントを設定し
pDispをウォッチしてみたところ、型が「Object/WebBrowser」と表示されてるにも関わらず
クラスメンバーが一つも無く「<変数なし>」と表示されるという不可解な状態でした。
何故こんなことが起こるのでしょうか?
これを検出し回避する方法はあるのでしょうか?

TypeName(pDisp)で「WebBrowser」と表示されてしまっては
WebBrowserクラスの持ってるメンバーは全て持っていると判断して
メンバー変数にアクセスしてしまうわけですが、
そこでエラーが出てしまって、どうコーディングしていいか困ってしまいました。
どなたか、よろしくお願いします。


152 :デフォルトの名無しさん:05/02/13 05:24:16
Excelのアドインを作成しているのですが、オリジナルのアイコンを
使ったツールバーも一緒に配布したいと思います。

faceidを使った既存のアイコンではなくてAdobeのAcrobatのように
オリジナルのイメージを使ったものなのですが
どうやればいいのですか。

ググって、ワークシートにあるビットマップをVBAでコピーして
facepasteという方法があることもわかったのですが、
xla内にあるワークシートにビットマップを置いておく方法が
わからないのです。

何かいい方法はありませんか。


153 :デフォルトの名無しさん:05/02/13 07:34:31
エクセルとか下らないプログラムをシェアで
出してるところってあるよな・・・しかもソース弄れないとか

154 :デフォルトの名無しさん:05/02/13 14:59:09
>>150
どうもありがとうございます。うまく起動することができました。

155 :デフォルトの名無しさん:05/02/14 12:42:22
Excel2000のVBAでjavascriptで書かれているwebをセルにコピーするコードを書きました。
そのページのソースには.jpgリンクがJavascript:DoLink("〇△□")
と書かれているのですが、このリンクを開いて保存するにはどうしたらいいか教えてください。

156 :デフォルトの名無しさん:05/02/15 05:48:54
>>155
得ろ画像収集プログラムでつか?w

157 :デフォルトの名無しさん:05/02/15 20:14:11
sheet1からsheet10まであって、sheet1!A1に例えば「sheet2]と入力してコマンドボタンをクリックすると、
sheet2!A1にジャンプするようにしたいのですが、どんなコードを書けばいいでしょうか?

158 :デフォルトの名無しさん:05/02/15 20:37:11
Application.Goto Sheets(ActiveSheet.Range("A1").Value).Range("A1")

159 :デフォルトの名無しさん:05/02/16 09:53:34
「!」(ビックリ)と「.」(ドット)ってどう違うんですか?


160 :デフォルトの名無しさん:05/02/16 10:11:54
object.method
form!field

161 :デフォルトの名無しさん:05/02/16 10:12:49
object.property
record!field

162 :デフォルトの名無しさん:05/02/16 18:22:37
ビックリ、、、
ドット、、、

ステキな呼び方ですねw

163 :157:05/02/16 19:29:07
>>158
上手い事行きました。
ありやした!

164 :デフォルトの名無しさん:05/02/17 01:02:06
あるブックを開くのをイベントとして、
特定のブックが存在するかどうかをチェックし、
なければ新たに作成し、その特定のブックのsheet1に名前を付ける
という記述をしようとしました。

Private Sub Workbook_Open()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not (FSO.FileExists("D:\特定.xls")) then
  Workbooks.Add
  ActiveWorkbook.SaveAs FileName:="D:\特定.xls"
ActiveWorkbook.Worksheets(1).Name = "名前"   
 End If
End Sub

これを実行してみると、新しい「特定.xls」は出来上がるのですが、
シートに名前がついてくれません。
何がまずいのでしょうか?

165 :デフォルトの名無しさん:05/02/17 12:20:48
>>164

Excel2000でやってみたらうまくいったよ。


166 :159:05/02/18 09:48:42
>>160-161
fieldを指定するとき!になるんですね。



167 :デフォルトの名無しさん:05/02/19 19:29:20
何秒間か待機するって、何かいい方法ありませんか?
for i=1 to 1000000 : next iだと秒数指定できないし。
GetTickCount使うんですかね。カウントが0に戻らないことを祈りつつ。

168 :デフォルトの名無しさん:05/02/19 19:30:29
>>167
javaなら
Thread.sleep(ミリ秒数);
でいいんだけどね。



169 :>>167:05/02/19 20:07:28
Application.Wait Now() + TimeValue("00:00:05")
MsgBox "5秒間待ってから実行します"

170 :デフォルトの名無しさん:05/02/19 23:40:03
便乗質問なんだが、VBAの
Application.OnTimeか
Application.Waitみたいな感じで
時間を_秒で指定する方法は無いんでしょうか?

171 :デフォルトの名無しさん:05/02/19 23:46:49
次はそうくるかと思ったが、VBAじゃミリ秒単位の指定はない。

172 :デフォルトの名無しさん:05/02/20 00:39:11
>>170
APIのSleep関数

173 :デフォルトの名無しさん:05/02/20 19:47:54
フォームのイベントで
CommandButtonを押したら、TextBoxのカーソル位置に
"hoge"を挿入ってのはどうやればいいのかな?
.Value="hoge"じゃ、いままで入力されてたものが消えてしまうし
.Value=.Value&"hoge"とかやっても、カーソル位置への挿入は出来ないし・・・
どなたかお教え願います

174 :デフォルトの名無しさん:05/02/20 20:16:36
「カーソル位置への挿入」ってどういうこと?

175 :デフォルトの名無しさん:05/02/20 20:23:39
>174
[foo|piyo    ]
 ↓
[foohogepiyo  ]

ってな感じ。( | がカーソル位置)

CommandButton押した時点でTextBoxからフォーカスが外れるから
無理かなとも思ったけど、どこかでこういう動作するフォームを使った覚えがあるし。
一体あれはどうやってたんだろう?

176 :174:05/02/20 20:56:38
Dim mylen As Integer
Dim mystart As Integer
Dim buf1 As String
Dim buf2 As String


mystart = TextBox1.SelStart
mylen = Len(TextBox1.Value)
buf1 = Left(TextBox1.Value, mystart)
buf2 = Right(TextBox1.Value, mylen - mystart)
TextBox1.Value = buf1 & "hoge" & buf2

こんなんで如何?
あと質問するときは○○な理由でうまくいかないって説明するよりも、自分が望んでいる
ことを最初に説明しちゃったほうが回答しやすいと思うよ。

177 :173:05/02/20 21:23:13
>>176
いいかんじです、ありがとうございました。
今度質問するときは忠告の件気を付けます。

178 :167:05/02/20 23:27:51
最初にアクセスだと書いておくべきだった。wait使えない…。
エクセル用ですね。でも、ひとつ勉強になりました。感謝。
API関数で何とかします。


179 :デフォルトの名無しさん:05/02/21 10:11:32
javaから移ったんですが、
プロパティも引数とるんですねぇ。
プロパティ()みたいに。



180 :デフォルトの名無しさん:05/02/21 11:45:52
あと「コレクション」というのも一種の「オブジェクト」なのですかねぇ。
「item」という「プロパティ」があるし。

javaで言うところのVectorクラスのインスタンスみたいなものなのかな?


181 :デフォルトの名無しさん:05/02/21 12:32:58
あふぉ?

182 :デフォルトの名無しさん:05/02/21 12:53:04
>>181
えー
どの変が間違ってますか?


183 :デフォルトの名無しさん:05/02/21 13:48:07
こりゃ相当な あふぉ だね。

184 :デフォルトの名無しさん:05/02/21 14:32:12
そんなこと言わないで教えてよ


185 :デフォルトの名無しさん:05/02/21 16:18:21
やーいあふぉー


186 :デフォルトの名無しさん:05/02/21 17:16:00
ちぇっもうおまいらになんか聞かないよ。
ばーか


187 :デフォルトの名無しさん:05/02/21 21:38:09
ユーザーフォームに何か入力をしたあとエクセルを閉じて
また開いた時にさっき入力した値がすでに入力されているようにするにはどうしたらいいんでしょうか。

188 :>187:05/02/21 22:04:28
シートに値を保存しておくのが手っ取り早いのでわ?

189 :デフォルトの名無しさん:05/02/21 22:19:20
宣言セクションで宣言した変数に値を格納しておいて
ユーザーフォームを開いた時にそれをテキストボックスに代入するようにしておくとか。
まあStatic変数でもいいけど。

190 :187:05/02/21 22:33:31
>>188さん>>189さん
お答えいただいてありがとうございます。
なんとかできそうだと思います。

191 :デフォルトの名無しさん:05/02/21 23:03:02
189さんの方法ってエクセルを閉じた後、再度開いても保存した値を取り出すことができるの?
だとしたら詳しく教えてほしい。

192 :デフォルトの名無しさん:05/02/21 23:17:48
ゴメン、フォーム閉じた場合じゃなくてExcel閉じた場合は無理だ。
一応VBAのみで変数の値を保持する方法もあるけど、超面倒なので割愛する。

193 :デフォルトの名無しさん:05/02/21 23:37:03
俺もシートに値を保存するって方法をよくとるんだけど、なんかスマートじゃないような
気がしてね。これが最善の方法なのかなぁ?

194 :デフォルトの名無しさん:05/02/22 00:03:58
値保持用に不可視シート作るとか

195 :デフォルトの名無しさん:05/02/22 08:09:58
ini ファイルだろ
ブック本体を上書きしてしまうなどオレには考えられん

196 :デフォルトの名無しさん:05/02/22 22:04:22
漏れも、ややこしい配列を呼び出して一時的に保管する時に
不可視シートをやむなく使うなァ

不揮発性の二次元配列なんかあると便利なんだが

197 :>>195:05/02/22 22:18:52
ブックと一緒にiniファイルを保管せにゃならん。
メンドクサ。


198 :デフォルトの名無しさん:05/02/22 22:36:13
iniだけはダメだよ。
あれは素人のやること。

199 :デフォルトの名無しさん:05/02/23 04:46:12
ATLでDLL作ってそっちに保存

200 :デフォルトの名無しさん:05/02/23 05:03:00
>>199
ネタだよね。
まさか今時そんなダサいことやってる奴が居るわけないよな。

201 :デフォルトの名無しさん:05/02/23 11:57:18
EXCEL2000の[セルの書式設定]-[表示形式タブ]
の数値に[小数点以下の桁数]っていうテキストボックスの中にスピンボタンが
入っているコントロールがあるんだけど、これはなんというコントロールですか。
VBAにはないですか?

202 :デフォルトの名無しさん:05/02/23 13:50:33
>>201
ネタで言ってるんだよね。

203 :デフォルトの名無しさん:05/02/23 14:39:58
マジです。

204 :デフォルトの名無しさん:05/02/23 18:16:45
>>201
あれは、EDTBX(エディットボックス)といいます。
VBAには、ありません。
スピンボタン と テキストボックス を組み合わせて、同じような昨日を実装してください。

205 :201:05/02/23 18:42:42
そうなんですか。ありがとうございました。

206 :デフォルトの名無しさん:05/02/23 19:03:06
EDTBX

207 :デフォルトの名無しさん:05/02/23 19:38:55
>>200
マジです

208 :デフォルトの名無しさん:05/02/23 19:50:06
>>207
マゾです

209 :デフォルトの名無しさん:05/02/23 23:05:40
excelで,single型に宣言した配列変数に,セルの値(小数)を入れたいのですが,
↓で失敗.正しくはどうやるのか教えてください
 dim dat() as single
 dat(i)=cells(x,y).value

210 :デフォルトの名無しさん:05/02/23 23:18:39
>>209
値を格納する前に要素数を指定

211 :デフォルトの名無しさん:05/02/23 23:22:51
datは可変配列なのに、redimしてない

212 :デフォルトの名無しさん:05/02/23 23:48:05
209です.
ごめんなさい.間違えました.
↓で失敗しました.要素数は指定していました.
dim dat(a) as single
dat(i)=cells(x,y).value

>>210,211
ご指摘ありがとうございます.

213 :デフォルトの名無しさん:05/02/23 23:52:27
エラーメッセージでなんと出るかくらい書いたら?
まさか変数iが定義されていないってオチはないよね。

小出しにしないでコード全てコピペすれ。
問題を解決したいのであれば。

214 :デフォルトの名無しさん:05/02/24 00:43:18
dim dat() as single
...
他の処理
...
redim dat(a) as single
dat(i)=cells(x,y).value

215 :デフォルトの名無しさん:05/02/24 00:49:30
それで原因がわかるかよ。
他所でやれ

216 :デフォルトの名無しさん:05/02/24 01:28:55
>>214

> 小出しにしないでコード全てコピペすれ。
> 問題を解決したいのであれば。

コードに
> ...
> 他の処理
> ...
こんな行が本当に含まれるならエラーが出るのは当然だが。

217 :デフォルトの名無しさん:05/02/24 19:53:57
VBAで作ったPGって誰でもコード書き換えたりできますよね?
これってプロテクトみたいなのかけられないのでしょうか?

218 :デフォルトの名無しさん:05/02/24 20:03:06
普通にパスワード掛けてロックすればいいんじゃないの?

まぁ、実はこの方法ではイベントプロシージャは丸見えなんだけどね。
そこはイベントプロシージャ上にコード書かなければいいだけだし。

219 :デフォルトの名無しさん:05/02/24 23:19:25
VBAで文字を動かしたりできませんか
こう、スクロールしたりとか

220 :デフォルトの名無しさん:05/02/25 02:04:13
dim aho as string
dim i as integer
aho = "あほばかまぬけ"
for i = 1 to len(aho)
print mid(aho, i)
next i


221 :デフォルトの名無しさん:05/02/26 14:47:33
最上位のApplicationオブジェクトについて質問です。
このオブジェクトを使うときに
Dim app As Application
Set app = ActiveWindow.Application
とかやって
appオブジェクトにプロパティやらメソッドやらをつけてやらなくてもいいのはなぜですか?

みんなクラス名をそのまま使って
Application.Worksbooks("Book1.xls")........
とかやってる。

インスタンスを作らなくていいんですか?



222 :デフォルトの名無しさん:05/02/26 18:29:47
>>221
言語仕様上許されているから、としか言いようがない。

インスタンスを作ってプロパティ経由でメンバにアクセスするように
したらバグを減らせる可能性が高いけどね。

そういう概念を知らない人、知ってても使わない人、色々
居るのでしょう。

223 :デフォルトの名無しさん:05/02/26 19:47:31
GetOpenFilenameとかで特定ののディレクトリを指定して開きたい場合くらいしか
きちんと宣言したりしないな。

224 :デフォルトの名無しさん:05/02/26 21:43:18
ApplicationクラスのそれらのメソッドやらプロパティはShared宣言されているから
と言ってみるテスト


225 :デフォルトの名無しさん:05/02/27 00:53:24
独学でVBAしか勉強した事ないんで
いつも感覚的にコード書いてるんだけど

なんか、そういうVBAの構造とか概念の書いてあるいい本ってあります?

226 :デフォルトの名無しさん:05/02/27 11:31:30
すいません。質問させてください。
一つのセル内で改行されているセルを二つのセルに分割したいのですが。

セルA1の値が
"みかん リンゴ"
というようにスペースなどで分割されている場合は下記のように
splitを使ってB1、C1に振り分けることが出来たのですが、

Sub test()
Dim A() As String

A = Split(Cells(1, 1).Value, " ", 2)
Cells(1, 2).Value = A(0)
Cells(1, 3).Value = A(1)
End Sub

一つのセル内で
みかん
リンゴ

というように改行されている場合にどのように分割すればいいのか分かりません。
どなたか教えてください。よろしくお願いします。

227 :デフォルトの名無しさん:05/02/27 11:43:12
>>226
vblfですぷりっとぉ

228 :デフォルトの名無しさん:05/02/27 12:35:35
>>227
ありがとうございました!

229 :デフォルトの名無しさん:05/02/27 14:35:09
>>225
それがなかなか見当たらないよねぇ。
microsoft社のヘルプにさえよく書かれていない。

vbaに関する本で、オブジェクトやらメソッドやらプロパティやらが詳しく載っている本を参考にするとかなさそうだね。

ところで、>>221の答えは>>224でいいのかな?


230 :デフォルトの名無しさん:05/02/27 15:56:58
>>225
VBのサブセットなんだから、例えばVB6の入門書を読めばいいんじゃないの。
言語仕様が解説してあるようなやつ。
229の云うようなプロパティ辞典的なものも併せて読んでくとか。

231 :デフォルトの名無しさん:05/02/28 18:49:18
>>225 >>226
言語仕様が行き当たりばったりなんだから
構造とか概念も糞も元から無いんだよ

232 :デフォルトの名無しさん:05/02/28 21:46:30
初めまして。質問なのですが
ExcelのデータをAccessに取り込みたいのですが
どうすればいいのでしょうか?
AccessにあらかじめExcelから抜き出したい列をテーブルとして
作成しておいて、そこにExcelからのデータを落とし込みたいのです。
最終的にはExcelファイルを指定してそのデータをAccessに落とし込みたいのですが・・・

何か参考になるサンプルコードやサイトがあれば教えてください。
よろしくお願いします。

233 :デフォルトの名無しさん:05/02/28 22:42:03
まずはDAO、ADOでググる。


234 :デフォルトの名無しさん:05/02/28 22:47:36
>233に追加して
TransferSpreadsheetもググる事をお勧めする。

235 :デフォルトの名無しさん:05/03/01 08:53:25
TransferSpreadsheetってAccessのインストールするときに
カスタムにしてコンポーネント入れとかないといけないんだよね。
配布したときにお客さんがそれ忘れてるとかなり困ったことになる。


236 :232:05/03/01 14:33:06
あれから色々調べて、何とか指定したエクセルデータをテーブルに
格納することに成功しました。ありがとうございます。
そこでまた質問なのですが
指定フォルダ直下にあるエクセルファイルを全て読み込んで
テーブルに格納したいのです。例えばCドライブ直下に
エクセルファイルが3個あったとしたらそれを全て順番に
読み込んでテーブルに格納したいのです。(エクセルファイルの
書式や列数は全て同じです)フォルダを指定するダイアログを
表示することはできていてそれを使いフルパスを取得することも出来ます。
しかし、この後どうすればいいのか分からないのです。
どうかご教授よろしくお願いします。

237 :デフォルトの名無しさん:05/03/01 20:08:29
>>236
ここの
http://www.microsoft.com/japan/msdn/columns/office/office09072000.asp
「フォルダ内のすべてのファイル名を取得するために Dir 関数を使用する方法」
を参考にしたら。ファイル名を取得してファイルの数だけ反復処理する。


238 :デフォルトの名無しさん:05/03/01 22:42:48
「ムケてない香具師」の典型的パターンだな


239 :232:05/03/02 21:40:51
今日、色々と試行錯誤しまして、フォルダを指定後、
直下にあるExcelファイルを全てAccessのテーブルに格納する事に
成功しました。自分で適当に作った簡単なExcelファイルなら
格納できるのですが、マクロの入っている(正しい表現ですか?)Excel
ファイルだと格納できないのです。Access側のVBAでマクロの入った
Excelファイルをテーブルに格納することって出来るのですか?
よろしくお願いします。

240 :デフォルトの名無しさん:05/03/02 21:49:45

「〜ですか? よろしくお願いします。」
と言う使い方は日本語的におかしいと思うのは俺だけですか?
よろしくお願いします。

241 :デフォルトの名無しさん:05/03/02 23:14:16
ExcelのマクロをAccessに取り込みたいの?


242 :232:05/03/03 00:14:22
>>241
いえ・・・Excelのデータを取り込みたいのです。つまり
ExcelのデータがそのままAccessのテーブルに入るように
したい(もちろんAccessの方では事前にテーブルを用意しておいて)です。

でも実行しようとすると
マクロが有効になっているとか何とか(よく覚えてなくて・・・スイマセン)
出て、その後エラーナンバー13「型が一致しません」と出ます。
Accessのテーブルは試験的な段階なので全部テキスト型にしてあるし
Excelの方もマクロが使ってある以外はこれといって普通の文字列データに
見えます。原因が全く分からないので、どなたかご存知の方
ご教授ください。よろしくお願いします。

243 :デフォルトの名無しさん:05/03/03 21:10:04
エクセルのセキュリティの設定でマクロ開くときのチェックをはずしておけ

244 :デフォルトの名無しさん:05/03/04 11:39:05
URLのリンク先が存在するかチェックしたいのですが、
ご存知の方がおられましたら、
よろしくお願いします。


245 :デフォルトの名無しさん:05/03/05 14:44:56
ん?
サーバーが実在するかどうかってこと?
それとも 404 が戻ってくるかどうかを見るってこと?
存在してもたまたまそのとき落ちてたら存在しないって判定したいの?

246 :デフォルトの名無しさん:05/03/06 17:07:43
Private Sub UserForm_Initialize()
Load UserForm2
With UserForm2
.StartUpPosition = 0
.Top = 50
.Left = 10
.Show
End With
End Sub

名前が不適切というエラーが出ちゃいます。
フォームに何かしなければいけないのでしょうか?

247 :i:05/03/07 00:16:23
早速ですが、今更と思われそうですがエクセル95のVBAで
FSO(File System Object)は、使えますか?
自宅には当然95なんてシロモノは無いので、確認がとれません
会社でぶっつけ本番でもいいのすが不安で・・
ところで、アクセス95ってDAOくらいはぶん回せるのかしら・・・
不安不安不安・

248 :i:05/03/07 00:17:37
247ですが、間違えました。アクセス95のVBAでFSOでした

249 :デフォルトの名無しさん:05/03/07 00:42:36
>会社でぶっつけ本番でもいいのすが不安で・・

よくないと思うが・・・。
今後色々と大変だと思うけど、ま、頑張ってね。

250 :デフォルトの名無しさん:05/03/07 00:43:55
Excel97でMicrosoft Forms 2.0 Object LibraryのDataObjectに
レイトバインディングしたいと思ってます。
CreateObject("???")の ???の部分はなんて設定したらいいの?
ググってもわからんかったよ。すまん。
教えてエロいひと!!

251 :デフォルトの名無しさん:05/03/07 01:30:51
アクセス95でAccess Basicに取って代わり VBA2.2に。
VB4.0との統一もそれと同時でDAOのバージョンは3.0で
回せるのではないでしょうか。
95で足りている環境ならブッツケ本番でも充分対応できる筈。
気楽にやってみてはいかがでしょうね>>247



252 :i:05/03/07 01:36:23
ありがとうございます。でもそんな大それたモン
使う価値あんのかしら・・なんて


253 :sage:05/03/07 01:39:43
時間の無駄かもよ。金儲けだからしょーねーじゃん?

254 :デフォルトの名無しさん:05/03/07 01:55:20
ところで、喪前らエクセルのVBAで金儲けしてるの?


255 :デフォルトの名無しさん:05/03/07 09:27:03
格好つけてVTFO使うよりVBA。
VTFO資料無さ杉。

256 :デフォルトの名無しさん:05/03/08 22:46:36
EXCEL2000で、セルを指定してCSVに書き出す方法はありますか?

257 :デフォルトの名無しさん:05/03/08 23:12:21
>>256
> 方法はありますか?
あります。

というかうちの個人用マクロブックに
「選択範囲をCSV形式で出力」ってのがある。

258 :デフォルトの名無しさん:05/03/08 23:38:36
>>257
ありがとうございます。
確認してみますね。

259 :デフォルトの名無しさん:05/03/09 02:05:48
>>255
VTFOってなに?

260 :デフォルトの名無しさん:05/03/09 10:59:49
>>259
VSTOのことじゃね?

261 :デフォルトの名無しさん:05/03/15 22:46:23
条件付き書式について教えてください。
フォームのテキストボックスに入れた日付の値が、
土日と、「休日」という国民の祝日の一覧を入れた範囲の値と同じものだと背景が赤文字になるようにしたいのです。

=OR(WEEKDAY($A1,3)>=5,COUNTIF($K$1:$M$16,$A1)+COUNTIF(休日,$A1)
セルの条件付き書式では上の記載でいけたのですが、VBAだとどう書けばいいでしょう。
そのままぶっこんでも当然動かないし…

262 :デフォルトの名無しさん:05/03/15 22:55:36
>>261
条件付き書式自体が適用されないなら、
マクロの記録でも使って勉強しろ。
条件付き書式は適用されてるが、思い通りの結果を返さないなら、
VBAで条件付き書式を設定したセルの書式条件式がどうなってるか調べろ。
おそらくセル位置の指定方法を間違ってるんだと思うけど。

263 :デフォルトの名無しさん:05/03/16 23:23:28
ある資格試験の勉強をしてるんですけど覚える事が沢山あって大変で
エクセルやワードなんかで表を作ったりしてそれをプリントアウトして勉強
してるんですが一々面倒くさくなってしまったのでいっそのことVBAで問題
作ってしまおうと考えて、いまVBAの勉強を始めてます。一枚のシートで
Aセルに問題、Bセルに答えと言うようにしてテキストボックスにキチンと
漢字も間違わずに正確に語句を書けば正解と言うようにしてシートに自分
で幾らでも問題を追加して作れるようにしたいんですがこういう事はVBAで
可能ですよね?

264 :デフォルトの名無しさん:05/03/17 00:35:50
意味がわからん。


265 :デフォルトの名無しさん:05/03/17 01:37:38
>>263
わざわざVBA使わないでも、
A1に問題、B1に答えを記入する欄、C1に"=If(B1=C1,"正解!","残念!")"、D1に解答として、
D列を非表示にすれば良いだけなのでは?

266 :デフォルトの名無しさん:05/03/17 09:33:36
>>265
有難うございます。その式を基本にして何とか作れそうです。

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)