Excel VBA質問スレ Part13at TECH
Excel VBA質問スレ Part13 - 暇つぶし2ch628:デフォルトの名無しさん
09/11/14 08:59:38
>>619
Sub Ary()
Dim Arow As Long
Dim i As Long
Dim j As Integer

j = 1
For i = 1 To 600
Cells(i, 1).Value = j
j = j + 1
If j > 10 Then
j = 1
End If
Next i

End Sub
こんなものでどないでしょう。

629:デフォルトの名無しさん
09/11/14 09:49:32
Arow ってなんだ

630:デフォルトの名無しさん
09/11/14 10:04:03
正解(>>620-621)が出た後にボケ回答(>>622 >>628)が出てくる、の法則

631:デフォルトの名無しさん
09/11/14 10:12:07
自分よりいい答えが出たのがそんなに悔しかったのか

632:デフォルトの名無しさん
09/11/14 10:15:19
(;゚д゚)ァ

633:デフォルトの名無しさん
09/11/14 10:49:33
>>619
Sub Ary()
Dim Arow As Long
Dim r As Range

For Each r In Range("A1:A100")
r.Value = r.Row Mod 10
Next r

End Sub
こんなものでどないでしょう。

634:デフォルトの名無しさん
09/11/14 10:50:58
ごめん
10で割って余りだと0,1,2,・・・,9,0,1,・・・ってなるから1足せ


635:デフォルトの名無しさん
09/11/14 11:01:07
.Formular1c1="=Average(R["& c &"]C["& d &"]:R["& c+2 &"]C["& d+2 &"])"

のようにRCの中に変数を入れたい場合はどうすればいいのでしょうか?

アドバイスお願いします

636:デフォルトの名無しさん
09/11/14 11:07:03
馬鹿発見

637:デフォルトの名無しさん
09/11/15 01:17:24
四択問題を作っています。

Public Seikai As Integer, i As Integer, Ruiseki As Integer
Sub Quiz()
Dim Det As String
i = 1
Ruiseki = 0

Do

Det = Sheets("Sheet3").Cells(i, 1)
If Det = "" Then Exit Do
UserForm1.Show
i = i + 1

Loop While Det <> ""

UserForm2.Show
'MsgBox "正解は" & Ruiseki & "問です。"

End Sub

sheet3のA列に問題番号、B列に問題、C列に正解番号を入れています。
問題は50問作ったのですが、この中から20問をランダムに表示する
ようにしたいのですが、どのようにしたらいいかわかりません。
今は、50問全て順番に表示されてしまう状態です。
教えてください。
よろしくお願いします。

638:デフォルトの名無しさん
09/11/15 01:45:55
RAND()で適当な番号をふって並び替えて上から20問をつかう

639:デフォルトの名無しさん
09/11/15 13:25:55
>>618
ありがとうございます!
助かりました。

640:637です
09/11/16 00:26:37
>>638
マクロを具体的にどう変更したらいいかおしえてください…

641:デフォルトの名無しさん
09/11/16 08:16:40
>>640
例えば、D列に乱数で適当な数字を振る
D列を見て数の大きい順に20問を出題する

そこまで自分で作ったのなら、これくらいできるだろ?
宿題なら自分でどうぞ

642:デフォルトの名無しさん
09/11/16 11:18:19
マクロが
A
B
C
D
こうあったとして、全てのマクロを実行するマクロを作るにはどうやったらいいですか?

643:デフォルトの名無しさん
09/11/16 11:26:37
全てのマクロを呼び出すマクロを作ればいいだけだろ

644:デフォルトの名無しさん
09/11/16 16:52:03
Sub all_execute()
A
B
C
D
End SUb



wwww


645:デフォルトの名無しさん
09/11/16 20:20:05
私は基本C/C++のPGです。業務でVBAの面倒を見ることになりそうなんですが、
言語仕様がコンパクトにまとまってるような本はないでしょうか?

VBAの仕様なんてたかが知れてるかもしれませんが、分厚い本やWEBサイトをいったりきたりするのは面倒だし
言語に自分の知らない部分があるというのが気持ち悪い性分なので、まとまってる本を探しています(WEBでもいいのですが)

・プログラミングの知識前提で、
・ペラッペラの単色刷りで
・言語使用だけは満足してる
オライリーのクイックリファレンスのVBA版みたいなのが理想です(探したけどなかった)。

VBAの解説本だとプログラミング未経験者向けの、カラフルで妙に分厚い本が多いような気がするのですが
私としてはクイックリファレンス的な本が理想なので…
お勧めの本などあれば教えてください。

646:デフォルトの名無しさん
09/11/16 22:17:54
VBA辞典

647:デフォルトの名無しさん
09/11/16 22:23:14
>>645
マジレスだけどリファレンスとしてはオンラインヘルプ一択
結局ヘルプ以上にならないから初心者向けの分厚いカラー刷りになる
紙がよければ死ぬ気で全部印刷


648:637です
09/11/17 00:26:19
>>641
RAND()で、
B列とC列のくみあわせは変わってしまうことは無いのですか?

649:デフォルトの名無しさん
09/11/17 00:28:24
>>648

ここはマ板ですよ?

650:637です
09/11/17 00:38:30
>>649
死ねクズ

651:デフォルトの名無しさん
09/11/17 00:39:17
>>648
おまえの前にある箱の向こうにも人がいるんだぜ
>>638>>641 も的確な回答してるじゃん
それに対して、あーじゃない、こーじゃない、って・・・
更に質問するんだったら

ありがとう御座います。ヒントを基に組んでみたら、こんな動作をしました。
ここが怪しいと思うので、調べたり試行錯誤したのですが、こんなエラーが出てしまいます。
何かアドバイス頂けないでしょうか?

くらい書いたほうがいんでね?

なんとなくムカつく文章だったので勢いで書いた

652:デフォルトの名無しさん
09/11/17 00:56:42
的確?

653:デフォルトの名無しさん
09/11/17 01:01:43
>>652
的確だと思うぞ。

654:デフォルトの名無しさん
09/11/17 08:15:19
>>653

俺も的確だと思うけどな。
質問する側のレベルが低いんだろw


655:デフォルトの名無しさん
09/11/17 08:40:16
おまいらココ逝って正しいRANDの使い方教えてきやがれ
URLリンク(www.nicovideo.jp)

656:デフォルトの名無しさん
09/11/17 09:03:50
【社会】スーパーコンピュータ向け「Excel」開発中 - Microsoft
スレリンク(newsplus板)

657:デフォルトの名無しさん
09/11/17 11:57:24
A2~A20000ぐらいまで誕生日(シリアル値)が入っています
B列に年齢を出したいときは、どういう計算をすれば軽くなるでしょうか?
古いPC(win95)なのでものすごく時間がかかっています
他のマクロでも応用したいので、教えてください
お願いします!

658:デフォルトの名無しさん
09/11/17 17:49:46
関数にdatedifってのが有るから

=DATEDIF(A2,TODAY(),"y")

で済むと思うけど、どうしてもVBA上から使いたいならworksheetfunctionを付ければ?



659:デフォルトの名無しさん
09/11/17 19:25:58
ワークシートに関数を沢山入れると重くなる、という意味に解釈して
VBAにて
Range("B2").Value = DateDiff("yyyy", Range("A2").Value, Now)
を必要行だけ繰り返す

660:デフォルトの名無しさん
09/11/17 19:54:25
>>643-644
単純に考えればいいってことがわかった気がする
どうも

661:デフォルトの名無しさん
09/11/17 22:22:18
>>660
他のファイルとかに書いてあるのを呼ぶときはスコープが問題になることがあるから気をつけてね
Public宣言付けたり、参照設定したりとか

662:デフォルトの名無しさん
09/11/18 09:58:30
ハイパーリンクに関する質問です。
例えばセルA1に何か文字列が入っている状態で
セルA2に以下のシート関数が入っているとします。
=IF(A1="","",HYPERLINK("URLリンク(www.yahoo.co.jp)","Yahoo"))
そうすると、セルA2には"Yahoo"の文字列が表示され
"URLリンク(www.yahoo.co.jp)"へのリンクが張られている状態です。

ここで、VBAにより、リンク先である"URLリンク(www.yahoo.co.jp)"の文字列を
取得する方法はあるのでしょうか?
セルA2に設定されている関数の文字列を解析するという手もあるとは思いますが、
それ以外で方法はあるのでしょうか?


663:デフォルトの名無しさん
09/11/18 14:09:25
あるんじゃない

664:デフォルトの名無しさん
09/11/18 14:14:34
>>658-659
とてつもなく軽くなりました、ありがとうございました!


665:デフォルトの名無しさん
09/11/18 16:45:42
>>664
>>658の数式でも軽くなったの?
もし重かったら揮発性関数のTODAY()のせいだな。
どこかのセル、たとえばF1にCtrl + ;で今日の日付を求めて
=DATEDIF(A2,$F$1,"Y")とすれば数式でも軽くなるかもよ。

666:デフォルトの名無しさん
09/11/18 22:41:02
1日か31日までの1ヶ月分のシートがあるとします
それぞれのA1セルに日付をいれてます
この1ヶ月分のシートの月曜日と火曜日だけを対象してなんらかの処理を行いたいときはどのような方法を取ればいいでしょう?
よろしくお願いします

667:デフォルトの名無しさん
09/11/18 23:30:02
1日か31日までってことは
1日の場合は前月の2日から一か月分って言う意味?

668:デフォルトの名無しさん
09/11/18 23:32:15
>>666
for each collectionでシートに対してループ回して
その中でA1セルを調べて、曜日をチェック
で、なんらかの処理を行えばOK

669:666
09/11/18 23:36:40
失礼しました
1日から31日までの31シートです

>>66
ぐぐってみます8

670:デフォルトの名無しさん
09/11/19 09:19:43
ワード・アクセスのVBAスレってありませんか?

671:デフォルトの名無しさん
09/11/19 09:24:37
スレリンク(tech板)
スレリンク(tech板)
スレリンク(tech板)
スレリンク(tech板)

672:デフォルトの名無しさん
09/11/19 11:42:02
ありがとうございます
検索しにくいっす・・

673:デフォルトの名無しさん
09/11/19 19:46:28
WordのVBAはどういうときに使うんだ?

674:デフォルトの名無しさん
09/11/19 20:13:37
時節柄考えられるのは
年賀状宛名流し込み印刷かな

675:デフォルトの名無しさん
09/11/19 20:27:20
それVBAいらないやん

676:デフォルトの名無しさん
09/11/19 21:46:41
差し込み印刷なんかExcel VBAでも同等のことするの簡単だよな。

677:デフォルトの名無しさん
09/11/19 21:49:26
A1セルに1月1日(月)のように入力しています
ここから特定の曜日(火曜日と日曜日など)を区別して処理をおこないたいのですが
どのような方法を取ればよいのかご教授ねがいます

678:デフォルトの名無しさん
09/11/19 22:10:09
>>677
おまえ666だろ
曜日を調べる関数を使う
関数名は自分で調べろ
以上

679:デフォルトの名無しさん
09/11/19 22:43:03
そもそも1月1日(月)って入力するのが間違いだ罠。
1/1と入力して表示形式をm月d日(aaa)にするだけだ。

680:デフォルトの名無しさん
09/11/20 05:56:15
質問
教えてえろい人
エクセルのVBAを使って、Outlookメールを複数の人に自動送信操作をさせたいです。
Aさん(○○○@○○.co.jp)にエクセルSheet1に記載された内容を送信し、
Bさん(XXX@XX.ac.jp)にエクセルSheet2に記載された内容を送信します。
後、CさんにエクセルSheet3を・・・という具合に・・・
以上の事が、エクセルVBAを使って1回だけマクロを走らせるだけで、できるでしょうか?



681:デフォルトの名無しさん
09/11/20 07:34:40
ユーザーフォームのlistviewについて質問です
listviewで縦横のスクロールバーのやり方が分からないのですが
どうすればうまくいくでしょうか?

682:デフォルトの名無しさん
09/11/20 11:22:46
>>680
できるでしょうね

683:デフォルトの名無しさん
09/11/20 11:48:16
てst

684:デフォルトの名無しさん
09/11/20 21:52:10
>>680
ExcelのよりOutlookのVBA使ったらどうよ?

685:デフォルトの名無しさん
09/11/20 22:27:51
同一セル内の数字を下のように並べかえたいのですがどうすればいいですか?
「333      「111
 111   ⇒   333
 555」      555」

3桁ずつ切り分けて別セルに出力、ソートをかけて並べかえるというものは
出来たのですが、出来ればマクロの中だけで処理をしたいんです。

686:デフォルトの名無しさん
09/11/20 23:13:54
>>685
安直だけど、例えばセルA1を対象とするならこんな感じ

Sub Macro1()
a = Split(Range("A1").Value, Chr(10))
For i = 0 To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(i) > a(j) Then
tmp = a(i)
a(i) = a(j)
a(j) = tmp
End If
Next j
Next i
Range("A1").Value = Join(a, Chr(10))
End Sub


687:デフォルトの名無しさん
09/11/20 23:17:11
こんにちわ。
質問をさせてください。

正規表現でのマッチパターンを用いて、
文字列をSplitして配列に入れたいと考えています。
以前javaで行った時は問題無く出来たのですが、
VBAの場合には上手くパターンを認識してもらえません。
下のコードで行ったのですが、”スペース”or","の1回以上の繰り返しでSplitを目的としています。

Sub testVBA()
Dim Reg As Object
Dim regPattern As String
Dim reMatch As Object
Dim i As Integer
Dim STR As Variant

Set Reg = CreateObject("VBScript.RegExp")
Reg.Pattern = "[ ,]+"
STR = Split("moug MOUG,モーグ,,もーぐ", regPattern)
For i = 0 To UBound(STR)
Debug.Print (STR(i))
Next
End Sub

続きます。

688:デフォルトの名無しさん
09/11/20 23:17:20
javaのコードは下で行いました。

import java.util.regex.*;
public class testJava {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("[ ,]+");
String[] strs = pattern.split("moug MOUG,モーグ,,もーぐ");
for (int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}
}
}

VBAで出来るのであればやり方を教えてくださいませ。
VBAでは対応していないと言う事でも構いません。
何卒よろしくお願いします。

689:デフォルトの名無しさん
09/11/20 23:18:42
すいません・・・。
モーグで質問しようとして準備していた文書を張ってしまいました。
ちなみにマルチポストではありませんので、よろしくお願いします。

690:デフォルトの名無しさん
09/11/21 00:40:26
>>687
VBAのSplitが正規表現を受付けないんじゃないの

s = "123 456 789"
ArySize = 0
Dim Ary()
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[ ,]+"
Do
ArySize = ArySize + 1
ReDim Preserve Ary(ArySize)
Set Matches = re.Execute(s)
If Matches.Count <> 0 Then
v = Left(s, Matches(0).FirstIndex)
s = Right(s, Len(s) - (Matches(0).FirstIndex + Matches(0).Length))
Else
v = s
End If
Ary(ArySize - 1) = v
MsgBox v
Loop While Matches.Count <> 0
MsgBox Join(Ary, "$")

691:687
09/11/21 08:37:43
>>690
レスありがとうございました。
やはりVBSのオブジェクトですし、VBAのsplitが対応してないのは頷けます。
ソース例の提示、ありがとうございました。
自作関数で対応しようと思います。

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

692:デフォルトの名無しさん
09/11/21 10:02:39
excel2007

ブックに変更が有った時に保存するようにしたいのですが、変更が有ったか無かったかのチェックって
どうするのでしょうか?

保存するのはThiworkbookの閉じる時で

Private Sub Workbook_BeforeClose(Cancel As Boolean)


End Sub

の中に入れれば良いのでしょうけれど。


693:デフォルトの名無しさん
09/11/21 11:15:06
>>692
If WorkBook.Saved = False Then
  '保存処理
End If

694:デフォルトの名無しさん
09/11/21 11:21:38
>>693
thxです!

695:デフォルトの名無しさん
09/11/21 12:50:52
WinVista-Excel2007

VBAでなくActiveXの問題かもしれませんが
VBAの編集中に起きた問題なのでコチラで。

先にActiveXのボタンを配置しVBAで記述したSub{}を実行するという簡単なものを複数作成していたのですが
5・6個作り終えいざ実行してみようとボタンを配置してあるワークシートを開こうとしたところ
ボタンは表示されずエラー(特定のエラー名表示されず)が起きExcelが強制終了してしまいます。

また新規作成でActiveXのボタンを新たに配置しようとしても同じ現象が起こりました。
アドインも複数導入している状態のためもしかするとVBAの可能性も捨てきれないのではと質問させて頂きました。

対処法・解決策はございますでしょうか?
宜しくお願いいたします。

696:デフォルトの名無しさん
09/11/21 13:18:23
>>695
俺は何に原因がわかるかは知らないし、
ActiveXに関係ない話だが俺の話を聞いてくれ

Excel VBAでプログラム作ったんだよ。
クラスとかwitheventsとか使ってね。

そしたらなぜかExcelが強制終了するんだよw
いや、しないときもある。するときもある。
自分のマシンでは強制終了するのに、他のマシンでは動くとか
新しくExcel作ってソース全部移植したら直るんだよ。
でもしばらくするとまた強制終了するようになるんさよ。

原因さっぱりわかんねw
俺は思ったね。Excelで無理しちゃいけねぇ。
単純なマクロ程度で終わらせておくべきだって。

697:デフォルトの名無しさん
09/11/21 13:42:52
>>695
起動時に強制終了するアドインでも作ったんじゃね?


698:デフォルトの名無しさん
09/11/21 14:51:42
>696
わかる

699:685
09/11/21 15:14:26
>>686
出来ました。
ありがとうございました。

700:デフォルトの名無しさん
09/11/21 16:15:33
パチンコ店 ATM8000台 IIJ社 今後4、5年で全国に
URLリンク(www.jcp.or.jp)
2chとパチンコ屋が無くなれば日本の景気は上向くかもな

701:デフォルトの名無しさん
09/11/21 18:55:37
>>695 >>696
俺も似たような現象で悩んでいる。
アドイン複数入れて、VBAでプログラム作って2~3回動かすのには問題ないんだが
しばらく使ってExcelを終了させると、
「問題が発生したため、Microsoft Office Excelを終了します。ご不便をおかけして申し訳ありません。」
とかいうふざけたエラーが出てくる。

俺の記憶が確かなら、
グローバル変数とか配列を大量に使いだした辺りでぶっ壊れた気がする。
メモリを開放しなきゃいけないとか、そういうことなのか???

702:デフォルトの名無しさん
09/11/21 19:05:46
エクセルのブック自体が変なメモリリークをしてぶっ壊れるってのをよく聞くぜ。

703:デフォルトの名無しさん
09/11/22 00:08:50
>>680
MSのサイトにoutlook使ったメール送信のサンプル見つかると思うから
それを参考にしたら?
Accessに取り込んだ内容を登録したメアドにoutlook使って送信するPG
を昔作ったことがあるから、出来るはずだよ
ウイルス対策用(だろうなぁ・・)で1通単位でダイアログ押という仕様の
回避用のexeも見つかると思うから探してくれい


704:デフォルトの名無しさん
09/11/22 14:29:02
excel 2007
xp sp3

Sheet1のA1にSheet2を参照とした「=SUM(Sheet2!$A$2:Sheet2!$A$3)」を入れる為のマクロ、

Sub test()
Sheet1.Cells(1, 1).Formula = "=SUM(" & Sheet2.Cells(2, 1).Address & " : " & Sheet2.Cells(3, 1).Address & ")"
End Sub

ですと、Sheet1のA1には同一シートを参照とした「=SUM($A$2:$A$3)」となってしまいます。

"=SUM(" & Sheet2.Cells(2, 1).Address & " : " & Sheet2.Cells(3, 1).Address & ")"の部分を
"=SUM(Sheet2!$A$2:Sheet2!$A$3)"にすれば解決するのはわかっておりますが、
どうしてもcellsを使いたく質問させていただきました。
解決策がありましたら、宜しくお願いします。


705:デフォルトの名無しさん
09/11/22 14:39:40
>704

突っ込み所がいろいろと・・・
本題は数式のINDIRECTで解決しそうな気がするが?

706:デフォルトの名無しさん
09/11/22 14:51:06
>>704
Sheet2.Cells(2, 1).Address
が何を返すかを考えればいいんじゃね?

Sheet2.Cells(2, 1).Addressって書き方をするのも珍しい.....

707:デフォルトの名無しさん
09/11/22 19:21:46
プログラミング経験なしで興味を持ち趣味で覚えたいと思い色々考えた結果、
javascriptとvbscriptを学ぼうと思いました。入門するために言語について探しているうちに、
下記のようなことがしてみたいと思ったのですが、出来るのかということと、
もっと適した言語があるのかをご存知であれば助言くださるとうれしいです。

過去の株価を利用したシミュレーションプログラム。
具体的には、データとして興味のある某銘柄の日柄(日別に始値、高値、安値、終値、出来高)
を10年分オープンオフィスの表計算calcにyahooファイナンスから入手しました。
例えば、このデータを使って特定の日にその株を1000株買い、以降10円上がれば売り、売り値から
10円下がればまた買い、その買値より10円下がれば買い増し(仮の現金残高がなくなるまで)し、
それぞれは買値より10円上がると売る。
持ち株がなくなると、高値から1割下がったところからまた始める。
というようなことを繰り返すと、いくらの利益でいくらの買値ので
どれぐらい持ち株になった状態かを結果としてだすものです。

javascriptやvbscriptでも出来るのでしょうか、それとももっと別のスクリプト
言語の方が適しているのでしょうか?
よろしくお願いします。。

708:デフォルトの名無しさん
09/11/22 20:19:54
何か変なヤツが迷い込んでるな~

709:デフォルトの名無しさん
09/11/22 20:45:53
>>707
ようは売買システムのバックテストしたいんだろ
できるよ

というか言語で出来ることが制約されるケースは少ない
もちろん得意、不得意はあるけど
ってことで好きな言語使いな
そして、このスレ以外に逝け

710:デフォルトの名無しさん
09/11/22 20:56:01
>>707
ExcelVBAがいいんじゃないか?

711:701
09/11/22 20:57:29
>>702
MSのバグかよ。

データはエクセルから取得して、処理は他(とりあえずDelphiを考えている)でやって、
結果をまたエクセルに返すかな・・めんどくさ・・

712:デフォルトの名無しさん
09/11/22 21:10:43
うっはっっw

MSのバグ扱いかよw

713:701
09/11/22 21:26:24
>>712
じゃあ原因は何なんだよ

714:デフォルトの名無しさん
09/11/22 22:12:12
確かに、ウィンドウズもエクセルもMSだな。
そう考えたら、世の中で起きるバグの50%はMSのバグと云っても過言ではない。

715:デフォルトの名無しさん
09/11/22 22:31:13
>>714
だがオレのPCのバグは99%オレのバグと言っても過言ではない

何度PCや開発ソフトのせいにして、その後取り下げたことか・・・

716:デフォルトの名無しさん
09/11/22 22:41:02
>>715
wwwww

717:デフォルトの名無しさん
09/11/22 23:50:32
>>715
まぁ、シンタックスエラーなら仕方ないな。

718:デフォルトの名無しさん
09/11/23 10:52:45
>>510-544
お前らwwwww
今更だけどツボったwwwww
そういうセンスがいるんだなコーディングって俺まだまだだわ。

719:デフォルトの名無しさん
09/11/23 11:34:44
>>707
15マソぐらいとちょっと高いけど、検証くんなどソフトもあるぞ

720:デフォルトの名無しさん
09/11/23 15:05:25
excel2003

こんにちは

For Nextを使い、
セルE5、E6、E7へそれぞれ「H線」「L線」「中心線」という文字を入れたいのですがどうすればよろしいでしょうか?

For i = 1 to 3
Cells(5,i + 4) = ?
next i

721:デフォルトの名無しさん
09/11/23 15:30:19
x = Array("H線", "L線", "中心線")
For i = 1 To 3
Cells(5, i + 4) = x(i - 1)
Next i

初心者の発想はこんな感じ。

722:720
09/11/23 15:45:34
>>721

早速のご回答、誠に有り難うございます。
>>721様のおかげで解決できましたので、心より御礼申し上げます。


723:デフォルトの名無しさん
09/11/23 16:22:36
初心者に配列はいきなりきついんじゃないか?

724:デフォルトの名無しさん
09/11/23 16:31:36
>>720
For-Next使う必要ないじゃん

For i = 1 To 3
Next i
Range("E5").Value = "H線"
Range("E6").Value = "L線"
Range("E7").Value = "中心線"

725:デフォルトの名無しさん
09/11/23 17:07:02
>>723
配列無しで出来る?
俺には思いつかなかった

726:デフォルトの名無しさん
09/11/23 17:21:26
>>724よく見たら笑えるww三回回ってワン

あれは配列のお勉強だったんじゃね?

727:デフォルトの名無しさん
09/11/23 17:32:17
For i = 1 to 3
Cells(5,i + 4) = Iif(i=1,"H線",Iif(i=2,"L線","中心線"))
next i

配列思いつかなくてもできるじゃん不気味で自分はこんなの書きたくないけど。

728:デフォルトの名無しさん
09/11/23 18:01:59
なんでループにすんの?

729:デフォルトの名無しさん
09/11/23 19:07:59
これはどうですか
For i = 1 To 3
Cells(5, i + 4) = Choose(i, "H線", "L線", "中心線")
Next i

730:デフォルトの名無しさん
09/11/23 19:14:19
x = Array("H", "L", "中心")
For i = 1 To 3
Cells(5, i + 4) = x(i - 1) &"線"
Next i

731:デフォルトの名無しさん
09/11/23 19:17:41
vbaにもchoose関数あるの初めて知ったわw

732:デフォルトの名無しさん
09/11/23 19:29:47
同じく、知らんかった。へ~。。。

733:デフォルトの名無しさん
09/11/23 20:05:46
x = Array("H", "L", "中心")
ReDim y(1 to 1 , 1 to 3 )

For i = 1 To 3
y(1 , i)=x(i - 1) &"線"
Next i

Range("E5:E7")=y


もしもしからなので動くかどうかはしらね

734:デフォルトの名無しさん
09/11/23 21:37:37
>>724
お前>>718だろ?w

735:デフォルトの名無しさん
09/11/23 21:44:02
>>720
>>529流に書くとこうだな。
For i = 1 To 3
Next
Range("E6:E8").Value=WorksheetFunction.Transpose(Split("H線 L線 中心線"))

下が普通だが。
For i = 1 To 3
Next
Range("E6:E8").Value=WorksheetFunction.Transpose(Array("H線","L線","中心線"))

736:デフォルトの名無しさん
09/11/23 21:53:08
おまいらForがかわいそうとかNextが不憫とか思わんの?

737:デフォルトの名無しさん
09/11/23 21:58:09
>>721の一部修正
x = Array("H線", "L線", "中心線")
For i = 1 To 3
Range("E5").Cells(1, i).Value = x(i - 1)
Next i


738:デフォルトの名無しさん
09/11/23 22:02:05
なんだChooseがVBAで使えるのかよ。
俺も知らんかったわ。

739:デフォルトの名無しさん
09/11/23 22:11:42
何もないのに回っているFor-Nextを思うと萌える

740:デフォルトの名無しさん
09/11/23 22:25:43
For i = 1 To 3
Next i
Range("E6:E8").Value = [{"H線";"L線";"中心線"}]

741:デフォルトの名無しさん
09/11/23 22:28:06
Evaluateか、なるほどそれもあるな。

742:デフォルトの名無しさん
09/11/23 22:28:09
Sub 萌()
Do
Loop
Exit Sub

743:デフォルトの名無しさん
09/11/23 22:33:23
>>739
何もなくても行数を稼ぐのが昔はプロの技と言われたもんだぜ

744:デフォルトの名無しさん
09/11/23 22:35:06
ボッタクリの末路は...

745:デフォルトの名無しさん
09/11/23 22:43:56
>>742
無限ループって怖くね?
スレリンク(prog板)

746:デフォルトの名無しさん
09/11/24 00:22:51
  i = 1
Loop1:
  If i > 3 Then GoTo Loop1_End
  Select Case i
    Case 1: Cells(5, 5).Value = "H線"
    Case 2: Cells(5, 6).Value = "L線"
    Case 3: Cells(5, 7).Value = "中心線"
  End Select
  i = i + 1
  GoTo Loop1
Loop1_End:

747:デフォルトの名無しさん
09/11/26 14:22:47
Ruby 1.9 And Rails 3.0
URLリンク(www.slideshare.net)

748:デフォルトの名無しさん
09/11/26 15:55:58
>>745
ずーっと萌え続けるからいいんじゃね

749:デフォルトの名無しさん
09/11/26 17:09:50
URLリンク(www.nikkei.co.jp)

750:デフォルトの名無しさん
09/11/26 17:39:38
まったくズブの素人です。
これからブイバ初めても間に合いますか?
プログライミングをでけるようになりたいから
手始めにVBAから勉強するのか迷い中です。
何か時代は.NETでブイビーも.NET
それじゃ~ブイバももう手遅れなんでしょうか?

751:デフォルトの名無しさん
09/11/26 17:47:16
373 デフォルトの名無しさん [] 2009/11/26(木) 17:41:52 ID: Be:
パイソンって強そうな名前ですが、本当につおいのですか?
でもちょっとHでもありますが。。

752:デフォルトの名無しさん
09/11/26 18:39:28

暇人


753:デフォルトの名無しさん
09/11/26 19:17:14
>>750

プログラミング云々以前に日本語を正しく書けるようにしろよ
「プログライミング」とか「ブイバ」とかさ、、、w

それに間に合うとか間に合わないかとかの問題じゃないと思うよ。
Excelでやらせたい事があるんだったらVBAだろうし。


754:デフォルトの名無しさん
09/11/26 20:41:09
>>753
あっプログラミングの間違い、頭ではプログラミングつって
書いた覚えなんだけんど。
そんでブイバって読むんとちゃうんかいな。長いでど
ブイビーエーとでも言うんですか?
田舎もので素人だもんで、そげんこつも誰も教えてくれんから、
愛嬌ということで。。

755:デフォルトの名無しさん
09/11/26 20:49:00
972 デフォルトの名無しさん [sage] Date:2009/11/23(月) 17:09:32  ID: Be:
    ID強制になるだけで静かになるよ

973 デフォルトの名無しさん [] Date:2009/11/23(月) 18:02:02  ID: Be:
    その変更はキミに任せるから提案してくれ。

974 デフォルトの名無しさん [] Date:2009/11/23(月) 18:18:58  ID: Be:
    反対するのは荒らしたい奴だけだから強行しちゃって良いよ

756:デフォルトの名無しさん
09/11/26 21:23:18
↓うーんセフセフのAA

757:デフォルトの名無しさん
09/11/27 21:27:13
↑そのAA持ってないんですいませんがw

Excel2007
テキストボックスについてですが。
MultiLineをtrueに、ScrollBarsをfmScrollBarsBoth
にセットして、データの表示(更新)用に使っています。

表示する時にマウスのホイールボタンでスクロール出来るようには
出来ないのでしょうか?



758:デフォルトの名無しさん
09/11/28 01:08:03
yes we can

759:720
09/11/28 11:55:34
EXCEL 2007

こんにちは

マクロを使い、オートフィルで連続データを作成しているのですが、
書式もオートフィルされてしまい困っています。

値だけをオートフィル(連続データ)するやり方があればご教授ください。
宜しくお願いします。




760:デフォルトの名無しさん
09/11/28 12:12:04
.value

761:デフォルトの名無しさん
09/11/28 12:18:21
マクロの記録でやってんのかな
試したけど無理っぽいから、あきらめてきちんとコードを組む

762:デフォルトの名無しさん
09/11/28 12:40:59
構文 Object.AutoFill(Destination, Type)

設定項目 内容
Object Rangeオブジェクトを指定
Destination オートフィルの書き込み先のRangeオブジェクトを指定
Type 入力されるデータの種類を指定。XlAutoFillクラスの定数を指定

XlAutoFillクラスの定数
・xlFillDefault:標準のオートフィル
・xlFillSeries:連続データ
・xlFillCopy:コピー
・xlFillFormats:書式のみコピー
・xlFillVaules:書式なしコピー
・xlFillYears:年単位
・xlFillMonths:月単位
・xlFillDays:日単位
・xlFillWeekdays:週日単位
・xlLinearTrend:加算
・xlGrowthTrend:乗算


763:デフォルトの名無しさん
09/11/28 13:02:02
でも書式コピー梨、連続(加算)は出来ないっぽいよ

764:デフォルトの名無しさん
09/11/28 16:03:46
たぶんそうだよねー
オートフィルもExcelマクロっぽくて悪くないと思うから
とりあえずオートフィルして書式は別に直すとか

765:デフォルトの名無しさん
09/11/28 18:56:46
質問です。
Excel VBAからワードや他のエクセルファイルの操作ってできますか?
やりたいこととしては、VBAを仕込んだxlsファイルに、
置換したい文章を記述し(置換前と置換後をシート内に記述)、
指定したフォルダ内(サブ含む)にあるエクセルファイルやワードファイルに
書かれている文章を変換したいのです。

その際、「この文章を変換しました」みたいなログも出せたら最高なのですが、
いい方法ってありますか?

766:デフォルトの名無しさん
09/11/28 18:58:00
yes we can

767:デフォルトの名無しさん
09/11/28 19:10:59
>>765
VBAから他のファイルを操作できる

ログは画面にだすならmsgboxでいいでしょ
フィルに書き出したいならテキストファイルでもオープンして書き出せばよい

768:759
09/11/28 20:18:10
>>761>>763>>764
ご回答、ありがとうございます。

やはりむりですか・・・
オートフィル以外でいくつかつくったのですが、スピードを重視したくオートフィルにこだわっていました。
やりたいことは、A1の値を基にB1:B100までA2で指定された増分値に沿った降順連続データをつくりたかったのです。
考えついたものを下記に貼りますので、改善点やより良いコードがありましたらご教授ください。
宜しくお願いします。

Sub test1()
基準値 = Cells(1, 1).Value
増分値 = Cells(2, 1).Value
For i = 0 To 99
Cells(1 + i, 2).Value = 基準値
基準値 = 基準値 - 増分値
Next i
End Sub

Sub test2()
基準値 = Cells(1, 1).Value
増分値 = Cells(2, 1).Value
For i = 0 To 99
Cells(1 + i, 2).Value = 基準値 - i * 増分値
Next i
End Sub

Sub test3()
増分値 = Cells(2, 1).Value
For i = 1 To 100
Cells(i, 2).Value = WorksheetFunction.Sum(Cells(1, 1).Value, Cells(2, 1).Value - i * 増分値)
Next i
End Sub

769:デフォルトの名無しさん
09/11/28 20:28:08
>>767
具体的にはどのようにするんでしょう・・・<ファイル操作
また、AAAという単語はヒットしたので置換したけど、
BBBという単語がない場合、AAAだけ置換したよ、というログとかも取れますか?

770:デフォルトの名無しさん
09/11/28 21:01:43
Excel VBA WEB連携術って本みつけたんだけど誰かレビューしてくれませんか?

ちなみにieを使ったシステムへの自動化を考えてます。
それの助けになるか聞きたいです。

771:デフォルトの名無しさん
09/11/28 21:08:53
>>770
おし引き受けた!


レビュー:
読んだことないけど多分読まないよりましじゃね?

772:デフォルトの名無しさん
09/11/28 23:39:43
>>770
何をやりたいのかもうちょっと詳しく

自動化って言えば聞こえはいいけど、よくよく話を聞いてみると
たいていは株とかFXとかで楽して儲けたいだけみたいなのが多い

773:デフォルトの名無しさん
09/11/28 23:44:31
>>769
例えば、マクロ記録で目的のファイルを開いて、できたブックからシートを自分のシートに移動する
で、移動してきたシートをコピーしといて、どちらか一方を置換する
あとは置換後に双方を比較して、違う部分を表示するとか

他にも方法は山ほどある
まずは自分でアウトラインを固めて、ポイントを絞って質問してくれないと回答しようが無い

774:デフォルトの名無しさん
09/11/28 23:45:54
>>772
まぁ株なりFXの自動売買だろ
そして、この程度も自分で調べてできない人間はロクなシステム組めないに1000ガバス


775:デフォルトの名無しさん
09/11/28 23:57:41
>>773
すいません、大雑把にしか書いてなかったので答えることもできなかったですねorz
仕様としてはこんな感じです。

VBAを記述したExcelに、置換前・置換後を記述したの置換リストをシートとして作成しておきます。
[VBA記述xlsファイル上の置換リスト]
置換前 | 置換後
------------------
ABC   | XYZ
log-in  | log in
login   | log in

そのシート上にフォルダを指定するセルを用意し、ボタンを押す(マクロ実行)ことで、
指定されたフォルダ(サブフォルダ含む)にあるxlsファイル、docファイルを参照。

ヒットしたファイルの中に、置換リストの置換前と同じ文章があった場合、
ログとして「(ファイル名)▲▲を●●に置換」のような情報を出力し、置換を行います。

うまく纏まっていないかもしれないですが、このような仕様でつくりたいと思っています。
ググってみた感じ、ワードファイルの文章置換を行うロジックはあったのですが、
「本当に置換を行ったか」が取得できなさそうな感じがして・・・。
(▲▲があれば●●に置換する、という処理なので、▲▲がなくても変換せずに処理が終わるはず。変換したか?という状態が取れない感じが)


776:デフォルトの名無しさん
09/11/29 00:06:24
このスレはプログラマにとっては有益なスレで
クレクレ君には無益なスレです
テンプレ参照

777:デフォルトの名無しさん
09/11/29 01:18:29
プログラマにとっては有益 ← ここ、笑うところ?

778:デフォルトの名無しさん
09/11/29 01:22:35
ゆとりには笑うとこまで指示してやらんと

779:デフォルトの名無しさん
09/11/29 02:30:54
OSはXP
バージョンは2002です。


単刀直入に聞きます
「ユーザーフォーム上に設置したスプレッドシート」

これをエクセルのシートのように読み込む(ActiveSheet.Range(Cells(1, 1)~のような書式)ことは可能でしょうか?

780:デフォルトの名無しさん
09/11/29 10:31:56
>>779
可能

781:デフォルトの名無しさん
09/11/29 14:03:26
vistaを使ってると、IE7がプリインストールしてあるためにウェブクエリ取得やIEの操作などが正常に作動しないことがあります。
そこで、windows7にはXPモードがあると聞きました。そのXPモードで使われるIEがバージョン6なのかが気になっています。
IE6を使えるなら早めにwindows7搭載のPCに買い替えるつもりです。どうかお教えください。

782:デフォルトの名無しさん
09/11/29 14:41:08
IE6を使える

783:デフォルトの名無しさん
09/11/29 14:46:46
まずIEはバージョン6

注意事項としてXP Modeは Windows 7 Professional 以降で搭載される。
一般のメーカー製 Windows 7 プレインストールPCはほとんどが Home Premium でXP Modeは搭載されてないので注意

あと、XP Modeといっても特に他アプリと連携するような場合には
正常に動作するか分からないのでできれば事前にどこかで確認してみることをすすめる
おそらく統合機能ってのを使わなければ、ほぼ問題ないとは思うけど、統合機能使わないと XP Mode の利点はあまりないと思うし

784:デフォルトの名無しさん
09/11/29 15:05:34
バーチャルPC使えよ

785:781
09/11/29 17:48:41
やはりMSなりに問い合わせたほうが無難なのですね。
バーチャルPCについて調べてみましたが、これならvistaでもxpを動かせるのですね。インストールして試してみます。
ありがとうございました。

786:デフォルトの名無しさん
09/11/30 15:26:51
Excelの関数の質問なのですが
入力した数字が6~10のとき○、11~15のとき◎

   A  B
1  6  ○
2  11 ◎

という風に○や◎を表示させたいのですが、関数がどうしてもわかりません。
どなたかよろしくお願いいたします。

787:デフォルトの名無しさん
09/11/30 15:33:26
VBAと関係ないね

788:デフォルトの名無しさん
09/11/30 15:52:52
すみません、間違えました。

789:デフォルトの名無しさん
09/11/30 19:19:49
Function Maru(n)
  Maru = ""
  If (6 <= n) And (n <= 10) Then Maru = "○"
  If (11 <= n) And (n <= 15) Then Maru = "◎"
End Function

790:デフォルトの名無しさん
09/11/30 22:39:34
リストボックスで数値の項目を右詰めにしたいんですが、どうすればよいでしょうか?
2007です。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch