[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/14 12:55 / Filesize : 253 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part5



1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ]
ExcelのVBAに関する質問スレです

質問前に 【 >>2-3 】 あたりを良く読むこと

前スレ
pc11.2ch.net/test/read.cgi/tech/1189814602/

2 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:28:23 ]
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。


3 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:29:01 ]
・過去スレ

01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/

4 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:29:50 ]
テンプレの最中にuncoを挿入する

5 名前:デフォルトの名無しさん [2007/12/12(水) 17:53:17 ]
セル1に「1」と入力するとセル2に「A」と出力,同様に「2」と入力すると「B」と出力するようにするためにはどうすれば良いですか?

どなたか教えてくださると助かりますm(_ _)m

6 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:04:32 ]
いつまでやるんだよ・・・

7 名前:前スレのクレクレ君 [2007/12/12(水) 18:16:45 ]
いや、私じゃないですよ

8 名前:デフォルトの名無しさん [2007/12/12(水) 18:31:18 ]
前スレの>>1000
hoge = Selection.Value のSelectionが結合セルだと2次元配列になる。
結合セルをSelectしないでhoge = Range("A1").Value とすれば2次元配列にならない。
2次元配列なら MsgBox hoge(1,1) としないと動かないが、2次元配列じゃなければ
MsgBox hoge で動く。

9 名前:前スレのクレクレ君 = 1000 [2007/12/12(水) 18:37:44 ]
>>8
な、なるほど!

10 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:48:01 ]
>5
セル2に式「=CHAR( セル1 + 64 )」をいれときゃいいんでね?
VBAは関係ないけど。



11 名前:デフォルトの名無しさん [2007/12/12(水) 19:08:09 ]
1. 1900年から2008年までのうるう年を見つけて、一個のメッセージボックスにすべてのうるう年を表示するようにプログラムを作成する。

2. 下記の数値の和を繰り返し文を使用して算出しなさい。

1+2+3+4+……+100

1の二乗+2の二乗+3の二乗+……+20の二乗

1の三乗+2の三乗+3の三乗+....+20の三乗


これをExcelVBAを使って解かなきゃいけないんだけど全くわかりせん。
どなたか教えていただけませんでしょうか。


12 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:21:00 ]
>>2
>★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
>  コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
>  ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

13 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:46:39 ]
>>11
1. MsgBox 閏年 & 閏年 & 。。。

2. 1^2+2^2+3^2 。。。 +20^2


14 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:23:03 ]
Sub 空白セル削除()
Worksheets("Sheet1").Activate
For i = 1 To 1000
If Cells(A, i) = "" Then
Cells(A, i).Delete shift:=xlUp
End If
Next
End Sub

これのダメなところを教えてください。
エラーが出るんですよね

15 名前:5 mailto:sage [2007/12/12(水) 21:33:13 ]
>>10
おおっ ありがとうございます!!
スレ違いでしたねすみません

16 名前:デフォルトの名無しさん [2007/12/12(水) 21:39:20 ]
エラーで止まったところをヘルプで調べないお前の姿勢がダメだろう。

17 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:48:03 ]
>>16
ワラタw

>>14
セルズA,iを 1,i に変えたらうごいたぜ。  Excel2007  だけどな。

18 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:49:00 ]
もはや全部ダメって言い切って良いな


19 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:59:26 ]
>>18
そうか?

Sub 空白セル削除()

ここら辺はわかりやすくてよい。

20 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:07:00 ]
>>16
すいませんでした
以後気を付けます
>>17
thx
マクロはじめたばっかで基本的な勘違いをしてたぜw
>>18
是非参考コードをお願いします。



21 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:41:02 ]
Mougでも隅から隅まで眺めてこい

22 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:57:16 ]
なんだ自分ではたいしたコード書けないのにコード乗ってるサイト知ってるだけで出来ると思ってる人間かw

23 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:45:19 ]
oshietekun
you ga sundara
beroberobaa

24 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:55:37 ]
Rangeのポインタを渡すにはどう記載すればよいでしょうか?

25 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:16:51 ]
逆にRangeの実体を渡す方法があったら教えて欲しい


まあインデックスのポインタのことだろうけど

26 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:41:43 ]
byvalとbyrefの話?

27 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:37:33 ]
Dim Data AS Variant
Dim d AS Variant

Redim Data(1,20)
Redim d(1,60)
dには{1,4,3,〜(60個の数値)〜}が入っている
kukanにも区間データ(20個)が入っている。

Data(2行目に入れたい)=Worksheetfunction.Frequency(d,kukan)
→Data二次元配列の2行目に答えを入れるにはどう記載すればよいでしょうか?

28 名前:デフォルトの名無しさん [2007/12/14(金) 01:08:47 ]
userformのspinbuttonでmouseupしたときに押し続けまでカウントされた値を
処理できますか たとえば1から100までアップしたとき
changeだと100回処理しなけらばならないので
mouseupで100の値についてだけ処理したいのです

29 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 05:42:32 ]
マジな回答が欲しいヤツは、とりあえず解読可能な質問をしる


30 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:42:42 ]
>>27
dに60個のデータって、61個じゃないのか?
それにDataもdも整数なのになんでVariant型?
それはおいとくとして、ループを回せばいいだろ
f = Worksheetfunction.Frequency(d,kukan)
For i = LBound(Data,2) To UBound(Data,2)
Data(1,i) = f(i + 1,1)
Next



31 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:52:37 ]
>>30

>>27
> dに60個のデータって、61個じゃないのか?
確かにそのとおりです。

> それにDataもdも整数なのになんでVariant型?
二次元配列を使っているので。配列はVariant型って考えは間違っていますか?

> それはおいとくとして、ループを回せばいいだろ
> f = Worksheetfunction.Frequency(d,kukan)
> For i = LBound(Data,2) To UBound(Data,2)
> Data(1,i) = f(i + 1,1)
> Next
Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので、それを二次元配列Dataに入れたいのです。


32 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:57:53 ]
>>31
>二次元配列を使っているので。配列はVariant型って考えは間違っていますか?
間違ってる。整数なら普通IntegerかLong

>Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので
Frequencyの戻り値は1ベースの2次元配列だろ?


33 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:09:57 ]
補足しとくが
Dim Data() As Long
みたいに宣言するんだからな。

34 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:20:37 ]
もしかしてDataとかdにはセル範囲の値を一括して代入してるのか?
だったらVariantでいい。ただRedimは不要。

35 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:50:14 ]
>>34

> もしかしてDataとかdにはセル範囲の値を一括して代入してるのか?
> だったらVariantでいい。ただRedimは不要。
逆です。Dataの値を後でセル範囲に一括して代入します。
Redimは不要なのですか?行や列の数を指定しなくてもいいのですか。

36 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:54:53 ]
>>32
> >Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので
> Frequencyの戻り値は1ベースの2次元配列だろ?えっ!?区間と度数の二次元配列ですか?調べたつもりが。。。
ということはfをあるセル範囲(2×n)に代入すればよいということですね。


37 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 09:28:16 ]
>>36
>Redimは不要なのですか?行や列の数を指定しなくてもいいのですか。
Variant型の変数に代入する場合不要ということ。
d = Range("A1:E1").Value
みたいなときのことね。

>区間と度数の二次元配列ですか?
度数だけの2次元配列。

>ということはfをあるセル範囲(2×n)に代入すればよいということですね。
2×nじゃなくて1×n
縦じゃなくて横なならTransposeしないと出来ない。
縦1列ならそのまま可


38 名前:デフォルトの名無しさん [2007/12/14(金) 09:58:09 ]
vbaのreplace関数って、指定の文字列がない時に何か
値を返すことって出来ます?

置換前の文章と照合するしかにあ?

39 名前:37 mailto:sage [2007/12/14(金) 10:29:12 ]
補足しとくがdとかkukanがセル範囲から取り込んだものなら、そんな配列は必要ないからな。
仮にデータがA1:A61にあり、区間がB1:B20なら
f = Worksheetfunction.Frequency(Range("A1:A61"),Range("B1:B20"))
でいい。引数を変数にするならRange型だ。
戻り値は区間より一つ多い11x1,の2次元配列になってる。
一つ多いのは区間の最後のデータより大きいもののカウント用


40 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:33:22 ]
>>38
置換前の文字列と照合するか、先にInStrで調べてからでもいいんじゃない?



41 名前:39 mailto:sage [2007/12/14(金) 10:35:05 ]
マチガイ
戻り値は区間より一つ多い21x1の2次元配列な

42 名前:デフォルトの名無しさん [2007/12/14(金) 10:59:42 ]
replaceだけ、頭文字が大文字にならないのは仕様ですかw

43 名前:デフォルトの名無しさん [2007/12/14(金) 11:10:28 ]
>>40
あ、そうか

44 名前:デフォルトの名無しさん [2007/12/14(金) 16:16:50 ]
aaapapaaaaaaapaaaap という文があったとして、
これをp毎に分割するにはどうすればいいでしょうか。

instrでpの場所を探して、その文字数分leftで取り出せばいいと思うのですが
もっといい方法は無いでしょうか。

45 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:39:59 ]
>>44
VB6スレいけ

46 名前:デフォルトの名無しさん [2007/12/14(金) 16:57:07 ]
VB6スレって、2バイト文字ばっかりじゃないですか

47 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:32:08 ]
>>46
行けばわかる

48 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:16:47 ]
>>44-46
そんなに目くじらたてなくてもいいんジャマイカ
pで分割してセルに書き込むのかも知らんしだろ?
つSplit関数

49 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:25:14 ]
>>42
Replace関数もReplaceメソッドも頭文字は大文字になるぞ?
変数の宣言で使ってるとかプロシージャ名で使ってるとかなんか変なことしてるんじゃない?

50 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:48:14 ]
独学するのにお勧めの書籍ありませんか?

プログラミングは初心者です。
かつてHTMLとCSS、javascriptをほんの少しだけ学校の夏期講座で勉強した程度です。



51 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:07:13 ]
>>50
Excelでお仕事
でぐぐる
「VBA基本」を見る

書籍不要。

52 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:25:54 ]
>>51
そこだと変なクセがつかないか?
最近見てないけど、前みたときはあまりいい内容ではなかった。

53 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 10:42:55 ]
>>50
VBAエキスパートの参考書をやってから
あとはリファレンスとして上記のEXCELでお仕事を参照すればいいと思う

54 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:21:49 ]
稚拙なHPを読んで機会損失するコストを考えたら、3,4千円の書籍を購入する
コストは非常に安い。

55 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:40:30 ]
どの言語もそうだけど最終的に書籍はリファレンスだけしか要らなくなる

56 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:59:33 ]
あのサイトの人、VBAに関してはかなり下手だぞ?
VBAのリファレンスにはならねーな。

57 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:37:34 ]
ほとんどの人が代案を出せずに
一人の出した案を叩くばかりという状況にワロタ

まあ、ここの回答陣がVB(A)初心者だったのが
何年前かと考えると…
古すぎてもう売ってないとか
対応バージョンがExcel95とか、
当時はWebとかほとんど無かったとか
そもそも他言語から入ったとかだろうから
仕方ないだろうけど。

>>50
まあAmazonの書評でも見るか
(これもあてにはならないが、ここよりは…)

もしくは適当なVBA本の著者名でぐぐると
サイト持ってて入門編を公開している人もいたりする。

58 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:25:06 ]
田中亨おすすめ。
mougの人は嫌い。

59 名前:デフォルトの名無しさん [2007/12/17(月) 10:52:50 ]
>>49
replaceは名前としては一切使ってないのですが
(過去にそのプロシージャ内で使ったことがあるかも・・・)
なぜか、小文字です・・・。

あと、古いExcel97では、replace使えないんですね。ショック・・・
サブルーチンで誰か作ってないかな。

60 名前:デフォルトの名無しさん [2007/12/17(月) 10:59:20 ]
>>48
ありがとうございます



61 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 14:47:55 ]
>>59
Excel97でもOSが古すぎない限り(古くてもWSHをインストールすれば)
ツール→参照設定で
「Microsoft VBScript Regular Expressions 5.5」に参照設定して
RegExpオブジェクトの.Replaceを使えば

ただしReplace関数より機能は高いが
正規表現な分ハードルも高い。

62 名前:デフォルトの名無しさん [2007/12/17(月) 17:55:16 ]
>>61
ウホッ
確かに難しそうだ

63 名前:デフォルトの名無しさん [2007/12/17(月) 18:15:07 ]
>>59
横レスだが、折れも、ずいぶん前に、何ヶ月前ぐらいかな?
何かの時にrangeが1カ所だけRangeにならないことがあった。いろいろと試していたときだった。そこだけ、いろいろと書き直しても小文字のままだったので、
折れも同じように、気になって聞いたが、誰も答えようがなかったみたいだった。
チャンと動いておれば、気にしないでオケw


64 名前:デフォルトの名無しさん [2007/12/17(月) 19:04:02 ]
*.shapes(1).DrawingObject.Text = *.Cells.Value(1.1)

' ↑(Chart)              ↑(Sheet)

EXCEL2000だと正常に動作する上記のようなコードがあります。
EXCEL2007だと、
"指定したコレクションに対するインデックスが境界を超えています。"
というようなエラーが出てしまいます。
(上記コードをコメントアウトすると正常終了します)
普通のシートのセルの文字列を、グラフシートのラベルにコピーする
コードなのですが、2日ほどひたすら検索しましたが、
何が原因なのかがわからない状況です。仕事場からソースを持ち帰ること
ができないので、これだけでは解析不能かもしれませんが、
何かヒントでも頂けたら幸いです。よろしくお願いいたします。

65 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:58:17 ]
マクロを記録して味噌

66 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 20:16:50 ]
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Select
Selection.Delete shift:=xlShiftUp

で「A列に何も入っていない行」を削除できますが、
「A列およびB列に何も入っていない行」は削除できませんでしょうか?

Range("A:B").〜とすると
「A列もしくはB列に何も入っていない行」になってしまいます。

結局for〜nextでCells(i,1).value&Cells(i,2).value=""かどうか調べて、みたいなので
動くことは動いたんだけどなにか簡単な方法はないかと。


67 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:04:20 ]
>>64
前後関係意味不明
上限がいいかげんなループの中でShape回してるんジャマイカ?

>>66
ない
Range("A:B")とやったところで内部的には1次元でしかないので

68 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:35:37 ]
ユーザーフォーム(モードレス)を残してワークシート最小化し
フォーム上のボタンを押してファイル選択ダイアログをだしているんですが
ファイル選択ダイアログがマウスクリックを受け付けてくれません
EXCEL 2000だと問題なく動くのですがEXCEL XPだとこの症状がでます
回避策ないでしょうか

69 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:42:18 ]
コードさらせアホが。二度手間じゃ

70 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:51:51 ]
こんな感じです
Private Sub Workbook_Open()
Dim oldState
oldState = Application.WindowState
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
UserForm1.Show vbModeless
End Sub

Private Sub CommandButton1_Click()
Dim fname As String
fname = Application.GetOpenFilename(fileFilter:="txtファイル(*.txt),*.txt,txtファイル(*.txt),*.txt", Title:="txtファイルを選択")
If fname = "False" Then
Exit Sub
End If
End Sub



71 名前:デフォルトの名無しさん [2007/12/18(火) 12:32:52 ]
inputboxを、カイル君や冴子先生のようにするには?
とカイル君に聞いても教えてくれなかった。

72 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:56:20 ]
モードレスは対応するバージョンがあるぜ

73 名前:デフォルトの名無しさん [2007/12/18(火) 14:14:14 ]
inputboxの外観でググっても出ないな。

74 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:24:28 ]
>>68
何も確認せずにレスするんで恐縮だが、最小化じゃなくて、非表示(App~.Visible)とかじゃダメ?


75 名前:デフォルトの名無しさん [2007/12/18(火) 18:54:33 ]
>>65
>>67
ありがとうございました。
マクロの記録で確認しましたところ、shapes〜となるのですが、
そのコードで再度実行すると、やはりそこでエラーになってしまいました。
それからまたいろいろと調べていたところ、下記を参考にして解決いたしました。
やはり、EXCEL2007が原因だったようです。
www2.moug.net/bbs/exvba/20070920000006.htm

76 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:33:13 ]
コントロールを扱うための知識はコントロールそのものではなく、
実はコレクションってのがVBAの真理だったりする

77 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:55:28 ]
>>74
指摘のとおりに変えたらEXCEL XPで動きました ありがとうございます
明日EXCEL2000でも確認してみます

78 名前:デフォルトの名無しさん [2007/12/19(水) 05:50:53 ]
特定の範囲内でランダムに1つのセルの値(文字列)だけ残して他を消す(又は表示させない)
ようにしたいんですがなにか方法ないでしょうか。
ランダムに複数セルの値を取得する→消去 の流れでいいんでしょうか。
ご教授願います。すれ違いだったらすいません。

*例えばA1〜A5に文字列が入力されていて、マクロを実行したらA1のセルの値のみがのこって他を
消すようにできないかと思います。

79 名前:デフォルトの名無しさん [2007/12/19(水) 09:42:17 ]
マクロ歴三日の私が通りますよ

Sub rand()

Range("D" & 1).Formula = _
"=round(rand(),1)*10"

i = Range("D1").Value
Range("A" & i).Select

makura = MsgBox("are you sure to erase?", vbOKCancel)
If makura = vbOK Then Selection.ClearContents

End Sub


80 名前:デフォルトの名無しさん [2007/12/19(水) 09:46:00 ]
あ、残すのか・・・
英語とか・・・色々すまん煎ってくるわ



81 名前:デフォルトの名無しさん [2007/12/19(水) 10:06:52 ]
Sub rand()

yarinaosi:
Range("D" & 1).Formula = _
"=round(rand(),1)*10"

i = Range("D1").Value
If i = 0 Then GoTo yarinaosi

Range("A" & i).Select
Selection.Cut
Range("B" & i).Select
ActiveSheet.Paste
Range("A1:A10").Clear
Range("B" & i).Select
Selection.Cut
ActiveCell.Offset(0, -1).Select: ActiveSheet.Paste

End Sub

82 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:15:59 ]
>>81
その式だと10になる確率が低いんじゃねーのか?
9になるのはround(rand(),1)が8.5以上9.5未満の1の幅があるが
10になるのは9.5以上で半分の幅しかねーな。
ROUNDなんか使っちゃいかんよ。

Range("D1)..Value = Int(Rnd*10)+1
とすれば1〜10の確率はそれぞれ10パーセントだ。

83 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:20:56 ]
ちょっと書き直し
9になるのはrand()が0.85以上0.95未満の0.1の幅があるが
10になるのは0.95以上で半分の幅

84 名前:79,81 [2007/12/19(水) 14:14:48 ]
>>83
うーむ、なるほど。

85 名前:デフォルトの名無しさん [2007/12/19(水) 17:53:38 ]
絶対パス付きを取得し、変数filepathに、ファイル名をfilenameに入れて、ファイルを開こうとしています。
しかしフォルダ名に空白があると存在しませんとエラーがでます。
openfile filepath & filename
どのように書けばよいのでしょうか?

86 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 18:00:58 ]
openfileが悪さしてる

87 名前:デフォルトの名無しさん [2007/12/19(水) 18:06:15 ]
trimしてみては?

88 名前:デフォルトの名無しさん [2007/12/20(木) 05:13:01 ]
htmlの指定したタグの中身を取り出す関数(メソッド?)ってどういうものでしたっけ?
GetOuterHtmlみたいな感じの名前でしたが、手元にVBがなく、ググってもでてこない


89 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 07:41:31 ]
分かってないのに分かったような物言いをしたところで間抜けであることは変わらない

90 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 09:53:17 ]
>>88
スレ違い



91 名前:デフォルトの名無しさん [2007/12/20(木) 11:06:38 ]
以前質問させてもらった者ですが

1+2+3+4+……+100

この和を繰り返し文を使用して出せというのがいまだにわかりません。
この場合For文を使えばいいんでしょうか?
無知で申し訳ないです。

92 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 11:39:16 ]
>>91
スレ違い    For文でできる。 どうしても分からなければVBスレで。


93 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 12:07:29 ]
dim a(100) as integer

for i=1 to 100
a(i) = i
next

msgbox (a(1) + a(100))/2*100

94 名前:デフォルトの名無しさん [2007/12/20(木) 15:01:54 ]
>>90
以前エクセル付属のVBAで使った記憶があるのですが

95 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:13:37 ]
>>94
Microsoft HTML Object Libraryを参照設定して、F2でMSHTMLを眺めて、ググるなりしろ。
これ以上の質問はVBスレでやれ。

96 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:04:23 ]
>>93
ワロタw


97 名前:デフォルトの名無しさん [2007/12/20(木) 16:19:13 ]
Sub nnn()
Dim a As Variant
Dim i As Byte
Dim sentence As String
Dim sentence2 As String
''''''''''''''''''''''
Range("A1").Formula = "I am Japanese."

a = Array("I", "am", "Japanese", "living", "in", "USA", ".")
For i = 0 To 6

sentence = Range("A1").Value
sentence2 = Replace(sentence, a(i), "", 1)

Next i

MsgBox sentence2
End Sub


このプログラムで、sentenceをa配列全て使って、
置換したいのですが、
array中の最後の文字しか変換されません。
どうすればよいでしょうか...

98 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:32:06 ]
>>97
かろうじてExcel要素が混じってるが、基本はExcel関係ないぞ。

Forの行にブレークポイントを設定して、ステップ実行させながら、変数の中を見てみろ。

99 名前:デフォルトの名無しさん [2007/12/20(木) 17:03:25 ]
>>98
置換したはずの文字が、ふ、ふ、復活しているよっ!

100 名前:デフォルトの名無しさん [2007/12/20(木) 17:14:26 ]
あ、sentence2はsentenceでいいのか。
むずかしい



101 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:53:05 ]
とりあえずUSAには定冠詞のTheを付けるように

102 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:18:31 ]
>>91
学校の宿題だったっけ?
>>93のFor Nextで合格点もらえるよ。







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

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef