●EXCEL・VBAの教えて ..
[2ch|▼Menu]
1:デフォルトの名無しさん
07/01/09 11:14:15
・まじめにExcelの機能を追及してみようと思う奇特なひと
・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと
・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと
・とにかく漏れにこんな仕事まわすなと怒っているひと
そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです

OOoのCalcの質問もOKです

前スレ
スレリンク(tech板)


2:デフォルトの名無しさん
07/01/09 11:16:39

前スレの
スレリンク(tech板:942番)

>942 :デフォルトの名無しさん :2007/01/05(金) 11:14:02
>単発質問スレなのに、何故か質問スレと勘違いした奴等が迷い込んできてるだけ
>もうすぐ1000だし、単発質問駄スレの次スレを意気揚々と立てちゃうバカも居ないだろうから
>もうちょっとで消えるさ

に触発されたので勃てた。

今は反省している。


3:デフォルトの名無しさん
07/01/09 12:32:18
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|


4:どうかご慈悲を
07/01/09 17:29:47
dσv/dx +4(kσvtanφ+Cw)/D=γω^2*(Ro+x)

変数はxとσvでこれらをExcelVBAによって倍精度ルンゲクッタ法で解くプログラムはどのようにしたらいいですか?以下の修正部分を教えてください。お願いします。物性値の依存性は無視してプログラムとしてどう修正すればよいか教えてください。
Sub 円筒部()
'Diff. Eq: F(X,Y)= ω^2*(Ro+X)*649.96*Y^0.0959-0.1*(1.1*(1-SIN(38.727*Y^(-0.0204)))*Y *TAN(28.638* Y ^(-0.04))+0.239* Y ^0.5389)
'READ INITAIAL CONDITIONS
X = Cells(4, 1).Value: Y = Cells(4, 2).Value
H = Cells(4, 3).Value: N = Cells(4, 4).Value
L = Cells(4, 5).Value: ω = Cells(4, 6).Value
Ro = Cells(4, 7).Value '
For I = 0 To N
Cells(I + 7, 2).Value = X
Cells(I + 7, 3).Value = Y
K1 = H * (ω ^ 2 * (Ro + X) * 649.96 * Y ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * Y ^ (-0.0204))) * Y * Tan(28.638 * Y ^ (-0.04)) + 0.239 * Y ^ 0.5389))
K2 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K1 / 2) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K1 / 2) ^ (-0.0204))) * (Y + K1 / 2) * Tan(28.638 * (Y + K1 / 2) ^ (-0.04)) + 0.239 * (Y + K1 / 2) ^ 0.5389))
K3 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K2 / 2) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K2 / 2) ^ (-0.0204))) * (Y + K2 / 2) * Tan(28.638 * (Y + K2 / 2) ^ (-0.04)) + 0.239 * (Y + K2 / 2) ^ 0.5389))
K4 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K3) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K3) ^ (-0.0204))) * (Y + K3) * Tan(28.638 * (Y + K3) ^ (-0.04)) + 0.239 * (Y + K3) ^ 0.5389))

X = X + H
Y = Y + (K1 + 2 * (K2 + K3) + K4) / 6
Next I

End Sub


5:どうかご慈悲を
07/01/09 17:31:35

dσv/d(x−L) +2(Kσvtanα+2Cw)/{D-2(x−L)tanα}=γω^2*(Ro+x)
同様にこちらでは上に準じてどうすればよいでしょうか?

6:デフォルトの名無しさん
07/01/09 20:27:08
WordVBAに関する質問です(WordにはVBAスレが無いようなので)

ExcelとWordの両方でファイルを開く・新規作成時に
ある処理hogeを行うようにしたいと考えています。
Excelではアドインファイル(xls)として保存し、XLStartフォルダに置いとけばOKでした。

WORDではテンプレートファイル(dot)を作成し、Startupにおいて試行錯誤してみましたが
起動・ドキュメントを開く・新規作成するのイベントが拾えませんでした。
作成手順等のご指導お願いします。


以下は、Excelのコードです。
Private WithEvents m_App As Application

Private Sub Workbook_Open()
Set m_App = Application
End Sub

Private Sub m_App_NewWorkbook(ByVal Wb As Workbook)
call hoge()
End Sub

Private Sub m_App_WorkbookOpen(ByVal Wb As Workbook)
call hoge()
End Sub


7:デフォルトの名無しさん
07/01/10 00:13:05
関数全部載ってる本ない?

よくあるだろ、「よく使う関数だけしか載ってない」のが。


そうじゃないんだよ、俺がほしいのは辞書のごとき参考書なの!!


勝手に取捨選択するな、使える関数や命令全部見せろっつの!!
ショー・ミーダ・関数
だっつうの!!!!!!

8:デフォルトの名無しさん
07/01/10 04:10:45
っ MSDN

9:デフォルトの名無しさん
07/01/10 14:42:25
>>7
付属ヘルプに全部載ってるよ。

10:名無し
07/01/10 15:56:07
すみません、excelのVBAでマクロを作っているのですが

まず、数値の入った表があります

その表の行を組み替えてできる表をみつけるマクロを作っているのですがまったくできる気配がありません

申し訳ないのですが助けていただけませんか??



1 0
0 1

の場合で2行2列の表を見つける

1 0  1 0  0 1  0 1
1 0  0 1  1 0  0 1

の4つできます

この例では1行目は10、2行目は01で出来ているのでこれの組み替えでできるのは4つになります


11:名無し
07/01/10 15:57:34
先ほどの例

1 0
0 1

の場合で3行2列の表を見つける

1 0  1 0  1 0  0 1  1 0  0 1  0 1  0 1
1 0  1 0  0 1  1 0  0 1  1 0  0 1  0 1
1 0  0 1  1 0  1 0  0 1  0 1  1 0  0 1

のようになります

わかりにくい説明なのですがよろしくお願いします

12:デフォルトの名無しさん
07/01/11 07:25:18
silver-mealをvbaで書きたいのですが
プログラムができません。
どなたか教えてください!!!!
よろしくお願いします。

Compute
Calclulate THC(k) which is the actual comulative inventory-holding cost for the first k period if d(k) is ordered at the beginning of the first period.
Compute TC(k)=THC(k)+C0.
Find k*=min{k:TH(k)/k ≦ TC(k+1)/(k+1)}.
Renumber the period numbers and repeat from 1 until all N periods are covered.
Total Cost =$1260

week 1 2 3 4 5 6 7 8
demand 20 20 30 40 140 360 500 540
order 70 0 0 180 0 360 500 540
ending inbentory 50 30 0 40 0 0 0 0

13:デフォルトの名無しさん
07/01/11 12:34:40
シート開いた瞬間に文字入力ボックスを自動で発生させたいときはどうすればいいのですか


普通にやると、どこかのセルをダボークリッキンとかすることがトリガーになるじゃないですか
そういうことを何もせずとも出したい。

14:デフォルトの名無しさん
07/01/11 18:04:39



Excel VBAに関する質問はここで↓

Excel総合相談所 52
スレリンク(bsoft板)





VBAとして実行するとしても、Excelの操作に関係ない場合はここで↓

VBプログラマ質問スレ(6.0以前) Part50
スレリンク(tech板)





回答が要らないネタの場合はここで↓

●EXCEL・VBAの教えてスレ Part2●
スレリンク(tech板)




15:どうかご慈悲を
07/01/11 18:27:01
dσv/dx +4(kσvtanφ+Cw)/D=γω^2*(Ro+x)
dσv/d(x−L) +2(Kσvtanα+2Cw)/{D-2(x−L)tanα}=γω^2*(Ro+x)
解析的には解けないのでルンゲクッタ法で解きます。
初期条件は(1)がx=0、σv=σ₀、γ=γ₀
     (2)のσv、γはx=Lにおける(1)の解
これのEXCEL VBAプログラムをお願いします。
正直時間がないのでどうか今週中にお願いできませんでしょうか。自分ではにっちもさっちも行きません。
この先に進めないと本当に危ないんです。

16:デフォルトの名無しさん
07/01/11 19:59:28
>>15
学校の宿題?

17:デフォルトの名無しさん
07/01/11 22:17:56
おまえがそんな問題も解けずにそのまま先に進んでしまう方が危ないと思う


18:デフォルトの名無しさん
07/01/11 22:24:07
Excelの命令集 -> ヘルプで完璧

OpenOffice Calcの命令集


は?

19:デフォルトの名無しさん
07/01/12 05:38:03
>>18
OpenOffice Calcの命令集 -> ソース見れば細かい仕様まで確認できて超完璧

20:デフォルトの名無しさん
07/01/13 03:25:55
C#出来たらVBいらん気がする
VBAもC#のどっちか選択で書ければいいのに・・・・

21:デフォルトの名無しさん
07/01/13 22:49:19
ヤフーのサイトを使って
セルに名入力された名称から株や証券のコードを検索、取得したい
データ取得のwebクエリ使うとなぜか関係ないコードを取得してしまう
vbaを使ってhtmlをexcelで開いてそこからコードを引っ張ろうと思う
shift-jis→url文字列(euc)の変換は上手くいってるのだが
Workbooks.Open FileName:=f_name
の形式で開くと文字化けしてしまう(urlに渡している文字列が)
楽天はOKだったけどミツウロコはミツウ・然ってなっちまう

f_nameの文字列をコピーして
ブラウザのアドレスバーに入力すると
正常に検索結果画面が得られる

助けて〜

22:21
07/01/13 23:35:12
age

URLリンク(quote.yahoo.co.jp)名称
でその名称を含んだコードが取得できる

webクエリの方法かopenする方法
ご存知の方、教えてください

23:デフォルトの名無しさん
07/01/14 00:53:01
excel VBAでシート上のテキストボックスを全部取得したいのですけど、
worksheets.shapes(i).textboxes
で i で ループさせるとどうしてもあるインデックスだけ
エラーになってしまいます。

何が考えられますか?

24:デフォルトの名無しさん
07/01/14 02:25:28
HasTextFrameプロパティ?


25:デフォルトの名無しさん
07/01/14 12:56:30
こんにちわ。
for文なんですが、たとえば
for i = 2 to 3 and 5
for j = 1 to 3
strAns(j)= cells(1,i).value
next
next
で、2,3,5がA,B,Cだとして、strAnsにA+B+Cを表示させたいのですが出来ないんです
2,3,5が数値なら出来るのですが、どなたか助けてください。

26:デフォルトの名無しさん
07/01/14 14:01:32
cells(1,1)
range("A1")
range(cells(1,1))

は同じセルを指す

27:デフォルトの名無しさん
07/01/14 14:37:04
>25
文字列を連結するときには”+”じゃなく”&”を使うって事は理解できてるのかな。

28:デフォルトの名無しさん
07/01/14 17:29:22
>>25
はい。+1は。
表示させたいのは”ABC"なんです。

29:デフォルトの名無しさん
07/01/14 17:31:44
>>25
書き込みまちがえました
&を理解してませんでした。

30:デフォルトの名無しさん
07/01/14 17:49:15
&を使ったら表示できた

安堵する

by 安藤

と思ったらアンドゥしてしまいました

ヌあんだと

31:デフォルトの名無しさん
07/01/15 01:22:31
>24
ありがとう。そんなのがあったんですね。
チェックせずに回してた。

32:デフォルトの名無しさん
07/01/15 20:31:23
>>31
excelにはない罠

33:デフォルトの名無しさん
07/01/16 00:50:35
0から10までの偶数の合計を表示させるには
どうしたらいいかわかる人いますか?


Sub 合計()
Dim intcount As Integer
Dim inttotal As Integer
For intcount = 0 To 10 Step 2
MsgBox intcount

Next
End Sub

これだと0から10までの偶数が並べられるだけで足されません。

34:デフォルトの名無しさん
07/01/16 04:25:46
Sub 合計()
  Dim lngCount As Long
  Dim lngTotal As Long

  For lngCount = 0 To 10
    If (lngCount Mod 2) = 0 Then
      lngTotal = lngTotal + lngCount
    End If
  Next lngCount
  MsgBox lngTotal
End Sub

35:デフォルトの名無しさん
07/01/16 10:05:07
こんにちは。質問させてぐださい。
アンマネージのC++で作成したDLLを呼び出したいのですが、
VBAでプロトタイプ 宣言する時に、DLLのパスを指定しますよね。
普通、絶対パスか環境変数でPATHの通っているところにDLLを置きますが、
このパスをエクセルファイルを基準に相対パスで指定したいのですがなかなか上手くいきません…。
そもそもこれって可能なのでしょうか?
あともう一つ、VBAの参照設定に参照したいDLLを登録しても、結局絶対パスにしなければいけないのは変わらないですよね…。

やりたいことを要すると、
エクセルファイルと同じディレクトリにDLLを置いていれば、
どこにそれらを置いても動作してくれるようにしたいのです。

VBAを動作させる環境はEXCEL2000です。
変なこと言ってるかもしれませんがよろしくお願いします…。

36:デフォルトの名無しさん
07/01/16 10:20:35
ブックのパスを取得する方法も知らないの?

37:35
07/01/16 10:35:20
>>36
回答ありがとうございマッスル
VBAのコードを実行させたときにブックのパスを取得する方法はわかるんですが、
プロトタイプ宣言時にブックのパスって取得できるんでしょうか?

38:デフォルトの名無しさん
07/01/16 10:54:07
うん
まぁがんばれ

39:35
07/01/16 11:34:41
Private Declare Function TestSub(ByVal InputPath As String) Lib "Test.dll" As Integer

で、TestSubを呼び出す前に

ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path

をして

TestSub("test")

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

40:デフォルトの名無しさん
07/01/16 19:17:49
For i to 〜〜 Next で、1つの行のセルの値をひとつずつ取得して変数に代入したいのですが、
Forで使っている i をセルの位置を指定する数字として使用するにはどうすればいいのでしょうか?

(変数)=Range("A"i).Value や
(変数)=Cells(i , 2).Value と試してみたのですがダメでした。


41:デフォルトの名無しさん
07/01/16 19:29:40
> (変数)=Range("A"i).Value
は文法的に間違ってるから当然ダメだが、
> (変数)=Cells(i , 2).Value
はB列のi行を取得できるはずだが。

ダメならちゃんとブック、シートも指定してみろ。
それらを表略した場合の動作は、コードを書いたモジュールによって異なるからな。

42:40
07/01/16 19:45:06
>>41
レスありがとうございます。
やはり Cells(i,2).Value でもエラーが出ました。一応プログラムを載せてみます。
Sub count256()

Dim i As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer

c = 0
For i = 2 To 1883
a = Cells(i, 3).Value
b = Cells(i, 4).Value
If a >= 256 Then
If b >= 256 Then
c = c + 1
End If
End If
Next i

Cells(7, 1).Fomula = c

End Sub

ブックとシートの指定はどこでやればいいのでしょうか?

43:40
07/01/16 20:07:03
すいません、ただたんに変数宣言でInteger と Double を間違えているだけのようです。
エラーがセル指定のところだったので勘違いしていました・・・

44:デフォルトの名無しさん
07/01/16 22:15:17
VBEをVBAから弄るためにはどうすればいいですか?

45:45
07/01/17 16:33:10
EXCEL-VBAのマクロでソルバーを起動、計算させるコードを書こうと思っています。
(Microsoft Excel 2000)
「参照設定」で「solver.xls」を読み込んだ後、プロジェクトウィンドウ欄に「solver.xla」
が出てきたのでダブルクリックしたのですが、「パスワードを入力してください」というメッセージが
出てきてコードを表示できません。
もともとここをいじらずにVBAプロジェクト上でソルバー起動のコードを書くのでしょうか?
教えてください。



46:デフォルトの名無しさん
07/01/17 16:47:52
標準で付いてくるソルバーはワークシート上で使うものであって
VBAで使うものじゃないからな。当然コードは非公開。

47:45
07/01/17 19:05:33
>>45
なるほど
プロジェクト上でフツーにコード書いたらソルバー動かせました。
ありがとうございました。

48:デフォルトの名無しさん
07/01/19 15:50:11
どなたかバブルソートのプログラムを教えて頂けないでしょうか?
(例えば5つの数字を小さい順に並べ替えるというもの)

49:デフォルトの名無しさん
07/01/19 16:06:29
>>48
Web上にサンプルコードが転がってるだろ

50:デフォルトの名無しさん
07/01/19 16:18:56
Visual Basicで出力結果をExcelで表示させるプログラムを教えて下さい。

51:デフォルトの名無しさん
07/01/19 16:21:57
>>50
VBプログラマ質問スレ(6.0以前) Part50
スレリンク(tech板)

52:デフォルトの名無しさん
07/01/20 12:32:43
どっかの宿題スレで見たぞ
マルチじゃないのか?


53:デフォルトの名無しさん
07/01/21 23:18:46
コンボボックスに複数のセル範囲の値をリスト表示させるには
どうしたらいいの?
ListFillRangeプロパティに指定しても受け付けてくれない。


54:デフォルトの名無しさん
07/01/21 23:37:48
>>53
AddItemで入れてきゃいいじゃん。
コンボボックスってのは元々コードでアイテムを設定するものだから。

55:エクセル楽しい♪
07/01/22 01:22:42
ExcelVBAでWindowsMediaPlayer9を制御したいのですが、命令がわかりません。
おわかりになる方はお教えいただければ幸いです。

◆やりたいこと
ユーザーフォームのテキストボックスにテキストを入力して、
「画像表示」ボタンを押すと、テキストに対応する動画像が表示される
ようにしたい。

◆困っていること
ユーザーフォーム上でテキストを入力して、「画像表示」ボタンを押した後、
さらに、同じくユーザーフォーム上のWindowsMediaPlayerの画面の「再生」
ボタンを押さないと再生できない。
「画像表示」ボタンを押せば再生できるようにしたい。

◆状態
ユーザーフォーム上に、「ツール」→「その他のコントロール」で
WindowsMediaPlayerを埋め込んでいます。
そして、フォームのコードを下記のように書いています。
Private Sub cbGazouhyouji_Click()
  〜中略〜
With main.WindowsMediaPlayer
.URL = "C:\XXXXXX\" & XXXX & ".MOV" ←ここまでは正常に動く
'.status = "再生中"        ←ここが違っているようです
End With
  中略
End Sub

◆条件
ExcelVBAだけでできることが希望です。他にツールや高度な技術が必要な
場合は、できないということで結構です。

56:デフォルトの名無しさん
07/01/22 03:39:32
無限ループになったらどうすればいいですか?
タスクマネージャで終了させたらコードが全部

57:デフォルトの名無しさん
07/01/22 03:45:55
無限ループさせなきゃいいだべさ
保存してから実行すればいいだべさ

58:デフォルトの名無しさん
07/01/22 04:25:20
Escキー押してみるといいだよ

59:デフォルトの名無しさん
07/01/22 04:49:47
Ctrl+Break

60:デフォルトの名無しさん
07/01/22 16:33:48
ボンボボックスってなんですか。

61:デフォルトの名無しさん
07/01/22 17:07:51
>>55
スレ違い

62:デフォルトの名無しさん
07/01/23 08:53:19
すいません画像の色情報に関して質問なんですが

今はApplication.CommandBars("Picture").Controls.Item(12).Executeを出して
手動で透明にしてから
色情報 = Selection.ShapeRange.PictureFormat.TransparencyColor
を出しています。

これを自動で透明にしたいのですがどうやればいいのでしょうか?

63:デフォルトの名無しさん
07/01/23 09:26:33
>>62
普通に

64:デフォルトの名無しさん
07/01/23 18:46:06
>>63
Win32APIのGetPixelで解決しました。ありがとうございました。

65:デフォルトの名無しさん
07/01/24 01:02:18
初心者すぎる質問ですが;
セルの数値を +1 するようなマクロを、マクロボタンに登録して、マクロボタンをクリック
する度に、セルの数値を増加させるというようなマクロってどう書けばいいの?

66:デフォルトの名無しさん
07/01/24 01:11:42
>>65
マクロボタン作って

Private Sub CommandButton1_Click()

Cells(1, 1) = Cells(1, 1) + 1

End Sub

でおk

67:デフォルトの名無しさん
07/01/24 01:20:06
できました
ありがd

68:デフォルトの名無しさん
07/01/24 11:49:50
ExcelVBAで、TextBoxの中にある文字列をShift+Enterで改行した時、
TextBox内の上の行と下の行との間隔を設定する方法、ご存じの方おられませんか?


69:デフォルトの名無しさん
07/01/24 11:56:52
>>68
それはTextBoxの領分ではなくRichTextBoxの領分だ
ちゃんと目的にあったコントロールを使おう

70:デフォルトの名無しさん
07/01/24 13:48:02
>>69
解答ありがとうございます。
早速調べてみたのですが、現在の環境WinXP・Excel2000(VBA6)では
Microsoft Rich Text Box Controlが無いようです(参照設定の中にありませんでした)

何か他の方法ないでしょうか?
お手数お掛けします


71:デフォルトの名無しさん
07/01/24 14:13:15
>>70
「参照設定」ではなく「その他のコントロール」だぞ
いったい何を調べてるんだか┐(´ー`)┌

そこにも無ければ導入すればいいだけの話

72:デフォルトの名無しさん
07/01/24 14:49:55
>>71
何度もすみません・・・orz

「その他のコントロール」が押せません
何か間違ってますか?

73:デフォルトの名無しさん
07/01/24 14:54:18
当然ツールボックスを表示した状態じゃないと押せないけど

74:デフォルトの名無しさん
07/01/24 15:00:18
なんか次は

RichTextBoxでの行間設定はどうやるんですか?

とか言い出しそうだな
先に言っておくが、そのくらい調べられない奴はVBA使うな

75:デフォルトの名無しさん
07/01/24 15:01:18
>>73
フォームをわざと挿入し、ツールボックスを表示したところ
無事その他のコントロールが触れるようになり、RichTextBoxコントロールの追加に成功しました。

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

76:デフォルトの名無しさん
07/01/24 15:01:58
>>74
行間設定もきっちりできました、ありがとうございました

77:デフォルトの名無しさん
07/01/25 20:44:26
すげー!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


今まで
「エクソーメァクーロ(英語は発音大事)なんか組めてもC++にゃかなわねえんだよ」
と思ってたわけだが、
マクロ組んでやると存外にも仕事場での受けがよい。


78:デフォルトの名無しさん
07/01/25 20:47:40
=(A1,A2)
とかするじゃない

こげなもんば、大したことなかったい。
が、見てみい。
「ほー!!!!!!!!!!!!!!!!!!!!!!!!!! 便利なもんさ!!!!!!!!!!!!!!!!!」

とか喜んでくれよる。
こらすごか。

79:デフォルトの名無しさん
07/01/26 06:41:08
数百個のチェックボックスを一列に配置したとき
for i= 〜to 〜文の中で「i」番目のチェックボックスの値を取得するのは
どうしたらいいんでしょうか?
例えば
for i = 1 to 300
if = 「i」番目のcheckbox= true then
cells(i,2).value=cells(i,2).value+1
end if
next i
というようにしたいんですが
ヘルプやらググルやら見てみたんですが
分かりませんでした


80:デフォルトの名無しさん
07/01/26 07:47:17
>>79
VBならコントロール配列使うところだが、VBAのコントロールではコントロール配列に出来ないので、
連番名(標準のCheckBox1, CheckBox2, …で良い)にしておいてControlsコレクションを使う
Controls("CheckBox" & i)
イベントも取りたい場合はクラスで疑似コントロール配列を実装する

つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね
予測するに、ListBoxを
ListBox.MultiSelect = fmMultiSelectMulti
ListBox.ListStyle = fmListStyleOption
と、「複数選択可 & チェックボックス有り」で使えば済む話なんじゃないの?
ListBox.Selected(i)でチェック状況取得できるし

81:デフォルトの名無しさん
07/01/26 23:26:09
テキストを読み込みたいんです。

123 123 123 123
123 123 123 133

みたいなのは Line #で読めたんですけど

123 123 132 123 123↑123 123 132 123 123↑・・・

こういうデータは読み込めません。↑は何なのか、わかりません。
改行されてないデータはどうしたら読み込めるんでしょう?

検索しようにも↑の記号の読み方がわかりません。お手上げです。

82:デフォルトの名無しさん
07/01/26 23:40:22
>>81
> ↑は何なのか、わかりません。
お前は解るはずだ。というか調べる手段があるはずだ。
それが何なのかはバイナリエディタで見れば一目瞭然だからな

逆にこっちがわかんねーっつうの。
文字としての↑(81 AA)だってならわかるが、Line #で読めないってことは 81 AA では無いわけで
特殊文字の表現記号ならエディタによって表示が異なるので、お手上げです。

83:デフォルトの名無しさん
07/01/26 23:45:40
↑は本当はもっと横につぶれたような形をしており

コピーしてペーストすると消えてしまう謎の文字です。

バイナリエディター・・・?

調べてみます。

84:79
07/01/27 11:00:26
>>80
さっそくの回答ありがとうございます
ですがcontrols("checkbox"&i)ではエラーになりました(subまたはfunctionが見つかりません)
もしかしてワークシート上に直接配置したcheckboxだとダメですか?

実際には900行×20列の表(900人分顧客データみたいなもの)
から今回対象になる人を範囲でえらび(100番目から200番目等)
さらにその中から対象から外したい人を最左列に配置したチェックボックス
で選択して残った対象者だけで別の表を作成するというようなプログラムを組みたかった
のですが、リストボックスの方法だとちと選びづらいです
>>つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね
 おっしゃる通りですね(´・ω・`)

素直に左端に1か0を入力することで判別する方がいいかもです
チェックボックス900個も置いたらめちゃくちゃ重くなったし
 
 




85:デフォルトの名無しさん
07/01/27 11:50:41
>>84
シート上ならOLEObjectsコレクションだ
objSheet.OLEObjects("CheckBox" & i).Object.Value

Shapesコレクションからも辿れるけどね
objSheet.Shapes("CheckBox" & i).OLEFormat.Object.Object.Value

> 素直に左端に1か0を入力することで判別する方がいいかもです
の方法でも、表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし

' A列をダブルクリックしたらチェック反転
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column <> 1 Then Exit Sub
  Target.Value = 1 - Target.Value
  Cancel = True
End Sub

' A列を含む範囲を右クリックしたら、その範囲全てのチェック状態を、選択範囲の一番上を基準に反転
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column <> 1 Then Exit Sub
  Target.Resize(, 1).Value = 1 - Target.Cells(1).Value
  Cancel = True
End Sub

などを使えば、マウスでチェック状態の切替が出来る
●の変わりに☐☑を使うことも可能
Range("A:A").NumberFormat = "[=0]""" & ChrW(9744) & """;[=1]""" & ChrW(9745) & """"

86:デフォルトの名無しさん
07/01/27 15:05:41
>>81
何らかの制御コードだろ。そのテキストを作った香具師に聞けば?
#なんとなく、改行コードの問題な希ガス。

87:デフォルトの名無しさん
07/01/27 16:18:50
VBAの命令の意味と
記述方法が書いてある辞典的なページってありませんか?



88:デフォルトの名無しさん
07/01/27 16:43:58
>>87
付属のVBAヘルプ

89:デフォルトの名無しさん
07/01/28 02:19:41
do Until xxxx <> vbnullstring
のときの
<>っていうのはどういういみですか

=とは違うの?

90:デフォルトの名無しさん
07/01/28 02:23:31
>>89


91:デフォルトの名無しさん
07/01/28 02:50:28
>>89
=とは逆の意味

92:デフォルトの名無しさん
07/01/28 09:27:17
excelのVBEを開こうとすると、VBEを開けるどころかexcelそのものが閉じてしまいます。
ウィルススキャンをしたところウィルスに感染はしていませんでした。

OS:Windows2000でexcelはexcel2000です。ちなみにwordのVBEは普通に開けます。

どうすれば正常にVBEが開けるようになれば良いのか、よろしくお願いします。

93:デフォルトの名無しさん
07/01/28 09:30:28

do Until xxxx <> vbnullstring

do While xxxx = vbnullstring

同じ意味と考えてもいいですか?


94:デフォルトの名無しさん
07/01/28 09:51:59
>>92
とりあえずブックを全て閉じた状態で試していないならブックを全て閉じてからVBEを立ち上げろ
同じく、アドインも全て外した状態で試してないなら一度全て外せ
それでダメならExcel(Office)の再インストール
上書きインストールではなく一度アンインストールしてから再インストールね
それでもダメならOS再インストール

まさかこの板に来る奴が再インストール出来ないとか面倒とかは言わないだろ

>>93
結果は同じだけど意味は違う

95:92
07/01/28 10:01:56
>>94
ご返信ありがとうございます!

一応Officeの再インストールは既に行いましたが、駄目でした。

ちなみにVBEのみの起動はどうすればよいのでしょうか?

やっぱりOSの再インストールしかないんでしょうかねぇ。。。

96:デフォルトの名無しさん
07/01/28 11:28:10
>>95
まぁがんばれ

97:デフォルトの名無しさん
07/01/28 14:31:36
EXCEL2000で
イベントプロージャー「テキストボックス名_Change」を作成したいのですが

図形作成→テキストボックスで
テキストボックスを作成したのですが

右クリックしてもコードの表示は出ません。(本には書いてあるのですが)
2000だと他の方法にしないといけないのですか


結果として
Private Sub TextBox1_Change()
をかくようにしたいのですが

98:デフォルトの名無しさん
07/01/28 14:36:44
>>97
今2000で試したけど、ちゃんと出たよ。

99:デフォルトの名無しさん
07/01/28 15:04:36
コントロールツールの方だと「プロパティ・コードの表示」がある
フォームコントロールの方だと「マクロの登録・コントロールの書式設定」がある

イベントが使えるのはコントロールツールの方
右クリックして「マクロの登録・コントロールの書式設定」が出るなら、間違った物使ってるだけ
「プロパティ・コードの表示」も「マクロの登録・コントロールの書式設定」も出ないならPCを窓から投(ry

100:デフォルトの名無しさん
07/01/28 15:05:38
できましたあああ。ありがとうございます!
ですが最終的にこっちの方法を採用させていただきました。
>表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし

> A列をダブルクリックしたらチェック反転
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>  If Target.Column <> 1 Then Exit Sub
>  Target.Value = 1 - Target.Value
>  Cancel = True
>End Sub

大変有益なご教示大感謝です

101:79
07/01/28 15:06:46
ミスッタ_| ̄|〇
上の100は>>85さんへのレスです

102:デフォルトの名無しさん
07/01/28 15:10:48
>>98
>>99
できました
フォームコントロールの方で書いてましt

103:102
07/01/28 15:11:19
ありがとうございました


104:デフォルトの名無しさん
07/01/28 18:28:12
URLリンク(vista.crap.jp)

105:83
07/01/28 19:38:04
矢印の正体はLFってやつでした。chr(10)とやらなんやら

なるほど・・・CR+LFじゃないとダメ・・・

まだ読み込めないけど、手がかりはつかめたんで頑張ってみます。

106:デフォルトの名無しさん
07/01/28 21:47:19
2007ってデフォルトフォーマットではマクロは保存できないんだな、店頭デモ機で試してみたんだが
VBAは後方互換で残ってるだけなの?

107:デフォルトの名無しさん
07/01/29 00:23:36
>>106
オプションで開発タブをリボンに表示するにチェックを入れると使えるよ

108:デフォルトの名無しさん
07/01/29 15:41:15
べき算って
2の2乗=4
3の3乗=27ってことですか?

109:デフォルトの名無しさん
07/01/29 16:32:45
冪乗とはいうけど冪算とは余り言わない希ガス。

110:デフォルトの名無しさん
07/01/29 21:56:03
今ExcelのマクロはほとんどVBAになっちゃってるけど、ブックにシートを追加するときに
Excel4.0のマクロシートが残ってることがわかる。やってみたいけど、誰かマスターする
方法おしえてくれないかな?解説書は売り切れてるしネットでも見当たらない。せっかく
残ってる機能だから眠らせておくのは惜しい。

111:デフォルトの名無しさん
07/01/29 22:29:47
2列のセルの文字列を一つにすることは可能?

セルA  セルB
桃     太郎    =桃太郎

112:デフォルトの名無しさん
07/01/29 22:54:34
>>111
可能だ。=CONCATENATE("桃","太郎")とすればいい。
セルA=桃、セルB=太郎なら、=CONCATENATE(セルA,セルB)でもいい。
セルが3つ以上でもやり方は同じだ。

113:デフォルトの名無しさん
07/01/30 00:00:45
>>112
それのどこがVBA?
このスレ的にはVBAで応えるべきなんじゃないのか?

114:デフォルトの名無しさん
07/01/30 00:51:21
Word/VBAの教えてスレはどこ?

115:デフォルトの名無しさん
07/01/30 00:53:40
ありがとうございます



116:デフォルトの名無しさん
07/01/30 16:21:57
すみません、ちょっと教えて下さい

マクロで、指定したセルにチェックボックスを作ったり、削除したりするには
どう書けば良いのでしょう?
VBA駆け出しで、全く分かりませんorz

117:デフォルトの名無しさん
07/01/30 18:12:08
>>116
マクロの記録を録ってみろ

その記録されたコードを見てわからなければお前にはまだ早い
精進して出直せってことで

118:デフォルトの名無しさん
07/01/30 22:59:22
>>116
表示→ツールバー→VISUAL BASIX
出ないことを祈る

119:デフォルトの名無しさん
07/01/30 23:05:19
>>111
>>112を転用で、
Application.WorksheetFunction.CONCATENATE(セルA,セルB)

VBA的に
セルA.value & セルB.value 又は セルA.value + セルB.value
&だと文字列+数値が可。+だと不可
CStr(数値) + 文字列だと文字列として結合

>116
作るのは>>117の言うとおり。
ぐぐるなら[OLEObject]もしくは[Shape]
削除はデザインモードじゃないときにやるとエクセルが壊れる。
デザインモードでなら.Deleteとか.Cutで消える。

中途半端だがかんべん。

120:デフォルトの名無しさん
07/01/30 23:55:15
はじめまして、早速一つお聞きしたいことがあります。
Function関数において最終的に表示される文字列を、
「その関数を使ったセルとは別のセル」に表示させたいのですが
どのような式を打ち込めばよいでしょう?

121:デフォルトの名無しさん
07/01/31 00:09:06
>>120
Sub abc()
Dim str As String
str = test
Worksheets("Sheet2").Range("A1").Value = str
End Sub

Function test() As String
test = "返り血"
End Function

こういうこと?

122:デフォルトの名無しさん
07/01/31 00:37:35
ありがとうございます。まさかこんな早くに答えていただけるとは思いませんでしたので驚きました。
よろしければもう一つだけお聞きしたいのですが、任意のセルをそのつど入力し
そのセルに表示させたい場合はどうしたらよいでしょう?

123:デフォルトの名無しさん
07/01/31 00:56:22
>>122
よくわからんのだけども、
任意のセル(入力するセル)の指定方法:
@クリック→任意のWorkSheetのマクロを開いて、マクロ書くスペースの左上にある
ちっちゃいコンボボックス的なやつの値を[WorkSheet]に設定、そのとなりのボックスの値を
[SelectionChange]に設定(ディフォルト)
したら、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
ができるから、ここに
Target.value = "返り血"
Targetは引数ね。ちなみにThisWorkBookのまくろで同じの作るとすべてのシートに適応される。
Aセルの値→
上と同じ感じで、左[WorkSheet]右[Change]に設定
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
ができるからここに、
If Target.Row = 1 And Target.Column = 1 Then
Range(Target.Value).Value = "返り血"
End If
A1のセルの値にB2とか入れるとそのセルに返り血って入る
弱点はセル以外の値を入れるとエラーになる。克服はできるはず、考えないけど。
Bユーザーフォーム→
ぐぐってちょ。

こんなもんで。

124:デフォルトの名無しさん
07/01/31 01:01:51
いただいたヒントのおかげで何とかなりそうです。
稚拙な説明にもかかわらず丁寧に答えてくださり本当にありがとうございます。


125:デフォルトの名無しさん
07/01/31 10:03:27
excelのvbaで松井証券へ自動ログインするプログラムを組んでいるのですが
下のプログラムの最後の objIE.document.frames("CT").document.All("kidouButton").Click で
たまにエラーが出ます。エラーの原因は何かわかりますでしょうか。
下記のプログラムは、松井証券へログインし、松井証券の会員ページから
ネットストックハイスピードというソフトウェアを起動するためのものです。

Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)
sub 時間待ち()  'ページの読込が終わるまで待機するための処理。
Do Until objIE.Busy = False
Sleep (200) 'CPU負荷軽減のために0.2秒間隔でIEオブジェクトをチェック。
Loop
End sub

(つづく)

126:デフォルトの名無しさん
07/01/31 10:05:56
(続き)

Sub netstock()
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "URLリンク(www.deal.matsui.co.jp)
call 時間待ち

'松井証券サイトのフォームへ、ワークシートに書かれたIDやパスなどのデータを流し込む
  objIE.document.forms("form").clientCD.Value = Worksheets("松井証券へ自動ログイン").Range("C2").Value
objIE.document.forms("form").passwd.Value = Worksheets("松井証券へ自動ログイン").Range("C3").Value
objIE.document.forms("form").easyTradeFlg(0).Checked = True
objIE.document.forms("form").submit
call 時間待ち

'松井証券ログイン後、会員ページからソフトウェアを起動するためのページへ移動
   Set objFDOC = objIE.document.frames("LM").document
For n = 0 To objFDOC.Links.Length - 1
If objFDOC.Links(n).outerText = "ネットストック・ハイスピード" Then
objFDOC.Links(n).Click
Exit For
End If
Next n

  call 時間待ち

'ボタンを押してネットストックハイスピードを起動する
objIE.document.frames("CT").document.All("kidouButton").Click

End Sub

127:デフォルトの名無しさん
07/01/31 14:47:31
セルAに入力した

Taka Toshi

という文字列を

taka_toshi

というように
小文字化と半角空白にアンダーバーを挿入して変換するようにしたいのですが
どうすればいいですか?


128:デフォルトの名無しさん
07/01/31 15:21:21
Replaceで半角スペースを_に置換して
LCaseで小文字化すればいいだけじゃん
このくらいならワークシート関数でも出来るし

129:デフォルトの名無しさん
07/02/01 22:29:54
>>125
理由はわからなそうだけども、
なんていうエラーがでてるのかはとても知りたいのでお願いします。

でも、もしかしたらもしかしたら、

Navigateで読み込み→
読み込みはじめるより先に Do Untilの条件へ行ってしまい
Sleepしない→
読み込まれる前にクリック

かも。
ループの前にSleepを入れてみてはいかかでしょう?

適当で申し訳ない。

130:デフォルトの名無しさん
07/02/01 22:30:48
さらにごめん。

Navigateで読み込みじゃなくて、
クリックで画面変更だ。

131:デフォルトの名無しさん
07/02/01 22:55:40
今日初めてExcelでマクロを作ろうとしてみました。

引数を2つ取る関数を作りたいのですが意味不明のエラーが出て
動きませんでした。

Public Sub Test()
Test2 (1, 2)
End Sub

Sub Test2(a As Integer, b As Integer)
MsgBox (a + b)
End Sub

引数を1つにすると動きます。
どこがおかしいのでしょうか?

132:デフォルトの名無しさん
07/02/01 23:27:48
>>131
VBAは自分で作った関数を使う際、
引数にかっこをつけてはいかんのです。
ので、
Test2 1, 2
で。

133:デフォルトの名無しさん
07/02/01 23:48:14
call

134:デフォルトの名無しさん
07/02/01 23:53:32
こんばんわ。
質問です。

1  ○○  0:00     
2  ○○  1:00
3  ○○  2:00
4  ○○  3:00
5  ○○  4:00
6  ○○  5:00



25 ○○  0:00


49 ○○  0:00

73 ○○  0:00

という、一時間ピッチのデーターがあります。一年分くらい。
それを、毎正時だけ欲しいのです。2〜24、26〜48の行を白紙の行に
したいのですが、この説明で分かってくれるかたいますか?
ご指導ください。




135:デフォルトの名無しさん
07/02/02 00:03:20
>>134
出力するシート名は?

136:デフォルトの名無しさん
07/02/02 00:10:24
> VBAは自分で作った関数を使う際、
> 引数にかっこをつけてはいかんのです。
ハズレ

自作関数の場合ではなく、基本的にSub、Functionプロシージャ(メソッド)を呼ぶ場合、
戻り値を取る場合とCallで呼ぶ場合以外は()を付けない。MsgBox関数の場合だとこんな感じで使う。
[1] MsgBox "test", vbOkOnly
[2] Call MsgBox("test", vbOkOnly)
[3] ret = MsgBox("test", vbOKCancel)

自作関数の場合でも戻り値を取る場合とCallで呼ぶ場合は()付けなきゃダメだし
自作関数じゃなくても、[1]のように使うときは()付けてはいかんのです。
ややこしいのは、引数一つの関数の場合。
[4] Inc hoge
[5] Inc (hoge)
Sub Inc(Value As Long)
  Value = Value + 1
End Sub
[4]の方だと変数hogeが+1され、[5]の方だと変化しない。
引数一つの関数をCallを省略し引数に()を付けて呼ぶと、引数は値渡しになる。
基本的に参照渡し値渡しは呼び出される側で指定するので、[5]は殆ど使われない。
意味も知らずに間違って使ってる奴は居そうだけどな。

137:デフォルトの名無しさん
07/02/02 00:13:03
>>135
潮位というシートで作業しています。

138:デフォルトの名無しさん
07/02/02 00:21:04
>>136
サンクス。職場では恥かかんよう気をつけるよー。

>>137
Option Explicit
Option Base 1

Sub testTwo()
Dim rng As Range
Dim outRng As Range
Dim data() As Variant
Dim cnt As Long
Dim outCnt As Long
Set rng = ActiveSheet.Range("B1")
cnt = 1
Do While rng.Row <= 10
If rng.Value = "0:00" Then
ReDim Preserve data(cnt)
data(cnt) = rng.Offset(0, -1).Value
cnt = cnt + 1
End If
Set rng = rng.Offset(1)
Loop
Set outRng = ActiveWorkbook.Worksheets("潮位").Range("D1")
For outCnt = 1 To cnt - 1
outRng.Value = data(outCnt)
Set outRng = outRng.Offset(1)
Next
End Sub

とりあえずD列に出してみた。
別シートに出力の際は潮位のところをそのシート名に変更すればよし、あとそのとなりをA1にするとA列にでる。

139:デフォルトの名無しさん
07/02/02 00:25:16
ごめん。

Do While rng.Row <= 10

Do While rng.Row <= 65500
あたりに変えといて。
ちなみに検索する行の最大数。

あと、なにも出力されないようなら、
if rng Value = "0:00" Then

0:00 の部分をセルに表示されてる値ではなくて、
その右上らへんにある本当の値に変えてみて。

140:デフォルトの名無しさん
07/02/02 00:29:36
っていうか、
VBAの勉強中だからついVBAで答えてしまったけれども・・・。

セルB1をクリック(選択)
データ→フィルタ→オートフィルタ
B1に三角がでるのでクリック
0:00を選択

orz...

141:デフォルトの名無しさん
07/02/02 00:37:36
>>140
ありがとうございます。
オートフィルにすると、行が詰まってしまうので、
行間は白紙のまま置いておきたいのですよ。

>0:00 の部分をセルに表示されてる値ではなくて、
その右上らへんにある本当の値に変えてみて。
VBAでは出力されないのですが、もう少し教えてもらえますか。

142:デフォルトの名無しさん
07/02/02 00:39:30
ここで無限ループ使った回答したら、素人にはブラクラ並の攻撃かもしれない

と、ふと思った

143:デフォルトの名無しさん
07/02/02 00:47:28
こっちのほうが安全じゃない?
my_Row= Range("a65536").End(xlUp).Row
for i = 1 to my_row
処理
next i

144:デフォルトの名無しさん
07/02/02 00:48:48
そのままなら、こっちか。
my_Row= Range("a65536").End(xlUp).Row
Do While rng.Row <= my_row

145:デフォルトの名無しさん
07/02/02 00:52:51
>>141
Option Explicit
Option Base 1

Sub testTwo()
'変数定義
Dim row As Long
row = 1
'正午のデータだけ取得
Do While row < 65500
If row Mod 24 <> 1 Then
ActiveSheet.Range(Cells(row, 1), Cells(row, 2)).ClearContents
End If
row = row + 1
Loop
End Sub

正午以外を消して空白を残す。
24行ごとに値があること前提だけども…。

手抜きでスマソ、そろそろ寝ようかと…。

146:デフォルトの名無しさん
07/02/02 00:59:56
>141
追記。
一瞬止まるけども、処理が遅いだけなので。
>>143)方式で、
Do While row < 65500

Dim myRow as Long
myRow = Range("a65536").End(xlUp).Row
Do While row < myRow

にすると早くなりまする。

>>143
>>145
まったくその通りですな。
まだまだ良いやり方のテンプレみたいなのがぱっと浮かんでこないのよなぁ…。

>142
自分のテストでは無限ループしたいほうだいだけどね。


すみません放置します。
おやすみなさい。

147:デフォルトの名無しさん
07/02/02 01:03:55
どうもでした。ペコリ。

148:デフォルトの名無しさん
07/02/02 01:08:35
成功しました。重ねてペコリ。
これで寝れそうです。

149:125-126
07/02/02 07:20:11
>>129-130
レスどうもです。
出ているエラーの件は、たまにしかエラーが出ないので
エラーの内容を良く覚えてないのですが
「サポートされてない」みたいなエラーだったと思います。

do until構文を使う前にもsleepしてみて
エラーが出るかどうか、しばらく様子を見てみます。

150:デフォルトの名無しさん
07/02/03 01:28:07
ちょっと暇だったのでVisualBasicのヘルプ全部印刷してみた(両面)

ヘルプ最高だな
高い金出してリファレンス買うぐらいならヘルプ印刷しといたほうが幸せだと気付いた
つうか手元のリファレンス見たらヘルプ丸写しがあって萎えた

151:デフォルトの名無しさん
07/02/03 22:06:07
そうか〜?
現実問題、リファレンスで一番重要なのは索引なのだけども
オブジェクト名やメソッド名とかは印刷したものをアルファベット順に並べればいいとしても・・・
その他は・・・

152:デフォルトの名無しさん
07/02/03 23:11:21
すみません。Vista/Excel2007で
Application.Speech.Speak "日本語"
をやると、英語なら何の設定もせずに読み上げるんですが、
日本語は読み上げません。
2003では設定すれば「ツール」→「音声」→「[読み上げ]ツールバー」ででたツールバーも
表示させる方法もわからないのですが、
どなたか、お教えいだけないでしょうか。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5375日前に更新/123 KB
担当:undef