トップページ⇒tech
1001コメント351KB

VBAについて Ver.3.0

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
前スレ
http://pc2.2ch.net/test/read.cgi/tech/1055153917/l50
0002鳥取砂丘 ◆Dream/3P/. NGNG
  よゆうで2げっと
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
             。 。
             || ||  /⌒ ヽ.
             / ⌒ヽ( /⌒ヾ )
            ((゚Д゚,,))ゝヽのノノ
           ⊂⊂ _____つ   ))    ))
0003ミナツキ サヤ ◆SAYAC2HJWE NGNG
3
0004デフォルトの名無しさんNGNG
4

>>3
さっきゅんって神出鬼没なんだね。
0005デフォルトの名無しさんNGNG
通学時間をA2から読み取り
30未満「近い」 30以上60未満なら「普通」
60以上90未満なら「遠い」 90以上なら「超遠い」 と B2に表示
A1に通学時間 B1に判定 を表示 IF文を用いる
と、いう問題を学校で出され、模範解答ももらったのですが

Sub 通学時間()
jikan = Cells(1, 2)
If jikan < 30 Then
hantei = "近い"
Else
If jikan < 60 Then
hantei = "普通"
Eles
If jikan < 90 Then
hantei = "遠い"
Eles
hantei = "超遠い"
End If
End If
End If
Cells(2, 2) = hantei
End Sub

で作るとどんな数値を入れても判定が「近い」しかでないのです…
どなたか、きちんと動くようにアドバイスいただけませんか?
お願いしますっ
0006デフォルトの名無しさんNGNG
>>5
×:jikan = Cells(1, 2)
○:jikan = Cells(2, 1)
×:Eles(2か所)
○:Else
0007デフォルトの名無しさんNGNG
>>5
最近では、学校でVBAするの?
学校って、どんな学校?
単位もらえるの?
0008デフォルトの名無しさんNGNG
>>6
ありがとうございます。
おかげで動くようになりました。

>>7
はい、学校でやります。普通の学校で、単位ももらえます。

迷惑ついでにもう1つ詰まった問題をアドバイスいただけないでしょうか…?

10個の整数をA1〜A10から読み取り、それらのうちの任意の
i番目とj番目(iはA12、jはA13から読み取る)の値を交換し、変更後の10個の整数をB1〜B10
に表示する。ただし、配列を使うこと。

Sub 交換()
Dim a(10)
For k = 1 To 10
a(k) = Cells(k, 1)
Next k
i = Cells(12, 1)
j = Cells(13, 1)
x = a(i)
a(i) = a(j)
a(j) = x
For k = 1 To 10
Cells(k, 2) = a(k)
Next k
End Sub
0009デフォルトの名無しさんNGNG
>>8
ちゃんと動いたよ。
Rangeプロパティは知らない?
i = Cells(12, 1)
より
i =range("A12")
の方が問題文に近くてわかりやすいと思う。
0010やんNGNG
A12とA13を入れ替えてどうするんだよ!

Sub 交換()
Dim a(10)
For k = 1 To 10
a(k) = Cells(k, 1)
Next k
i = Cells(12, 1)
j = Cells(13, 1)

x = a(i)
a(i) = a(j)
a(j) = x

For k = 1 To 10
Cells(k, 2) = a(k)
Next k

End Sub

これでいかがですか?

つーか通学時間のやつ、無駄にIfネストで使わずにElse If使ったほうがいいよ。

End If
End If
End If
なんてやめれ。
0011やんNGNG
あ、すいません。よく見たら同じ文になってた。
失敬。
0012デフォルトの名無しさんNGNG
>>10
>A12とA13を入れ替えてどうするんだよ!

(´д)ヒソ(´д`)ヒソ(д`)
0013デフォルトの名無しさんNGNG
>>8
普通の学校って、大学?専門学校?高校?
0014デフォルトの名無しさんNGNG
セルの設定
A1:"=A2+A3"
A2:"3"
A3:"2"

とします。
「up」と「down」のボタンを作り、

「up」ボタンを押すとA1の値を10倍
「down」ボタンを押すとA1の値を1/10

となるようなマクロを教えていただけないでしょうか?
0015デフォルトの名無しさんNGNG
>>14
収束条件が不足しているためマクロとするのは不可能です。
条件をはっきりさせてゴールシークを利用しましょう。
0016デフォルトの名無しさんNGNG
>>14
何がしたいのか分からんが、
CommandButton1が up
CommandButton2が down とする。

Private Sub CommandButton1_Click()
Range("A1") = Range("A1") * 10
End Sub
Private Sub CommandButton2_Click()
Range("A1") = Range("A1") / 10
End Sub
0017デフォルトの名無しさんNGNG
>>16
こんなときのSpinButtonやろ。
CommandButton使うより。

それだと、A2、A3を変えても、反映しませんね。
>>14が何をしたいのかわからないけど、設計自体変えたほうが良さげ。
001816NGNG
これでは?

Public Val As Double
Private Sub SpinButton1_SpinUp()
Val = Val * 10
Range("A1") = Val
End Sub
Private Sub SpinButton1_SpinDown()
Val = Val / 10
Range("A1") = Val
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" Or Target.Address = "$A$3" Then
Val = Range("A2") + Range("A3")
Range("A1") = Val
End If
End Sub
001917NGNG
良さげですね。
ただ、Val←関数名と同じ変数名は避けたほうがいいかもね。
002018NGNG
>>19
そうですね。
0021デフォルトの名無しさんNGNG
age
0022デフォルトの名無しさんNGNG
EXCEL でフォームやVBAを使用し4MBにものぼるプログラムを作成しています。
あまりに大きくなりすぎたので、EXCELブックを最適化したいと思っています。
フォームやモジュールを全てエクスポートし、
解放したあとインポートし直す事によって
ある程度サイズ縮小が出来るというところまで分かったのですが、
毎回するのは大変なので、
それを自動で行ってくれるマクロとかプログラムを探しています。

誰か作った方はいませんか?
もしいましたら、そのPGを分けていただけませんか?

もし他にも最適化する方法をご存じの方はご教授ください。
0023デフォルトの名無しさんNGNG
VBEのVBComponentsをまわしてInport/Export
0024uyaNGNG
表を読み取っていろんな関数で内挿までできるマクロって誰か教えてくださいませんか?
0025デフォルトの名無しさんNGNG
初歩的質問ですいませんVBAのマクロで
強制的にあるセルにフォーカスをセットさせたいのですが
どうすればよいでしょう?
0026やんNGNG
>>24
それだけじゃわからん。

>>25
自動記録すれば?
0027デフォルトの名無しさんNGNG
質問です。
特定のセルの内容が、数式なのか、それとも直接値なのか、
見分ける方法はないでしょうか?

たくさんのシートを持つブックの中に、所々に合計シートが入っていて、
他の複数のシートの合計値を保持しています。
その合計シートを見分けたいのです。

合計シートと単体のシートのレイアウトは全く同じですが、
特定のセルのデータが、合計シートは数式、単体のシートは直接値なのです。

どうかよろしくお願いいたします。
0028デフォルトの名無しさんNGNG
>>27
Left(Range("A1").Formula, 1) = "="
0029デフォルトの名無しさんNGNG
VBAでコントロールコードを表示(?)させるには?

debug.print でイミディエイトウインドウ内で上下左右にカーソルを移動させたい。
003027NGNG
>>28
うまくいきました!大変ありがとうございます!
0031デフォルトの名無しさんNGNG
Excelのマクロの記録でコンボボックス貼り付ける処理を記録すると下のようなコードができるんですけど、この処理以降でステップ実行が利かなくなります。

ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=255, Top:=57, Width:=161.25, Height:= _
44.25).Select

ステップ実行していくと↑の処理以降で「中断モードでは入力できません。」ってメッセージがでてデバックも何もできない;;
だれか解決方法知ってませんか?
0032デフォルトの名無しさんNGNG
ExcelのVBAなんですけど、セルをアクティブにするとき
activateとselectとの使い分けってみなさんどうしてますか?
0033デフォルトの名無しさんNGNG
すいません。うpしておきました。
セルD4に「不明」という文字が挿入された場合の処理が解らないんですが・・
 ↓これをどこに入れればいいの?
If IsDate(Range("D3").Value) Then
If IsDate(Range("D4").Value) Then
If IsDate("不明") Then
If IsDate("不明") = False Then
MsgBox "日付データではありません"


ttp://ptba2.hp.infoseek.co.jp/cgi-bin/up/bbs.cgi
[No,2395] だめぽ
教えて君 [2004/3/11(木) 午前4:31:37]
どうやったらいいの?
0034デフォルトの名無しさんNGNG
>>33
(1) [ALT] + +[F11] で VBエディタを起動。
(2) プロジェクトの Sheet1 をダブルクリック
(3) 下記コードをコピペ。
(4) D列の値を変更すると、日付かどうかチェック。
  日付値と"不明" と "" 以外は警告して入力値を消去する。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column <> 4 Then
Exit Sub
End If
If IsDate(Target.Value) = False Then
If Target.Value <> "不明" And Target.Value <> "" Then
MsgBox ("日付データではありません")
Target.Value = ""
End If
End If
End Sub
003533NGNG
>>34
出来ました。ありがとう御座います
0036デフォルトの名無しさんNGNG
>>31
前スレ914-
0037デフォルトの名無しさんNGNG
VBAでPerlのsort関数のように
配列の中身でソートする関数はありませんか?
0038デフォルトの名無しさんNGNG
Accessでオートナンバー型をやめて
Dmaxを使った自動採番にしようと思っているのですが、
分からないので質問させてもらいました。

挿入前処理で
H16-0001といった風に番号をつけたいのですが、
ハイフンを入れることもできるのでしょうか?
できるとするなら、コードを教えてください。



それと以前、自動採番に挑戦したとき、
テーブルのデータが何もなしの状態で
Dmax+1を使用したら、番号がつきませんでした。

テーブルデータがない場合の対策も教えて頂きたいです。
よろしくお願いします。
0039デフォルトの名無しさんNGNG
マルチ、ウザッ
0040デフォルトの名無しさんNGNG
Excel2002にてコマンドボタンのVBAを記述しました。

----
Private Sub DBTrigger_236_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ActiveSheet.Cells(4, 54).Value = "1"
'
End Sub
Private Sub DBTrigger_236_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ActiveSheet.Cells(4, 54).Value = "0"
End Sub
----

このような記述をボタンの分だけ作成しました。
ボタンは1シートに10個ほど作成してあります。

このとき、いづれかのボタンを押す度に全てのコマンドボタンの表示がちらつく
のですが、何か対策はありますか?
0041デフォルトの名無しさんNGNG
Perlのスレで質問したのですが、VBAに詳しい人に聞いたほうが良いと言われたので
同じ質問で申し訳ないのですが、よろしくお願いします。

perlで使用するWIN32::OLEについて教えて下さい。
PowerPointでグラフを作っているのですが、
グラフの軸の部分の目盛間隔の設定がうまくいきません。

$Chart->Axes(xlValue->{MajorUnitIsAuto} = FALSE;
$Chart->Axes(xlValue->{MajorUnitScale} = 0;
$Chart->Axes(xlValue->{MajorUnit} = 10;

と指定すると、
目盛間隔の自動は外れ、単位は「日」になるのですが、
肝心の数値部分が10になりません。
10日単位の目盛にするにはどうすればいいのでしょうか?
宜しくお願いします。
0042デフォルトの名無しさんNGNG
>>41
Perl経由じゃなく、VBAだけで試してみてもダメ?
0043デフォルトの名無しさんNGNG
>40
マクロ処理中は画面の更新停止するようにしてみたら?
004441NGNG
>>42
すみません、VBA自体使うのが初めてで、VBとかもほとんどやった事がなくて
ソフトも入っていないんですが、
VBがインストールされていなくてもVBAだけっていうのは出来るんですか?
0045デフォルトの名無しさんNGNG
PowerPointがインストールされているならVBAもはいってる
004633NGNG
>>34
そっちの域には達してないようです。
これで解決できました。
ごめんなさい。
Sub s_1()
If IsDate(Range("D4").Value) Then
End If
If IsDate(Range("D4").Value) Then
End If
If IsDate("不明") Then
End If
If IsDate("不明") = False Then
MsgBox "日付データではありません"

End If
End Sub

0047デフォルトの名無しさんNGNG
VBAのマクロのパスワードを解除するマクロカッターなるものが
あるそうですが、どういう風にしてパスワードを解除してるのか
知ってる人がいたら教えて。

また、本当に解除できるのかも教えて。
0048デフォルトの名無しさんNGNG
範囲選択の方法で
Range("A1,B2,C3").Select
とすると3つのセルが選択できますけど
これをR1C1方式で記述するにはどうすればよろしいでしょうか?
0049デフォルトの名無しさんNGNG
Excel2000を使用して、以下の事を実現しようとしているのですが、
教えてください。

・セルの移動を行う
・セル移動のイベントを拾う
・移動前のセルのアドレス(A1とか)を拾う
・移動前のセルの情報を取得して、該当セルであれば、操作を行う。
です。

セルが移動したときのイベントの拾い方が分からないのです。
知っている方いらっしゃいましたら、ご教授お願い致します。
0050デフォルトの名無しさんNGNG
UNIXのコマンド郡をVBScriptでリプレースするプロジェクトとかどっかにないのかね。
0051デフォルトの名無しさんNGNG
>>49
Worksheet_SelectionChange(ByVal Target As Excel.Range)
0052デフォルトの名無しさんNGNG
>>48
こういうこと?
Application.Union(Cells(1, 1), Cells(2, 2), Cells(3, 3)).Select
Rangeの引数はA1形式限定なので、Cells(行,列)をUnionでくっつけてます。
005349NGNG
自己解決しました
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
で、セルが修正されたイベントを拾うことが出来ました。
0054デフォルトの名無しさん NGNG
シートにコンボボックスのあるブックを開いて閉じる時に
ページ違反で強制終了されます。
解決法はないでしょうか?
0055デフォルトの名無しさんNGNG
今、友人が作ったVBA(EXCEL)をもらって勉強をしています。
早速実行して、実感してみようと思ったんですが
Dim aaa As OraSession ← の所で止まって
コンパイルエラーと出て内容が
プロジェクトまたはライブラリが見つかりません
と表示されました。
これは参照設定が足りないんでしょうか?
もし追加をするとしたら何を追加したらいいんでしょうか?
宜しくお願いします。


0056デフォルトの名無しさんNGNG
ある列の値が入力されている最後の行まで一つずつセルを進めながら
処理をするというループを考えているのですが、分からないので
力を貸してください。
その列の中には空白のセルもいくつかあるので
Do While Activecell.Value <> "" 〜 Loop
というのはできません。よろしくお願いします。

Range("A1").Select

Do While ???
'ここに何らかの処理
Activecell.Offset(1,0).Select
Loop
0057デフォルトの名無しさんNGNG
>>55
参照設定で参照不可になってるヤツがないですか?

>>56
Range("A65536").End(xlUp)でとれるRangeオブジェクトがA列の一番下のセル
0058デフォルトの名無しさんNGNG
>>55
Oracleのクライアント入ってなきゃ動くわけねえべ。
その友人はどういうつもりでそのファイルを渡したのか。
0059デフォルトの名無しさんNGNG
>>57
ありがとうございます。
助かりました。
0060デフォルトの名無しさんNGNG
shellで起動をかけたアプリケーションの終了を待って
続きを実行する方法を教えてください。
0061デフォルトの名無しさんNGNG
>>60
改行が多いというメッセージが出たんで下の所にうpした。
参考になるかどうかはしらんけど。

http://www.42ch.net/
1079617015.lzh
006260NGNG
>>61
問題解決できました。
とても参考になりました、ありがとうございます。

006361NGNG
追加

※参考 Test.batを実行後DOS窓を閉じる
  dim tmp
  tmp=Shell("Command.Com /C C:\test.bat",6)
0064会社員NGNG
仕事で、申込書(excel)に基づいて契約書(word、約15ページ)を作っています。
申込書から転記するだけの項目が17箇所もあり、いずれの項目も長文の英文なので、
できれば申込書にマクロを組みこんで、契約書を自動作成したいと思っています。
が、
�@エクセルのマクロからワードを立ち上げられない
�Aコピペ先(=契約書の該当部分)がうまく指定できない
という問題にブチあたっています。

申込書はwordファイルに変えてもいいのですが、
そうすると、申込書のコピペ元もうまく指定できないような気がします。

また、場所をうまく指定するにはフォームを使えばいいような気がするのですが、
フォームの入っている文書はうまくマクロが機能してくれません。

いかにも素人の質問で恐縮ですが、いい解決策はあるでしょうか?
よろしくご教示ください。
0065デフォルトの名無しさんNGNG
>64
ExcelからWordへ転記する箇所は、1対1でしょうか?
そうであれば、ワードの「差し込み印刷」を使えば良いでしょう。

>また、場所をうまく指定するにはフォームを使えばいいような気がするのですが、
>フォームの入っている文書はうまくマクロが機能してくれません。
↑この部分だけ、意味がまったくわかりませんでした。
主に”フォーム”が何を指しているのかわかりません。
(実際に)何をどうしたら、どのようなマクロがどう動かないのでしょう?
0066会社員NGNG
ありがとうございます。というか不明瞭ですみません。

>ExcelからWordへ転記する箇所は、1対1でしょうか?
>そうであれば、ワードの「差し込み印刷」を使えば良いでしょう。
同じ内容を2度繰り返す項目、3度繰り返す項目があります。
また、できた契約書はwordファイルで海外に送付し、
内容について顧客と交渉を行うため、
契約書が1つずつファイルで作成される必要があります。

>↑この部分だけ、意味がまったくわかりませんでした。
>主に”フォーム”が何を指しているのかわかりません。
>(実際に)何をどうしたら、どのようなマクロがどう動かないのでしょう?
すみません。×フォーム ○フィールド です。
私が試したのは、申込書をwordファイルで作り、
契約書、申込書それぞれのコピペする部分にだけ入力可能なように
フィールドを作り、保護をかけた上でマクロを記録しました。
全然動きませんでした。

難しいことをやろうとしているのでしょうか?
0067デフォルトの名無しさんNGNG
変数の代入がうまく出来ません。

D3:test.bat など

D3はコンボボックスになっていて
いろいろ選択出来るように指定してあります。

以下のような感じで出来そうだと思っていますが
変数がうまく代入できません。

Set apr = Range("D3")  
Shell("c:\tools\bat\"ここからtest.batを動かしたいのでaprを代入したい)

どうやったらうまく動くのでしょうか?
0068デフォルトの名無しさんNGNG
>>64
1契約書をテキストファイルで保存
2Excelからそのテキストファイルを開く
3挿入したい位置まで読み込む
4挿入する
以下、3と4を繰り返し、テキストファイルで再保存する。
ワードを立ち上げ再保存したテキストファイルを読み込む
あとは、マクロの自動記録で書式を設定する
こんな流れで以下に作ってみました。
0069デフォルトの名無しさんNGNG
Sub test()
Dim strTxt2()
'契約書をtest.txtでテキスト保存します
Open "c:\test.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, strTxt
ReDim Preserve strTxt2(i)
'1行ずつ配列に入れます
strTxt2(i) = strTxt
i = i + 1
Loop
Close #1
i = 0
0070デフォルトの名無しさんNGNG
つづき
'申込書が含まれるファイルを作成します
Open "c:\test2.txt" For Output As #1
'配列の数だけ繰り返します
For i = LBound(strTxt2) To UBound(strTxt2)
Select Case i + 1
'申込書データを挿入したい位置です
Case 1
Print #1, strTxt2(i) & Sheets(1).Cells(1, 1).Value
Case 3
Print #1, strTxt2(i) & Sheets(1).Cells(3, 1).Value
Case 5
Print #1, strTxt2(i) & Sheets(1).Cells(5, 1).Value
Case Else
Print #1, strTxt2(i)
End Select
Next
Close #1
End Sub
0071デフォルトの名無しさんNGNG
>>64
契約書.Docに[%01]という形式の置き換え先指定文字列が入っているとして

Sub ReplaceExcel2Word()
 Dim wda As Word.Application
 Dim wdd As Word.document
 Dim idx As Long
'ワード起動
 Set wda = GetObject(, "Word.Application")
 wda.Visible = True
’ファイル起動
 Set wdd = wda.Documents.Open("契約書.Doc")
 wdd.Activate

'検索して置き換え
 With wda.Selection.Find
  For idx = 1 To 10
    .Text = "[%" & Format(idx, "00]")
    .Replacement.Text = Cells(idx, 1).Value
    .Forward = True
    .Execute Replace:=wdReplaceAll
  Next idx
 End With

End Sub
0072デフォルトの名無しさんNGNG
>>67
Shell("c:tools\bat\" & apr.Value)
0073デフォルトの名無しさんNGNG
あの、Filterプロパティって、複合条件の結果を代入することはできないんですか?
ひとつならいけるのに下のようにandでやると型が一致しませんと言われます。

Me.Filter = "[FEE] >=" & frmF And "[FEE] <=" & tF
0074デフォルトの名無しさんNGNG
>>73
どのクラスのプロパティを指しているのかを書け。

その例では文字列同士が同じだったらTRUEを代入することになる

Me.Filter="[FEE]>=" & frmF & " AND " & "[FEE]<=" & tf
0075会社員NGNG
>>68,71
ありがとうございます。
会社で試してみます。
007667NGNG
>>72
ありがとうございます
処理できました
0077デフォルトの名無しさんNGNG
EXCELでSAVEASを使ってシートをセーブすると、Bookの名前とファイルタイプが
シートをセーブした名前に変わります。
変わらないようにしたいのですが、何か方法はないですか?
今はBoockの名前をBookのSaveasでもとに戻していますが、2重にセーブになります。
007877NGNG
あ、EXCEL2000です。
0079デフォルトの名無しさんNGNG
>>77
SaveCopyAs
0080デフォルトの名無しさんNGNG
>79
ありがとう。気がつきませんでした。
0081デフォルトの名無しさんNGNG
みんなクラスモジュールってどのくらい使ってますか?
俺はUSERFORM2の設定情報をINIファイルとやり取りする
インターフェイスというか、データの仲介者というか
そんな感じでしか使ってない。
008277NGNG
>79
だめです。SheetにはSaveCopyAsもCopySaveAsもありません。
あー、めちゃ喜んだのに。残念。
0083デフォルトの名無しさんNGNG
テンボラリなbookを作ってsheetをコピーしてから保存すればいいんでは?
008477NGNG
>83
あ、そうですね。それはいいアイデアですね。やってみます。
VBAは初めてなんですが、難しいですねー。

FrameにCommandボタン3つ並んだだけの簡単なOCXを作ってEXCELの
シートに貼り付けたのですが、2回クリックしないと、EVENTが発生しないんです。
VBでテストすると問題ないのですが、Sheetに貼り付けたときは、
一回目のクリックではフォーカスが移るだけで、EVENTが出ないんですよ。
008577NGNG
>83 うまくいきました。ありがとう。
ちなみに
sub CommandButton1_Click()
 Workbooks.add 1
dim w as workbook
set W = Workbook(Workbooks.Count)
Me.copy W.worksheets(1)
W.Worksheets(1).SaveAs "aaa.txt", FileFormat:= xlTextPrinter
W.close savechanges := True
Set W= nothing
end sub
ふう。
0086デフォルトの名無しさんNGNG
>>81は無視かyo
冷てーーー(T_T)
008777NGNG
>86
 冷たいと言うより答えようが、、、、
 77も未熟ものだから、答えても参考にならんかも。
  VBAは使ってみて、色色難しいなと思う。
 クラスモジュールやOCXはバグに悩まされると思う。今回
 簡単に使っただけで、相当悩んだ。VBでは全然問題ないのに
 Sheet上で使うと問題がでる。動作はするけど、デバッグで
 ブレークすると、メモリーから飛んでしまう現象もあった。
  そこで、自分なりに結論をだした。
   VBAはグローバル「が」スタンダード。
 つまりグローバルガスタンダードプログラミングがもっともいい。
 この方法は関数などはすべてmoduleごとに分類して、modXXX.bas
 modYYY.basというように、モジュールを山のように並べてプログラミング
 する方法。
  これは構造が簡単なので、言語側のバグの影響がもっとも少ない。
 逆にユーザー側のバグは最も多くなるが、そこは注意力と粘りで解決する。
 
  VBAグローバルガスタンダードプログラミングをためしてみてください。
 VBAに限らず、バグの多い言語では非常に威力を発揮するはずです。
  あまり高度なことを望むと腹が立つだけ損です。
  何事もあきらめが肝心。あきらめたとたんにEXCELがとても便利な
 すばらしいプログラミング環境であることがわかりました。
0088デフォルトの名無しさんNGNG
初歩的な質問で申し訳ないのですが、

〜〜〜〜
ActiveCell.FormulaR1C1 = "=b4"
〜〜〜〜
と入れると、セルの中身が='b4'となってしまいます。
これを避ける方法はあるのでしょうか。
0089デフォルトの名無しさんNGNG
まぁ、ワークシートやユーザーフォームもクラスなわけだし
つうか、カプセル化すると必然的にクラスモジュールを使うようになる

グローバル変数をそこらじゅうに書き散らしてあるプログラムなんぞ読みたくない

とはいえVBAは列挙型を公開できないのでつらいものがあるのは事実
0090デフォルトの名無しさんNGNG
>>88
ActiveCell.Formula = "=B4"
009188NGNG
>>90
ありがとうございます。
0092デフォルトの名無しさんNGNG
VBA歴1日の超初心者ですが、ヤフーへの自動ログインマクロを
作って居たところ、input name=".save" となっていて、
"objIE.document.all..save.Click"と、
記述すると文法違反になってしまいます。

良い知恵はございませんでしょうか?
0093デフォルトの名無しさん NGNG
>>81

無視されたままでは気の毒なのであまり参考にはならないかもしれないけど
私が行ったことをお知らせします。

某金融系の仕事をしているのですが、ユーザーはEXCELで数値計算や
シミュレーションを行っています。
私が作ったのは、線形計算に用いられる行列などのクラス、
それから確率過程モデリングしたクラスなどです。

行列クラスなどは、継承が使えないで様々な行列クラスに対応した
演算関数と簡易版のどのクラスにも使えるお手軽演算関数の2本立てです。
誰もがメンテナンスを嫌がるのでちょっと後悔してます。

確率過程クラスは、そのカテゴリーのオブジェクト同士の演算はないので
そのような苦労はないのですが、乱数の生成を数種類のものを用意しなければ
ならないのですが、これは実行時に一度だけですむ事から、実行時の型参照
を行っていましたが、結局はj、各確率モデルごとに異なる乱数ルーチンバージョンの
クラスを作ってしまいました。

いずれも本格的な運用が始まるとDLL化して配布しています。
0094デフォルトの名無しさんNGNG
復活&無くなったログ貼り

94 名前:デフォルトの名無しさん 投稿日:2004/03/25(木) 15:12
>>89
>VBAは列挙型を公開できないので・・・
そうなの?
自分が違ってるかも知らないが、適用範囲のことですよね?
それとも外部にってこと?


95 名前:デフォルトの名無しさん 投稿日:2004/03/25(木) 22:00
質問です
複合化のソフトを使ってPAR→VBAという具合で変換したのに無効になってしまいます
なぜなんでしょうか?
詳しく教えてください
0095デフォルトの名無しさんNGNG
セルの書式設定で 数値、小数点以下2桁にしてますが、
0を入力するとスペースになって困っています。
そこでセルの書式をユーザー設定にして#0.00としてみましたがこれでも
やはりスペースになります。
 このシートはシートAですが、おなじような別のシートBでやると
正常に0.00と表示します。
 セルの書式に何かが設定されているようなのです。ちなみに、色々な
セルで試して見ましたが、そのシート全体がどうもおなじ反応をします。
シート全体で設定する何かがあるのでしょうか?どなたか教えてください。
0096デフォルトの名無しさんNGNG
 VBAのコンパイルってなんなの?
*.EXEとかができるのでしょうか? 
EXCELを立ち上げたときに初めてコンパイルエラーというのがでて、VBAで
コンパイルしてみたら、バグがいっぱいあって、新発見でした。
0097デフォルトの名無しさんNGNG
>>95
なぜここに質問してくるかがわからんが。。。
オプションでゼロ値を表示しない設定になっとるから
とりあえずそのシートアクティブにしてコレでも実行しとけ
ActiveWindow.DisplayZeros = True

>>96
できるワケがない
コンパイルとはマシン語に翻訳することで EXE を作ることじゃない
VBA はインタプリタ言語で実行時にソースが順次コンパイルされて動作する
009896NGNG
>97
  じゃーVBAにあるコンパイルってのは、なんなの?
 したったらずのMSの名称バグってことね。では正確には
 「マクロの文法チェック」でしょうか?

 
009995NGNG

> なぜここに質問してくるかがわからんが。。。
 あなたしか解決できない難問かもしれないし、、、、。

> オプションでゼロ値を表示しない設定になっとるから

EXCEL2000ですが、TOOL>オプションには「ゼロ値表示しない」なんてのは
ないような、、、、。
EXCELのバグだとおもうのだが。


> とりあえずそのシートアクティブにしてコレでも実行しとけ
> ActiveWindow.DisplayZeros = True

  すごーい!!! いけました。
 ありがとう。

010095NGNG
失礼しました。ウインドウオプションにゼロ値というのがありました。

 これは日本語のエラーで、正確には
 「セル値がゼロのときゼロを表示する。」です。
 しかもウインドウオプションっていう名称もおかしいですね。
0101デフォルトの名無しさんNGNG
>>98
そゆことでいいんじゃない
0102デフォルトの名無しさんNGNG
最近はJavaや.NETの用に中間コードに変換することもコンパイルって言うよ。
インタプリタはソースコードを実行しながら機械語に変換するわけで、
ソースコードを中間コードに変換する作業はインタプリタとはちょっと違う。
中間コードを機械語に翻訳する作業の方がまだインタプリタと言える。
0103デフォルトの名無しさんNGNG
>>96
できるツールがあるらしいぞ
http://homepage2.nifty.com/kmado/ksoft.htm ←ここのKstartとかいう奴

シェアウェアらしいし、俺もちゃんと読んでないから実際にはどうか知らんけど
0104103NGNG
いやゴメン
タダの見せ掛けだけみたい
起動ランチャみたいな感じの
0105デフォルトの名無しさんNGNG
Excel2k(VB6?)でCreateThreadってやっぱし落ちる?
0106デフォルトの名無しさんNGNG
ACCESSで、フォームにパソコン内のファイル選択用の参照ボタンを
つけたいんですけど、簡単に作る方法ってあるんでしょうか?
まさかプログラムで1件1件コンボボックスに追加して作るってわけじゃないですよね?
0107デフォルトの名無しさんNGNG
FileDialog
0108106NGNG
>>107
即レスありがとうございます!
ぐぐったらそれらしいのがヒットしたので、さっそくやってみます。
あ〜これで便利になりそう〜どうもでした!
0109デフォルトの名無しさんNGNG
VBAファイルって一度でも実行すると他のPCへのコピー時にエラーになる
とかって良くあることなの?
0110デフォルトの名無しさんNGNG
Runメソッド使って別ブックのマクロ実行する処理作ってるんだが
別ブックで実行するマクロ処理を
Sub RunTest(ID as string)
処理開始
    ・
    ・
    ・
処理終了
Thisworkbook.close
End sub
みたいな感じにしたら呼び出し元ブックで定義してる変数の中身が何故か
初期化されてしまったんだけどこれは何故かわかる人いますか?
ちなみにThisworkbook.closeをせずにRunTest処理を終わらせてから
ブックを閉じた場合は初期化されなかったんだけど。
0111デフォルトの名無しさんNGNG
指定パスのファイル名を各セルに表示させたいのですが知っている方いたら教えてください。
0112デフォルトの名無しさんNGNG
>>111
A1 セルにパス(例えば C:\Windows)が書かれているとする。
B列にそのフォルダ内のファイル名を書き出す。
ただしサブフォルダと親および自分自身のフォルダは無視する。
下記のマクロを登録して実行する。

Public Sub FileList()
Dim fn As String
Dim i As Long
ChDir Range("A1")
i = 1
fn = Dir("*.*", vbArchive)
While fn <> ""
If Left(fn, 1) <> "." Then
Range("B" & i) = fn
i = i + 1
End If
fn = Dir()
Wend
End Sub
0113デフォルトの名無しさんNGNG
>>112
早速の返事ありがとうございます!
ドライブがc:\とf:\の2つあるのですが、c:\やその配下を見ようとすると必ずf:\のルートを
見に行ってしまいます。
f:\についてはサブフォルダの参照も問題ないのですが・・・
c:\を見に行くにはどうすればいいのでしょうか?
0114112NGNG
>>113
Dim i As Long のあとに
ChDrive Range("A1")
を入れてみてください。
0115デフォルトの名無しさんNGNG
>>114
サンクス!
0116デフォルトの名無しさんNGNG
checkboxesの引数の値がうまくできてないみたいで
以下の構文ですと、1行目で引っかかってしまいます。
excelのsheet1にオブジェクト名"checkbox1"でチェックボックスオンの状態にしてあります。

If Worksheets("Sheet1").CheckBoxes(1).chekcked = True Then
Worksheets("Sheet1").Cells(1, 1).Value = 22
0117悩める者NGNG
ExcelVBAのフォーム上でpictureなどのオブジェクトを
ドラッグアンドドロップするにはどうしたらよいでしょうか?
無理なのかな?
0118デフォルトの名無しさんNGNG
Excelのsheet1に入っているデータをsheet2の3箇所にコピーし、
かつ、次のデータがその下に表示されるにはどうすればいいでしょうか?
sheet間のコピーはできるのですが、データが上書きされてしまします。
どこを直せばいいのでしょうか?
下記のVBです。全部は長いので1部分ですが・・・。

Sheets("入力表").Select
Range("N13:R13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("計算書").Select
ActiveWindow.SmallScroll Down:=15
Range("A25").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
If Range("A25") = 0 Then
Range("A25").Select
ElseIf Range("A26") = 0 Then
Range("A26").Select
Else
Range("A25").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
0119デフォルトの名無しさんNGNG
Sheet1のA列に日々の観測データを記録しています。
現在セルA1〜A1000くらいまで1種類1000個のデータがあります。

未使用だったSheet2に、CommandButton1を置いて
Sheet1のデータの算術平均値をSheet2のセルA1に表示するようにしてみました。
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Sheets("Sheet2").Cells(1, 1).Value = "=AVERAGE(Sheet1!A1,Sheet1!A1000)"
End Sub

このとき、Sheet2のセルA2に"500"と入力してからCommandButton1を押すと
Sheets("Sheet2").Cells(1, 1).Value = "=AVERAGE(Sheet1!A1,Sheet1!A1000)"
を
Sheets("Sheet2").Cells(1, 1).Value = "=AVERAGE(Sheet1!A1,Sheet1!A500)"
と変えられるようにしたいと考えております。
Sheet2のセルA2の値によって、平均値の計算に使うSheet1のA列のセルの行数を
任意に変えたいと思うのですが、なかなか妙案が思いつきません。

よろしければアドバイスをお願い致します。
0120デフォルトの名無しさんNGNG
>>119
なんの観測データか気になって3行目以降読んでない私。
0121デフォルトの名無しさんNGNG
Sheets("Sheet2").Cells(1, 1).Value = "=AVERAGE(Sheet1!A1,Sheet1!A" & Sheet2.Cells(1,2).Value & ")"

はダメですか?
0122デフォルトの名無しさんNGNG
はじめての裏技 ExcelVBA買いました 1890円ですた。
リファレンス型でなおかつ目的別にVBAが記載されてまして、ちゃんとコード例も載ってます。
なかなかいい感じの本なのでここに紹介をさせて頂きます。

御聴講ありがとうございました
0123デフォルトの名無しさんNGNG
>>119
すなおに計算。
Private Sub CommandButton1_Click()
Dim sum As Double
Dim i As Long
Dim n As Long
Sheets("Sheet2").Activate
sum = 0
n = ActiveSheet.Range("A2")
For i = 1 To n
sum = sum + Sheets("Sheet1").Cells(i, 1)
Next i
ActiveSheet.Range("A1") = sum / n
End Sub
0124デフォルトの名無しさんNGNG
>>118
どこに何をコピーしたいの?
0125116NGNG
Checkboxesって引数として変数を取ることはできないのでしょうか?
以下の構文ですとChecboxes(i)でエラーになります。

Dim i as Integer
i = 1
If Worksheets("Sheet1").Checboxes(i) = True Then
Worksheets("Sheet1").Cells(1, 1).Value = 22
End If
0126デフォルトの名無しさんNGNG
>>125
素直にvalueを参照しる。
0127デフォルトの名無しさんNGNG
オートフィルタを仕様して、A列に「1」が入ってるものを抽出して
抽出したデータにだけ、B列に「2」と入れたいのですが、
どうすればいいですか?
0128デフォルトの名無しさんNGNG
EXELのVBAにて
単価(既定)と数量(ComboBoxで選択)にて合計(Select Caseで表示)
を表示できるようにしたいのですが、ComboBoxで数量を選択しても合計値が
リアルタイムで表示されません。
毎回、VBEの方でプレイボタン(実行)を押さないとワークシートに反映されません。
どうしたらよいでしょうか?
0129デフォルトの名無しさんNGNG
>>128
Select caseは制御構造で何かを表示したり云々な機能はないよ。
0130デフォルトの名無しさんNGNG
>>129
ありがとうございます!
0131デフォルトの名無しさんNGNG
>>124
Sheets("入力表").Select
Range("N13:R13").Select
↑このN13:R13のデータを
("計算書")Sheetの
 A25から始まって、順に下に表をつくるように
データを転記させたいのです。

 気づくのに遅くなってごめんなさい!
0132デフォルトの名無しさんNGNG
>>131
Sheets("入力表").Range("N13:R13").Copy Sheets("計算書").Range("A25")
0133132NGNG
>>131
おっと、こーゆー意味か?

Dim i As Long
For i = 14 To 18
Sheets("計算書").Cells(11 + i, 1) = Sheets("入力表").Cells(13, i)
Next i
0134デフォルトの名無しさんNGNG
EXELにおいて、例えば
textbox1に表示されたデータと全く同じものを
別のセルに表示させるにはどうすればよいのでしょう?
例えばtextbox1が[1000円]だったらD1も[1000円]
textbox1が[2000円]に変わったらD1も[2000円]とリアルタイムに表示させたいのです。
どなたかよろしくお願いいたします。
0135デフォルトの名無しさんNGNG
textbox1のchangeイベントに
range("D1").value = textbox1.value
とかいう風にすれば
テキストボックスの値が変わるとセルD1の値にも反映される
0136デフォルトの名無しさんNGNG
>>135
ご親切にありがとうございます!!
0137デフォルトの名無しさんNGNG
ワークシートの数が1つより多い時は1つにしたいのですが、

For i = 1 To Worksheets.Count - 1
Worksheets(2).Delete
Next i

とすると削除しますか?というダイアログがでてしまうので
それをでないようにしたいのですが、なにか方法はあるでしょうか?
0138デフォルトの名無しさんNGNG
>>137
DisplayAlerts プロパティ
0139デフォルトの名無しさんNGNG
目次・索引を自動で取得するマクロを作りたいと思います。
キーワードを検索し、そのキーワードがあるセルのページ番号(印刷のページ番号)を
読み込みたいのですが、何かいい方法ないですか?
0140デフォルトの名無しさんNGNG
>>139
ちょっと文章が分かりにくい
もうちょっと詳しく書いて

ページ番号って対象のあるセルのあるシート番号ですか?
0141デフォルトの名無しさんNGNG
>>140
>ページ番号って対象のあるセルのあるシート番号ですか?

ちゃんと読んでやれ。
0142デフォルトの名無しさんNGNG
>>139 こんなんでいかがでしょうか。
Sub test()
'キーワードがあるシート
Sheets(1).Activate
ActiveWindow.View = xlPageBreakPreview
i = 0
For Each pb In Sheets("work").HPageBreaks
If pb.Type = xlPageBreakAutomatic Or pb.Type = _
xlPageBreakManual Then
ReDim Preserve lngRow(i)
lngRow(i) = Sheets("work").HPageBreaks(i + 1).Location.Row
i = i + 1
End If
Next
strMsg = "検索したい文字を入力してください"
strVal = InputBox(strMsg, "入力", "テスト")
'キーワードがある列
Set c = Columns("A:A").Find(strVal, LookIn:=xlValues, LookAt:=xlWhole)
c.Activate
lngRow2 = Selection.Row
For j = UBound(lngRow) To 0 Step -1
If lngRow2 >= lngRow(j) Then
Exit For
End If
Next
MsgBox j + 2 & "ページ"
End Sub
0143デフォルトの名無しさんNGNG
キーワードのある列をA列に限定してるけど、それでいいのかな?
限定しないとすると、VPageBreaks も拾ってやらんと行けなくなるけど。
0144VBVBNGNG
VBでエクセルを立ち上げているのですが、ユーザーが勝手に
EXCELを落として、VBがアクセスエラーすると「バグじゃー」と
騒ぎます。
 EXCELをユーザーには終了させないようにすれば、騒ぎが
とまるのですが、どうすればいいのでしょうか?
0145VBVBNGNG
Workbook_BeforeClose(Cancel As Boolean)
で終了できないようにはできる。
ペケの場合は終了できない。VBからは終了できる。
そのためには、VBから終了フラグをセットしてやればいい。

 これでOK完成とおもったが、問題がある。
EXCELで終了中に終了のキャンセルをした場合は、
VBは終了したと思っているのに、EXCELは残っている。
どうする?
0146デフォルトの名無しさんNGNG
>>142

ありがとうございます!
助かりました。


詳細を述べますと
1ブックに20シートぐらいあるファイルを
検索しページ番号を抜き出したいのです

1シートのページ番号は142さんのやり方で出来きますが
シートをまたいだページ番号取得も出来ますでしょうか?

それとページが1ページしかないシートがエラーになりますが
これも対応出来ますでしょうか?
0147VBVBNGNG
Cancelとる方法みつかりました。 サンキュー。
VBAは難しいね。
0148デフォルトの名無しさんNGNG
>>146
おいおい、全部やってもらう気かよ。
0149デフォルトの名無しさんNGNG
>>132
ありがとうございました!! 無事に内容が転機されて、
前のデータも消さずにいきました!!
 ありがとうございます!
0150デフォルトの名無しさんNGNG
comboboxで数値(●●円)を選択する場合、
選択後もボックス内に「〜円」と単位を表示させるにはどうしたらよいのでしょう?
現段階だとcomboboxでリスト選択するときは「円」が表示されていますが
選択後は数字だけとなってしまいます。
よろしくおねがいいたします。
0151デフォルトの名無しさんNGNG
>>150
現段階のコードはどのようになってますか?
コンボボックスのスタイルは?fmstyledropdowncombo?


0152150NGNG
>>151
コードはイジってません(以下)。コンボボックスを右クリック→
プロパティで行っています。
Private Sub ComboBox62_Change()
End Sub

スタイルはfmstyledropdowncomboです。

すみません、よろしくお願いします。。
0153デフォルトの名無しさんNGNG
指定したセル(表の見出しにしている)の入力を禁止するにはどうすればよいのでしょうか?
0154デフォルトの名無しさんNGNG
エクセルしかしらないのだけど、WORDでかいた様式ファイルから
エクセルのデータを出力したい場合、どのようにマクロ書けばいいのですか?
0155デフォルトの名無しさんNGNG
>>153
シートに保護をかける。
0156デフォルトの名無しさんNGNG
>>152
こんなかんじでどうでしょう。「円」の後ろに半角スペースを入れてください。
Private Sub ComboBox1_Click()
ComboBox1.Value = ComboBox1.Value & "円 "
End Sub
0157150NGNG
>>156
ありがとうございます、
Private Sub ComboBox62_click()
ComboBox1.Value = ComboBox1.Value & "円"
End Sub
を試してみたのですが、コンボボックス1には「100円円」と
円が二つ繋がってしまいます。また、単価と数量と合計も示しているのですが
このコードを挿入すると合計が#VALUEとなってしまいました。

お手数かけてもうしわけありません。
0158150NGNG
補足
「100円円」と表示されたのは、コンボボックスのプロパティで
選択した範囲にユーザー定義で「円」を表示させていたためでした。
よってユーザー定義を解除したところ、コンボボックスには「100円」と
表示されましたが、単価*数量=合計 の合計は#VALUEのままです。

説明が下手で申し訳ありません、宜しくお願いいたします。
0159デフォルトの名無しさんNGNG
とりあえず
×
Private Sub ComboBox62_click()
ComboBox1.Value = ComboBox1.Value & "円"
End Sub

○
Private Sub ComboBox1_click()
ComboBox1.Value = ComboBox1.Value & "円"
End Sub

0160156NGNG
>>158
セルのユーザー定義を解除しなくても、「円」の後に半角スペースを入れると「円」と表示されると思うのですが。半角スペースがないと「円円」と表示されます。何でなんでしょうね。
シート1のB1が単価(コンボボックスの値)として試してみてください。
Private Sub ComboBox62_Click()
ComboBox62.Value = ComboBox62.Value & "円 " '←円の後ろに半角スペース
 Sheets(1).Range("B1").Value = Left(ComboBox62.Value, Len(ComboBox62.Value) - 2)
End Sub
0161150NGNG
>>160
度々本当にありがとうございます。お教え頂いたものをペーストしてみましたが、
やはり合計額が#VALUE!になってしまいます。。
しかし新しいワークシートにて最初から作成したところ、しっかり
単価*数量=合計が表示され、単価のコンボボックスにも「〜円」が表示されました。

コードやプロパティを見直してみても、どこがおかしいのかわかりませんが
教えてくださったコードを挿入しなければ、「円」は表示されませんが合計は
エラーになりません。。

ご丁どうしたらいいでしょう(笑
0162156NGNG
>>161
Private Sub ComboBox62_Click()
msgbox Left(ComboBox62.Value, Len(ComboBox62.Value) - 2)
End Sub
これを実行した時に数字だけが表示されるはずですが、いかがでしょうか。もう少しフォームの仕様とかを詳しく書いていただくと、わかるかもしれません。
0163デフォルトの名無しさんNGNG
Excel VBAマクロで以下の方法をご教授いただければ幸いです。

CommandButton1を押したときに、B3セルからE15セルまでの範囲を指定して
カンマ区切りのcsv形式で保存することを考えております。
0164デフォルトの名無しさんNGNG
>>163
Private Sub CommandButton1_Click()
Range("B3:E15").Select
ActiveWorkbook.SaveAs FileName:= _
"Book1.csv", FileFormat:=xlCSV
End Sub
0165150NGNG
>>162

ありがとうございます。そのコードを実行したところ、
「実行エラー5 プロシージャの呼び出し、または引数が不正です。」と表示されました。以下にもう少し詳しく記載させていただきます。

sheet2の
I13からI15まで「100,200,空欄」の3つを記入し、これを「単価」として名前を定義。
同じくSheet2のF2からF12まで「空欄,1〜10」の11個を記入し、これを「数量」として名前を定義。
次にSheet名「計算表」にて
単価のComboBox62はC96に配置し、Linked cellにC96、ListFillrangeに「単価」を挿入。
数量のComboBOx51はD96に配置し、Linked cellにD96、ListFillrangeに「数量」を挿入。
D96に「=C96*D96」を挿入。

知識不足、説明不足で申し訳ありません、宜しくお願いします。
0166デフォルトの名無しさんNGNG
>>164

文字列以外のセルは#REF!って表示されません?
0167デフォルトの名無しさんNGNG
>>166
セルの大きさが小さいだけ
セル幅を広げりゃ万事解決
0168156NGNG
>>165
ComboBox62のLinked cellを削除し、以下のコードを貼り付けていただくとどうなるでしょうか。
Private Sub ComboBox62_Click()
ComboBox62.Value = ComboBox62.Value & "円 " '←円の後に半角スペース
Sheets("計算表").Range("C96").Value = Left(ComboBox62.Value, Len(ComboBox62.Value) - 2)
End Sub
0169デフォルトの名無しさんNGNG
>>164
エクセル2000ですが、選択された部分だけでなく、アクティブなシート全体の値が保存されませんか?
0170デフォルトの名無しさんNGNG
>>169
あ、ほんとうだ。

新しいマクロの記録で、
(1) B3:E15 を選択・コピー。
(2) シートを1枚追加。
(3) 追加したシートの A1 にペースト。
(4) CSV で保存
をやって、そのコードを
Sub CommandButton1_Click() 〜 End Sub の
間に貼りつける。
0171デフォルトの名無しさんNGNG
Access の .mdb ファイルを OpenCurrentDatabase で開くと、
「起動時のオプション」で、「フォーム/ページの表示」で指定してある
フォームが開いてしまうのですが、これを開かないようにする方法ってありますでしょうか?
いろいろ調べたつもりなんですが、わかりませんでした;;
0172デフォルトの名無しさんNGNG
>>171
開かない方法はわかりませんが、私はこんな感じでやっています。
Dim objAC
Set objAC = CreateObject("Access.Application")
objAC.OpenCurrentDatabase "c:\tmp.mdb"
objAC.DoCmd.Close 2, "Fmenu",2 '開いたメニューを閉じます
objAC.run "abc" '続いて実行したいマクロ
Set objAC = Nothing
0173デフォルトの名無しさんNGNG
>>172
今まで、OpenCurrentDatabase の直後に Visible = false って方法でやってたんですが、
お教えいただいた方法でも、一瞬、チラッとフォームが見えちゃいますね。
社内向けツールなんで、「仕様です」のひとことで済ますことにします。
う〜ん、残念。
0174デフォルトの名無しさんNGNG
すみません。EXCELのセルの中に「A_B_C…」とか入ってるのを
各セルにある文字をキーにして(この場合「_」がキー)
「A」「B」「C」の様に入れることはできるでしょうか?
SUBSTITUTE関数を使ってもTABコードがうまくいかないのですが…

宜しくお願いします。
0175150NGNG
>>168
ありがとうございました!できました!!
0176デフォルトの名無しさんNGNG
マクロをいくつか作ったのですが、それを結合するのが大変なので自動で次のマクロに
移動できるようにしたいです。
どうすればよろしいでしょうか?
0177デフォルトの名無しさんNGNG
>>176
Call
0178デフォルトの名無しさんNGNG
良スレ∩゚∀゚∩age
0179デフォルトの名無しさんNGNG
どなたか教えて下さい。

折れ線グラフで、マーカーの部分にカーソルを重ねると「系列 "A株式会社" 要素 "100" 値 "300"」
のような感じで表示されますが、別のデータをグラフの元となっているセルから引用して表示させたい
と思っています。
例えば「系列 "A株式会社" 要素 "100" 値 "300"  内容 "○○○"」のような感じで「内容 "○○○"」
を追加したいと思っています。どなたかご存知でしたら教えて下さい。
0180デフォルトの名無しさんNGNG
重回帰分析をエクセルの分析ツールではなく、VBAでやりたいのですが、
何か良い関数はないでしょうか。
0181デフォルトの名無しさんNGNG
Excel VBA(VBのバージョンは6.0)での質問です。

例えばセルA1に文字や数字を打ち込んだ後に、他のセルをアクティブに
しようとした瞬間に(A1がアクティブのままでということ)、メッセージボックスを
出す事って可能でしょうか?
WorkSheet_Changeでは無理っぽいのですが・・・。

ご存知の方よろしくお願いいたします。
0182デフォルトの名無しさんNGNG
>>181
元の位置がアクティブなままと言うのはないみたい。
何をやりたいのかよくわからんが、元の位置に何かしたいということなら、Worksheet_SelectionChange でせっせと元の位置を覚えておけばいいと思う。

Private OldRange As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not OldRange Is Nothing Then
  OldRange.Font.Color = RGB(0, 0, 0)
 End If
 Set OldRange = Target
 Target.Font.Color = RGB(255, 0, 0)
End Sub

とやれば、選択しているところのフォントだけが赤くなるよ。
0183デフォルトの名無しさんNGNG
質問です。

テキストボックスに入力したデータをA5のセルに表示する方法を教えてくださいませんか?
0184デフォルトの名無しさんNGNG
>183
テキストボックスに入力したデータをCtl+Cでコピーして
A5のセルCtl+vでペースト
0185デフォルトの名無しさんNGNG
>>183
Cells("A5).Value = Edit1.value
0186デフォルトの名無しさんNGNG
質問させて下さい。
ExelのVBAで簡単なプログラムを作りました。
内容はセルの内容を貼り付けたり切り取ったりを繰り返すだけの物です…。

ところが内容を付け加えていくうちに急に処理が重くなり,当初より10倍以上の時間が掛かるようになってしまいました。
プルグラムが長くなりすぎたのかと思い,試しに付け加えた部分を削除してみましたが,やはり遅いままでした。
このような状態の解決法は何かあるんでしょうか?
ご教授よろしくお願いします。
0187デフォルトの名無しさんNGNG
取りあえず時間のかかってる処理はどこか探ってみては?
ふざけたループが廻ってたりとか。
0188デフォルトの名無しさんNGNG
処理が無駄に循環しているとか?
0189デフォルトの名無しさんNGNG
いえ,プログラムの内容と言うよりは,根本的に一つ一つの操作(C&Pなど)が遅い状態です。
0190デフォルトの名無しさんNGNG
ウィルスチェックがかかってないかな?
0191186NGNG
もちろん常駐はしていますが,スキャン中など,システムに負荷が掛かる状態ではありません。
ちなみに他のPCで試してみても同じ状態です。
0192デフォルトの名無しさんNGNG
普通のBASICしかやったことなくてVBAに挑戦しようと思っているのですが、
このスレに張り付けられているコードを見たところ
文と文の区切り文字が使われていないみたいなんですが
:は付けたらいけないのでしょうか?あっても問題ないのでしょうか?
0193192NGNG
ごめんなさい。
やってからこい!って言われる前にやってみました。
あっても問題ないんですね。
スッキリしました。スレ汚し巣マソ
0194デフォルトの名無しさんNGNG
>>191
usedrangeを使った時に処理が遅くなった経験があります。見た目はデータがないのに、その部分まで対象になっていたので処理が遅くなっていました。
0195186NGNG
んー
そのケースには該当しないようです。
0196デフォルトの名無しさんNGNG
>>192
ん〜〜 もしかして行末に全部 : つけてるとかw
0197186NGNG
解決しました
0198186NGNG
>>197
誰だおまえは?
0199KAKANGNG
すいません。教えてください。
最近VBをはじめた初心者です。
くだらない質問なんですが、
VBとVBAの基本的な違いは何ですか?
箇条書きで構わないので、メリットとデメリットを
教えてください。
お願いします。
0200デフォルトの名無しさんNGNG
すいません。教えてください。
最近セックスをはじめた初心者です。
くだらない質問なんですが、
セックスとアナルセックスの基本的な違いは何ですか?
箇条書きで構わないので、メリットとデメリットを
教えてください。
お願いします。
0201デフォルトの名無しさんNGNG
>>200 板違い、http://pie.bbspink.com/hneta/
0202デフォルトの名無しさんNGNG
>>199
VBAは,各アプリケーション固有(ワード,エクセル等)の
マクロ処理言語として提供されています。
パッケージ版のVBとの違いは,パッケージ版VBは単体で
動作することを前提としたプログラムを作成しますが,
VBAの場合は,それが組み込まれているアプリケーション
(エクセル,ワードなど)の上で動作します。
0203KAKANGNG
>>202
ありがとうございます。
まだまだ勉強が足りませんでした。
0204デフォルトの名無しさんNGNG
Access2000で、フォーム上でのスクロールによるレコードの移動を禁止したいのですが。
Accessでその機能が無いようなので、VBAで行うとすれば、
マウススクロールを無効にするようなコードってありますでしょうか?
0205デフォルトの名無しさんNGNG
a
0206デフォルトの名無しさんNGNG
マウススクロールってホイル? 2000でも出来るかな?
http://support.microsoft.com/default.aspx?scid=kb;ja;308636#appliesto
0207デフォルトの名無しさんNGNG
>>206
有り難うございます!
リンクをヒントに探したらこんなのも見つかりました。
http://support.microsoft.com/default.aspx?scid=kb;JA;278379

・・・後半部分が美味しそうなのですが、日本語が壊れています・・・(汗
0208デフォルトの名無しさんNGNG
ACCESS2000/VBAについて質問させてください。

テーブルをエクセル形式にエクスポートした際にEXCEL5.0/95形式で

保存されてしまうのですが、2000形式の保存を行う方法はありませんか?

現状:
DoCmd.OutputTo acTable, "EXP", "MicrosoftExcel(*.xls)", "C:\test.xls", False, ""
0209デフォルトの名無しさんNGNG
>>208
excelオブジェクト作って読み込ませて保存。

とか適当に言ってみる。
0210デフォルトの名無しさんNGNG
ご教授お願いします。
Pingの応答確認をしたいのですが。例えばA1にIPアドレスを入力し、
マクロ実行後、A2に○or×を表示させたいのですが。
よろしくお願いします。
0211デフォルトの名無しさんNGNG
>>210
ICMPを扱えないといけません。rawソケットでできるかな?できないかな?みたいな。

と適当
0212デフォルトの名無しさんNGNG
>>210 こんなんでどう? バッチ利用で○×じゃないけど。(ひょっとするとWin98/Meは無理だっけ?)
Public Function IPTest(IP As String) As Boolean
On Error Resume Next
Dim F As Integer, RetCode As Integer, CR As String
CR = Chr(13) & Chr(10)
F = FreeFile
Open "IPTest.Bat" For Output As #F
Print #F, "@Echo Off" & CR & "Ping -n 1 -w 1 " & IP & " > Nul" & CR & "Echo %ErrorLevel% > Res.Txt"
Close #F
Shell "IPTest.Bat", vbHide: Do: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: Loop While Dir("Res.Txt") = ""
Kill "IPTest.Bat"
F = FreeFile
Open "Res.Txt" For Input As #F
Input #F, RetCode
Close #F
Kill "Res.Txt"
IPTest = IIf(RetCode = 1, False, True)
End Function
0213210NGNG
>>211
>>212
ありがとうございます。
早速試してみます!
0214デフォルトの名無しさんNGNG
Public Sub Workbook_Open()
Timerloop
End Sub
Sub Timerloop()
Call ThisWorkbook.TimerProc '
Application.OnTime Now + TimeValue("00:00:1"), "Timerloop"
End Sub

 VBAで1秒周期で処理をさせたいTimerProcを上記のように実装しています。
ところが
 シートラベルをクリックしてシート名称が変更できる状態にすると
この処理が停止します。
 エラーでもないのにEXCELが中断モードになるのだと思いますが、
なにか回避する方法はないものでしょうか?
0215214NGNG
よくわからんけど、解決した。
しかし、シートラベルをクリック(ダブル)するとシート名変更の
モーダル画面が出るようになった。 モーダル画面中はタイマーは止まるが
画面を消すともとどうり動作するようになった。

0216デフォルトの名無しさんNGNG
Public VsH(100) as doubleとかいっぱい配列を宣言したら固まるんですけど限界とかあるんですか?
0217デフォルトの名無しさんNGNG
またおまえか!
0218デフォルトの名無しさんNGNG
>216
100だったら固まらん。 100000000ぐらいにしてみたら。
0219デフォルトの名無しさんNGNG
ACCESS 2000の質問です。
サブフォーム内のテキストボックスにテーブルの項目を関連づけました。
任意のテキストボックスにフォーカスを当てることはできたのですが、
テキストボックスのプロパティを変更することが出来ませんでした。
1レコード目はテキストボックスを使用不可にし、2レコード目を使用可にすること
はできないのでしょうか?

0220デフォルトの名無しさんNGNG
>>218
うましか
0221デフォルトの名無しさんNGNG
VBをしらなくとも、
EXCEL VBA関連の本を読んで、できるものでしょうか?
0222デフォルトの名無しさんNGNG
>>221
できないなら覚えればいい。って言う話ですな
0223デフォルトの名無しさんNGNG
誰でも最初は初心者だった。
0224デフォルトの名無しさんNGNG
>>221
漏れはVBは触ったことがないけど、EXCELのヘルプを読みまくって、なんとか作れるようになったよ。
まぁ効率悪いところはいろいろあるんだけどさ。
0225デフォルトの名無しさんNGNG
>>222-224 ありがとう
0226デフォルトの名無しさんNGNG
>221
漏れも最近始めた。
まぁがんがっていこうや (´∀`)
0227デフォルトの名無しさんNGNG
質問です。
EXCELでセルをクリックしたときにイベントを発生させたいのですが
どのようにすればよろしいのでしょうか。
よろしくお願いします。
0228227NGNG
解決しました。
すみませんでした。
0229デフォルトの名無しさんNGNG
Excelで文字列処理をするとき、ターゲットファイルを選択にgetfilepath()を
使っています。ただデフォルトで開くディレクトリがマイドキュメントに
なってしまうので、できればカレントを表示させたいのですが、良い方法はありますか?
0230229NGNG
スマソ
ミスってしまった
getfilepath()じゃなくてApplication.GetOpenFileName です
0231229NGNG
重ね重ねスマソ
こんな風にしたらできますた

Function OpenLogFile() As String
Dim varFullPath As Variant
Dim i As Integer
Dim myPath As String
Dim myDrive As String

myPath = Application.ActiveWorkbook.Path
i = InStr(myPath, "\")

If i < 3 Then
OpenLogFile = ""
MsgBox "ネットワークから起動するときはドライブを割り当ててください", vbOKOnly + vbExclamation
GoTo No_UNC
End If
myDrive = Left(myPath, 2)
ChDrive myDrive
ChDir myPath
varFullPath = Application.varFullPath = Application.GetOpenFileName _
("ログファイル (*.log; *.txt),*.log;*.txt")
No_UNC:
OpenLogFile = varFullPath
End Function

A:\〜Z:\まで必ず\が3文字目にあることを利用してChDriveをした、と
オナニー見せつけて申し訳ない
0232デフォルトの名無しさんNGNG
>>231
で、UNCはどうするの?
0233デフォルトの名無しさんNGNG
>>231

'モジュールレベルで宣言
Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" _
(ByVal lpPathName As String) As Long

'カレントドライブとフォルダの変更(ネットワーク対応)
Function OpenLogFile() As String
  Dim varFullPath As Variant

  Call SetCurrentDirectory(Application.ActiveWorkbook.Path)
  varFullPath = Application.GetOpenFilename("ログファイル (*.log; *.txt),*.log;*.txt")
  OpenLogFile = varFullPath
  If varFullPath = False Then OpenLogFile = "" 'キャンセルされた場合
End Function
0234207NGNG
Access2002にて、
http://support.microsoft.com/default.aspx?scid=kb;JA;278379
を利用し、マウスのスクロールによるレコード移動を禁止したところ

フォームのテキストボックスでEnterキーを押すとTabキーのように
次の入力ボックスへカーソルが移動するようになってしまいました。
(それまではテキストボックス内でEnterをおすと改行してました)
オプション設定で「移動しない」にしても、本当に何も起きません。

Ctrl+Enterで改行することは出来るのですが、
使用者がPC初心者のため、普通にEnterで改行出来るようにしたいのです。
Enterを押すと Ctrl+Enterが送られるようにするとか出来る物でしょうか?
0235デフォルトの名無しさんNGNG
>>234
まずはこれを確認
ttp://www.akj.co.jp/access/jirei/u0140.html
0236デフォルトの名無しさんNGNG
Outlook2002でメール作成をWord2002で行う設定をしています。
メール作成中Word2002のマクロで、メールの形式をテキストに
変更するマクロを書きたいのです。
どなたかお助けください。

HTMLメールへの返信をテキスト方式で行う際に、整形する
マクロを作ったのですが、テキスト方式にするためのプルダウン
コントロールへのアクセスの仕方がわからんです。
0237デフォルトの名無しさんNGNG
>>236
マクロ記録じゃダメでつか?
0238デフォルトの名無しさんNGNG
あのー、困ってるので教えてください、エロイ人。
Excelで例えばセルA1に入力されてる文字列中に半角文字があるかを調べるには
どんなコードを書いてやればよいのでしょうか?

0239デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0240デフォルトの名無しさんNGNG
>>238
関数があるかどうかは知らん。

unicodeだから単純に半角文字コードか否かを見るだけでも判断可能。
0241デフォルトの名無しさんNGNG
>>238
'半角チェック関数
Function CheckNarrow(Address As String) As Boolean
'戻り値 True:半角文字がある False:半角文字は無い
&ndsp;&ndsp;Dim CheckString As String
&ndsp;&ndsp;CheckString = Range(Address).Value
&ndsp;&ndsp;CheckNarrow = (CheckString <> StrConv(CheckString, vbWide))
End Function

'↓使い方
Sub StartCheck()
&ndsp;&ndsp;If CheckNarrow("A1") Then
&ndsp;&ndsp;&ndsp;&ndsp;MsgBox "半角があります。"
&ndsp;&ndsp;Else
&ndsp;&ndsp;&ndsp;&ndsp;MsgBox "半角はありません。"
&ndsp;&ndsp;End If
End Sub
0242デフォルトの名無しさんNGNG
>>241
なるほど。
0243デフォルトの名無しさんNGNG
間違えた・・・_| ̄|○

'半角チェック関数
Function CheckNarrow(Address As String) As Boolean
'戻り値 True:半角文字がある False:半角文字は無い
  Dim CheckString As String
  CheckString = Range(Address).Value
  CheckNarrow = (CheckString <> StrConv(CheckString, vbWide))
End Function

'↓使い方
Sub StartCheck()
  If CheckNarrow("A1") Then
  &ndsp;&ndsp;MsgBox "半角があります。"
  Else
  &ndsp;&ndsp;MsgBox "半角はありません。"
  End If
End Sub

今度はどうだ!
0244デフォルトの名無しさんNGNG
>>243
引数はセルの位置ではなくて評価する文字列にした方が汎用性が上がると思うよ。
0245デフォルトの名無しさんNGNG
ndspじゃなくてnbspだった・・・何度もすまん。
0246デフォルトの名無しさんNGNG
>>244
そうですね。言われてみればそうだ・・・。
フォローサンクス!
0247デフォルトの名無しさんNGNG
一部直しわすれてた。。・゚・(ノД`)・゚・。ウエエェェン
ついでに引数を文字列に変更しました。今度こそいいよね。

'半角チェック関数
Function CheckNarrow(CheckString As String) As Boolean
'戻り値 True:半角文字がある False:半角文字は無い
  CheckNarrow = (CheckString <> StrConv(CheckString, vbWide))
End Function

'↓使い方
Sub StartCheck()
  If CheckNarrow(Range("A1").Value) Then
    MsgBox "半角があります。"
  Else
    MsgBox "半角はありません。"
  End If
End Sub
0248デフォルトの名無しさんNGNG
関数にするまでも無いことに気付いた・・・_| ̄|○
0249デフォルトの名無しさんNGNG
>>248
いやいや、可読性、再利用性、修正箇所の減少etcetc大事なことですよ。
0250デフォルトの名無しさんNGNG
>>237
Outlookはマクロの記録ができません。
で、この操作はWordでも記録できません。
0251デフォルトの名無しさんNGNG
>>250
じゃあヘルプひけって話になる訳ですね。
0252デフォルトの名無しさんNGNG
>>241-249
おおお、ありがとうございます。
vbWideなんて定数があったんかぁ。
ソースまで頂いちゃって、乙です。m(_ _)m
0253デフォルトの名無しさんNGNG
>>251
で、ヘルプでもGoogleでも全く引っかからないんです。(はぁと
0254デフォルトの名無しさんNGNG
VBAでコードを検索しようとして検索画面を出し、文字列に漢字とかを2文字以上で打つと、
その2バイト文字の1バイト目のみが送られ、別の漢字に変わったりするんですが、解消方法知ってる方いませんか?
VB本体、他のアプリでは問題なく、ATOK,IMEどちらも同じ症状です
0255デフォルトの名無しさんNGNG
>>254
意味が分からん。ATOKだってIMEだ。
0256デフォルトの名無しさんNGNG
>>255
すんません、MS-IMEでもという意味でした
具体的には、VBA Editorで書いたコードを検索しようとしてCtrl+Fで検索画面を出すじゃないですか
そこの検索文字列に例えば、"数量"と入れると"雛"と表示されるんです
数量がS-JISで文字コード"9094 97CA"、雛が"9097"
数と量、両方の2バイト目が省かれた漢字が入力されてる感じなんです
>>254にも書いた通り、他のアプリ(VBとか)の検索画面では全く問題ないんです
0257229NGNG
ああレス付いているとは思わなかったので遅レス大変申し訳ない

>>233
おお!そんなAPIがあったとは知らなかった
UNC形式でのカレントディレクトリ変更もばっちり動きました
スマートなのでこちらに書き換えします
ありがとうございました

0258デフォルトの名無しさんNGNG
仕事で、エクセルに50〜100個のデータを入力するのですが、途中でどのセルに値を入力したのかわからなくなることが多く、困っています。
ちなみに入力が必要なセルはきっちりと順番に並んではいません。
そこで、
 1、再入力が必要なセルにあらかじめ色をつけておき
 2、値を再入力すると通常の色に戻る
というようなことができないかと考えているのですが、マクロで実現できないでしょうか?
0259デフォルトの名無しさんNGNG
>>258
条件付き書式でもある程度戦えると思った。
0260デフォルトの名無しさんNGNG
>>258
Private Sub Worksheet_Change(ByVal Target As Range)
  Target.Interior.ColorIndex = xlNone
End Sub
0261デフォルトの名無しさんNGNG
>>256
Office XPじゃない?
うちでも発生するからバグだと思うが
ただ技術情報にも出ていない
面倒だから問い合わせていないけどMSに問い合わせた方が宜しいね
0262デフォルトの名無しさんNGNG
私、VBA初心者です。
すいません。教えてください。
VBAでファイルを名前を変えて保存を実施するのに、名前を
20040527という風に4桁2桁2桁表示にしたいのですが、どうしてもうまく
いきません。
現在、設定しているのは
date = Year(Date) & Month(Date) & Day(Date)
というのを使用して、形式をいろいろ変更しているのですが、
どうしても月と日が2桁で保存できないのです。
どうやって、4桁2桁2桁の名前で保存できるのでしょうか?
0263デフォルトの名無しさんNGNG
>>262
Format(DateSerial(2004, 5, 28), "yyyymmdd")
0264デフォルトの名無しさんNGNG
>>263
ありがとうございます。うまくできました。
0265デフォルトの名無しさんNGNG
262です。
う、、やっぱりうまくいきませんでした。
修正エラーって言われてしまいます。
0266デフォルトの名無しさんNGNG
>>265
>>263じゃないし、漏れもあんま詳しくないけど
日付型だとまずいんでない?

Cstr(Format(DateSerial(2004, 5, 28), "yyyymmdd") )とかは?
0267263NGNG
>>265
Date はシステム日付を取得する関数だが
Date =...と書くとシステム日付を変更するステートメントになる。変数ではないので変数名を変えなされ。
もし今日当日の日付のファイル名を作りたいなら↓みたいな感じか?

Dim Filename as String
Filename = Format(Date, "yyyymmdd")
Open Filename for...

--------------------------------以下ヘルプより
Date ステートメント
 現在のシステムの日付を設定するステートメントです。
構文
  Date = date
Microsoft Windows 95 で実行されるシステムの場合は、1980 年 1 月 1 日〜2099 年 12 月 31 日の
範囲の日付を指定する必要があります。Microsoft Windows NT で実行されるシステムの場合は、
1980 年 1 月 1 日〜2079 年 12 月 31 日の範囲の日付を指定する必要があります。
Macintosh の場合には date に1904 年 1 月 1 日 〜 2040 年 2 月 5 日の範囲の日付を指定する必要があります。.
0268263NGNG
つーかVBAでスシテム日付を変更してはいかん。
0269デフォルトの名無しさんNGNG
>>267
1970 1/1なUNIX時間じゃ無いんですね。
0270デフォルトの名無しさんNGNG
>260
遅レスすんません。
色を無色にする操作はそれでできますね。
理想を言えば、値を入力してEnterを押した瞬間色が変わってほしいのですが
Enterのタイミングに合わせてマクロが動くようにするのはやっぱり無理でしょうか?
0271デフォルトの名無しさんNGNG
>>266
やはり修正エラーがでてしまいます。。。
>>267
そうです。毎日のファイルを吐き出したいため、日付フォーマットで保存し、
読み出すときもその日のファイルを読み出すために作成しているのです。

>Dim Filename as String
>Filename = Format(Date, "yyyymmdd")
>Open Filename for...
こうする場合は、Filenameの変数はどうやって日付の値を取得するのでしょうか?
Filename = Year(Date) & Month(Date) & Day(Date)
Dim Filename as String
Filename = Format(Date, "yyyymmdd")

で定義してみましたが、やはり仮に本日ならば、20040528にはならず、
2004528となってしまいます。
Date関数を使うとだめなのでしょうか?
0272デフォルトの名無しさんNGNG
変数の宣言を先にしてみては?

Dim Filename As String
Filename = Year(Date) & Month(Date) & Day(Date)
Filename = Format(Date, "yyyymmdd")
0273デフォルトの名無しさんNGNG
>>271
これではいかが?
Filename = Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)
0274デフォルトの名無しさんNGNG
VBAでファイルを読み込んで処理をするのですが、テキストファイルだと中身の生データを読まれてしまいます
暗号化などよい方法はないものでしょうか?
0275デフォルトの名無しさんNGNG
これで

Dim Filename As String
Filename = Format(Date, "yyyymmdd")
Range("A1").Value = Filename

A1に"20040528"が表示されるから
Filenameには希望通りの値(文字)が入ってると思うんだけど
(WinXP+Excel2003)
0276デフォルトの名無しさんNGNG
>>274
基本中の基本は、ある数とのxorを取ること。

A xor B = C
C xor B = A

VBAならパスワード付きファイルにデータを保存したりするのが楽ちんな気もします。
0277デフォルトの名無しさんNGNG
>>276
ありがとうございます
暗号化したいのは文字列なんですが、アレンジして使えそうです
0278デフォルトの名無しさんNGNG
>>270
次のセルに移動すると同時に色が変わりませんか?
どんな感じになってるんですかね。
0279デフォルトの名無しさんNGNG
>278さま
すいません。
ものすごく初心者なので、せっかく書いていただいた>260をどう使えばいいのかよくわかってないんです。
privateで始まっているのでこれはサブルーチンみたいなものだと思ったのですが、

Sub macro1()
worksheet_change(selection)
End Sub

というような感じで使用するということなのですか?
0280デフォルトの名無しさんNGNG
>>279
私は 278 ではないが、

(1) [Alt] + [F11] で VBエディタを表示させて
(2) [Ctrl] + [R] でプロジェクトを表示させて、
(3) 対象とするシート(たとえばSheet1)をダブルクリックする。
(4) コードウィンドウが表示されるから、そこに >>260 をそのまま
  コピペする。
(5) VB エディタは閉じてよい。
(6) Excel の Sheet1 に戻って、てきとーにセルに色をつけておく。
(7) 色をつけたセルの値を変更してみる。
(8) (゚Д゚)ウマー
0281デフォルトの名無しさんNGNG
>>279
あれは、標準モジュールではなくシートモジュールに書きます。
Visual Basic Editorの左上のウィンドウに、Microsoft Excel Objects以下に、
存在するシート名とThisWorkbookというのがありますが、該当するシートを
ダブルクリックした時に右側にウィンドウが開きます。
右側のウィンドウの上部に2つのコンボボックスがありますので、左側で
"Worksheet"、右側でChangeを選択すると、空のプロシージャが挿入されるので、
あとは>>260のようにするだけ・・・と。

こんな説明でよい?
0282デフォルトの名無しさんNGNG
Excelのバージョンによって、使える関数やコードの書き方が
若干異なったりするので、質問する時はバージョンまで書いたほうがよいと思う。
0283271NGNG
皆さんありがとうございました。
おかげでうまく日付保存をすることができました。
0284デフォルトの名無しさんNGNG
>280さま、>281さま
できました。どうもありがとうございます。
すごいです。こんなことができるなんて!

>282さま
おっしゃる通りですね。今更必要ないかもしれませんが、家のPCには2000が入っており、会社のものは確か2003だったと思います。
0285デフォルトの名無しさんNGNG
Excel2002VBAのVBEで,プロパティウインドウを表示して,フォントを変更しようとすると固まってしまいます。
原因は何でしょうか。単にフォントの入れすぎでしょうか。
XPで,メモリーは512MBなんですけど・・・。
0286デフォルトの名無しさんNGNG
>>285
CPU使用率表示させながら実行してみ。コードが問題か力不足かがわかる。
漏れが前作らされたの、ファイル開くのにCPU100%で10分以上頑張ってたよ。
ちなみにP4/256MBメモリはたいして消費してなかった。
0287デフォルトの名無しさんNGNG
>>286
ふぅん。
0288デフォルトの名無しさんNGNG
VBAでテキストボックスを指定した位置に表示させる事って
できますか?できる場合は、どうすればできるでしょうか?
0289デフォルトの名無しさんNGNG
>>288
top
left
0290デフォルトの名無しさんNGNG
VBAでVLOOKUPとか使えますか?
こういう関数の呼び出し方とかはどこを見れば載ってるんでしょうか
0291デフォルトの名無しさんNGNG
>>290
WorksheetFunction

実際にこれで使えるかどうかは知らんが、まぁテストして見れ
0292デフォルトの名無しさんNGNG
>>290
Excel VBAのヘルプに
 Visual Basicで使用できるワークシート関数一覧
という項目がある。
ここにVLOOKUPものってる。
呼び出しは>>291の通り。
0293デフォルトの名無しさんNGNG
エクセルVBAで行に対して名前定義を行ったのですが
(行全体を選択し名前ボックスに名前をつけました)
その名前の行の高さやその行が何行目かなど取得できますでしょうか?
ご教授ください。
よろしくお願いしますm(__)m
0294トカNGNG
Private Sub CommandButton1_Click()
ActiveSheet.Shapes.AddShape(msoShapeRectangle,100#,50,100,90).Select
Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD1
Selection.ShapeRange.ThreeD.Deppth = 50#
End Sub
0295デフォルトの名無しさんNGNG
質問です。

AddLineで書いた線をSetステートメントでオブジェクトを参照するように
したいのですが、やり方がわかりません・゜・(ノД`)・゜・。

線を7つぐらい引いてそれをグループ化したいだけなのですが…

教えてください。よろしくお願い致します。
0296デフォルトの名無しさんNGNG
>>293
Sub NameTest()
  Const AreaName As String = "test"
  MsgBox Names(AreaName).RefersToRange.Row & "行目"
  MsgBox "行の高さ:" & Names(AreaName).RefersToRange.Height
End Sub
0297デフォルトの名無しさんNGNG
>>295
Sub GroupLine()
  Const LineMax = 7
  Dim ShapeLines(LineMax - 1)
  
  For i = 1 To LineMax
    ShapeLines(i - 1) = "Line " & i
    ActiveSheet.Shapes.AddLine(10, i * 20, 110, i * 20).Select
    Selection.ShapeRange.Name = ShapeLines(i - 1)
  Next
  ActiveSheet.Shapes.Range(ShapeLines).Select
  Selection.ShapeRange.Group.Name = "Group 1"
End Sub
0298デフォルトの名無しさんNGNG
ところでVBAエキスパート受けた人っています?
ベーシックとかスタンダードじゃ意味ないと思うけど、自己マンのために自腹でとろうかなって。
読んだピンクのテキスト本棚に並べてさらに自己マンw
ttp://www.vbaa.jp/index.htm
0299デフォルトの名無しさんNGNG
そんな資格初めて聞いた・・・
無名過ぎて少なくとも開発現場では評価されないだろうな。
0300293NGNG
>>296さん
ご指導ありがとうございます!
上手くできました!!
0301デフォルトの名無しさんNGNG
>>299
て言うか、有名でも VBA○○ じゃ評価は低いだろ。
0302デフォルトの名無しさんNGNG
個人的にはperlとVBAこそが効率化の鍵だと思ってる。
0303298NGNG
できたばっかりの資格だし。ただ下手なガイド本より試験対策本の方が漏れには
勉強になりました。MOUSもしかり。漏れのとこは設計書なんかにExcel、Access使うことが
多いので>>302の言う事は一理ある気がしまつ。資格としては「(w」程度でしょうけど。
0304デフォルトの名無しさんNGNG
非定型業務で使い捨てプログラム書くときは重宝する>VBA
「この作業だと2時間くらいですかね〜」といいつつ、マクロで
ちゃちゃっと終わらせてあとはのんびり。30分くらい早めに
終わったことにしてみせたりもいい。
0305デフォルトの名無しさんNGNG
暇そうでいいね。










まあ、所詮そういう仕事しか与えてもらえないわけだ...。
0306デフォルトの名無しさんNGNG
>>305
少なくとも20000行のエクセルシートを手で一行ずつ処理するような雑用にかまけてる暇は無いですね。

そう言う単調だけれど楽な仕事って憧れます。
0307デフォルトの名無しさんNGNG
>>306
ププッ、煽られて必死になるのはわかるけど、Excel で 20000 行と書いてる時点でアフォ丸出し。

Access とか勉強した方がいいぞ。
0308デフォルトの名無しさんNGNG
>暇そうでいいね。

無色に言われたかない罠
0309デフォルトの名無しさんNGNG
>>307
現場を知らない人間の書き込みだな。
引きこもりか、まぁ、せいぜい日曜プログラマだな。
0310デフォルトの名無しさんNGNG
>>308-309
ごめんな、そこまで必死になられるとは思わんかったよ。
せいぜい、VBA 自慢しててください。(ぷぷっ
0311デフォルトの名無しさんNGNG
そういや昔はアクセスなんてなんに使うんだ?とか思ってたなあ。
0312デフォルトの名無しさんNGNG
>>310
・・・あおりしかできないヤツか。
お前、カッターだけは買うなよ。
0313カッターなんか今更買うやつなんかいるのか ?NGNG
>>312
キミ、すごいね。

VBA と煽りができるんだから、もう充分だな。(ぷぷっ
0314デフォルトの名無しさんNGNG
>>313
どっかで配ってるか?カッターって。

確か小中学校では支給してもらえたが。


なお、会社にあるそれを私物化するのは犯罪でつ。
0315デフォルトの名無しさんNGNG
名前:カッターなんか今更買うやつなんかいるのか ? 投稿日:04/06/05 17:49

ご苦労様です
0316デフォルトの名無しさんNGNG
>>314-315
普通の家ならあるだろ ?
ヒッキーだとそんなこともわからんかもしれないけどな。(ププッ
0317デフォルトの名無しさんNGNG
>>316
その家にあるってのは誰かが買ってきてるからあるんだよ?
0318デフォルトの名無しさんNGNG
>>317
そうだよ、だから「今更」買う必要はないんだけど、何か ?
0319デフォルトの名無しさんNGNG
>>318
独り暮らしとかしたこと無いんだね。
親に依存している厨房と。
0320デフォルトの名無しさんNGNG
ぷぷっ、誰かさん ≡ 親 としか思えないのか...。

別に「誰か」って言うのが、一年前の自分でもいいんだよ。
0321デフォルトの名無しさんNGNG
なぁ、ぴろゆきタソ
この板もID強制表示にしてくれよ
0322デフォルトの名無しさんNGNG
いいかげん他所いってやってくれ・・・
0323デフォルトの名無しさんNGNG
>>320
1年前の自分は別人ですか・・・。
アブナイ人ですね。
お前は、カッターだけは買うなよ、と。
0324プログラマがコメント書く理由の一つだろ ? (一年前の自分 = 別人)NGNG
>>323
どこに「別人」と書いてあるのか示してくれないか ?
まさか、「誰か」≡「自分以外の別人」と思ってるわけ ? (ププッ
0325デフォルトの名無しさんNGNG
誰だ!って俺か!!!

ってのが笑い話になるように、「誰か」には自分を含めないのが一般的だな。
もしかして受け狙いだったのか?
0326デフォルトの名無しさんNGNG
お前の意見 ≠ 一般的
0327デフォルトの名無しさんNGNG
やう゛ぁい。
324 は誰にもかまってもらえないさみしい男だぞ。
2ちゃんねるでタタかれて喜んでるヤツだから〜。

おまえ、カッター買って、バスジャックするようなマネだけはやめとけよ。
0328デフォルトの名無しさんNGNG
>>327
> おまえ、カッター買って

だから、「今更カッターなんか買う必要ない」んだけどな。
わざわざ自分が >>315 で書いてまでいるのに、必死過ぎてわけわからんようになってるんだろうな...。(藁
0329デフォルトの名無しさんNGNG
ドキドキしながら、時々このスレ、リロードしてる328が
目に浮かぶようですね(w

世の中でここだけだからなぁ、
328が相手してもらえるのは。
0330デフォルトの名無しさんNGNG
>>328

ごめんな
>>315は漏れだよ
ついでに>>308も漏れ

つーか、いい加減止めないか!?
0331デフォルトの名無しさんNGNG
>>330
継続は力なり
そんな風に飽きっぽいからVBAプログラマはバカに
されるんだぞ、と
0332今日は有給だぁ...、午前だけなんだけどな。NGNG
>>329
ごめんな、キミほど暇じゃないから >>328 書いた後寝ちまったよ。
キミは、>>329 書いた後も必死にリロードしてたんだろうな。(藁
0333デフォルトの名無しさんNGNG
>>332
たっぷり寝る時間があってうらやますぃですね。

0334デフォルトの名無しさんNGNG
>>333
激しく同意。
0335デフォルトの名無しさんNGNG
>>328
お前の日本語はわからんな。
「自分」って誰のことを指してるんだ?
0336デフォルトの名無しさんNGNG
VBAでプロパティや変数を参照するときに、"!" と "."の二種類で参照が
可能ですが、何か意味が違うのでしょうか?
また、使うならどちらを使ったほうがいいですか?
0337オレモナー。NGNG
>>333-335
必死すぎ。
昼間から、我慢できずに 2ch かよ。(藁
0338デフォルトの名無しさんNGNG
セルの範囲を指定して読み込むプログラムを作ってるんですけど、
仮にDataRangeという変数に範囲終了セルを代入した場合、
Do While ActiveCell.Range("A1") <> "DataRange"
・・・
Loop

みたいな感じの条件文にしたいんですけどうまくいきません。
(ちなみに上のような文だとセルにDataRangeという文字が入っているところまでと言う意味ですよね・・・)
じゃなくて、変数にB5のように入れてセルB5まで読み込むというふうにするにはどうすればいいでしょうか?よろしくお願いします。
0339デフォルトの名無しさんNGNG
>>337
22:00は夜だと思うぞ。
0340デフォルトの名無しさんNGNG
>338
Addressプロパティを使えばよいのでは。
Do While ActiveCell.Range("A1").Address<>DataRange.Address
ただこれだとDataRangeのひとつ手前までしか処理されないが。
0341デフォルトの名無しさんNGNG
>>339
333 名前:デフォルトの名無しさん[sage] 投稿日:04/06/08 11:12
0342デフォルトの名無しさんNGNG
>>337
小学校行って時計の読み方から勉強しようね。
0343デフォルトの名無しさんNGNG
>>337
我慢できずに、朝から書き込んでる香具師の言う台詞か(ワラ
0344デフォルトの名無しさんNGNG
>>343
warata
0345デフォルトの名無しさんNGNG
>>337
お前が我慢してるからって、みんなが我慢してるわけじゃないんだぞ。
「2ちゃんねる見て〜」→「でも、我慢しなくちゃ」なんて思ったことないぞ(w

お前だけだよ、「我慢」してるヤツは(プ
0346338NGNG
>>340
できません。。。
0347デフォルトの名無しさんNGNG
>>338
質問に要領をえないが、セルを順番に調べたいなら
Dim DataRange As Range
Dim rng As Range
Set DataRange = Range(Range("A1"), Range("B2"))
For Each rng In DataRange
MsgBox rng.Value
Next rng
0348デフォルトの名無しさんNGNG
>>342-345
自演ご苦労。
もう少し、時間を空ければいいと思うが、君には難しいみたいだね。(藁

>>338
>>347 が正解だと思うが、ゴリゴリ回したいなら...

Private Sub test()
  Const StartCell As String = "B1"
  Const EndCell As String = "B5"
  Dim Cell As Range
  Worksheets("Sheet1").Activate
  Worksheets("Sheet1").Range(StartCell).Activate
  Do
    MsgBox ActiveCell.Value
    If ActiveCell = ActiveSheet.Range(EndCell) Then Exit Do
    ActiveCell.Offset(1, 0).Activate
  Loop
End Sub

と言う手もある。
0349デフォルトの名無しさんNGNG
>>348
自分のことをバカにする人はひとりしかいないと。
幸せな人だなぁヽ(´ー`)ノ
0350デフォルトの名無しさんNGNG
>>349
ねぇ〜

ちなみに>>344は漏れ
0351脳内二重人格ですか ? (藁NGNG
349 名前:デフォルトの名無しさん[sage] 投稿日:04/06/12 00:10
350 名前:デフォルトの名無しさん[sage .] 投稿日:04/06/12 00:20

いつも仲がいいみたいだね。
ニヤニヤ。
0352デフォルトの名無しさんNGNG
ねぇ〜
0353デフォルトの名無しさんNGNG
現在プログラム板にはHSP関連スレに凶悪な荒らしどもが住みついています。

・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる

などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?

【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0354デフォルトの名無しさんNGNG
>>351
我慢できずに1時間後ですか(w
0355デフォルトの名無しさんNGNG
350 名前:デフォルトの名無しさん[sage .] 投稿日:04/06/12(土) 00:20
351 名前:脳内二重人格ですか ? (藁[sage] 投稿日:04/06/12(土) 00:35

ってか、藻前が自演くさい(w

あと、脳内二重人格ってなんだろう?
脳外二重人格ってのがあるのか
0356デフォルトの名無しさんNGNG
「1111ぬるぽ2222」という感じで文字列がA1に入っている場合・・

これをぬるぽを置換で消して、A1に「1111」A2に「2222」という
ふうに分けたいんです。


Sub ぬるぽ()

Cells.Replace What:="ぬるぽ", Replacement:=" "


↑のようにしてタブでセルを分けて、別シートにコピーしようとしたが、無理っぽい。
なにか方法はないでしょうか・・。
0357デフォルトの名無しさんNGNG
>>354-355
> 我慢できずに1時間後ですか(w

ププッ、自分は3時間半も我慢したってか ?

>>356
Option Explicit

Private Sub Test()
Dim A() As String

A = Split(ActiveCell.Value, "ぬるぽ", 2)
ActiveCell.Value = A(0)
ActiveCell.Offset(1, 0).Value = A(1)
End Sub
0358デフォルトの名無しさんNGNG
337 名前:オレモナー。[sage] 投稿日:04/06/09(水) 23:00
348 名前:デフォルトの名無しさん[sage] 投稿日:04/06/11(金) 23:47

う〜ん、我慢できないと言われたのがよっぽどくやしかったのか、
2日我慢してるな〜(ワラ
さぞかし辛かったでしょうね;;

我慢してるのはお前だけだよ(ププ
0359デフォルトの名無しさんNGNG
うお、一発でできました。悩んだのに!

357氏。ありがとうございます!!!
0360デフォルトの名無しさんNGNG
>>356
解決したみたいだけど
ワークシート関数でやらずに
VBAでやりたい理由でもあんの?
0361デフォルトの名無しさんNGNG
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
脳内二重人格脳内二重人格脳内二重人格脳内二重人格脳内二重人格
0362デフォルトの名無しさんNGNG
>>360
356氏ではないけど、ワークシート関数だったらどうやるの?
スレ違いスマソだけど、教えて下さい。
0363356です。NGNG
>360
いや、関数でもできるならOKなんですが。
たぶん無理?。VBAでやるとカコイイし。

357氏、厨相手の片手間にさらりとコード書いちゃうところがすごいです。
0364デフォルトの名無しさんNGNG
『[脳内二重人格』という名言!を残した357さんはすごいですね!
ぼくもそう思います!!!!
0365デフォルトの名無しさんNGNG
>>363
ごめん、よく読んでなかったよ
「A1に入ってる内容をA1とA2に」っていうのは関数じゃむりでした
「A1に入ってる内容をA2とA3に」ってのなら可能だけど

0366デフォルトの名無しさんNGNG
>>358=>>361=>>364
やっぱり我慢できないみたいね。
ずっと PC の前でリロードしてたんじゃないの ? ププッ

>>359
どういたしまして。

>>365
>>356 さんが、「別シートにコピー」とか書いてるから、別シートに結果を入れるならがんばればワークシート関数でできると思う。
でも、find ワークシート関数は文字列が見つからない時に #VALUE! とかを返してきたりするから、きちんとやろうとすると結構面倒な予感。
0367デフォルトの名無しさんNGNG
テキストデータ(辞書)で5万行ぐらいあるんですが、置換を行う
場合、VBA、WSH(VBS/JSript)、PERLではどの程度速さが違うんで
しょうか。簡単な正規表現でやる場合なのですが、、、

というのも、EMEDITORで作業をしたら、正規表現にしたとたん
とんでもなく遅くなってしまいますた。てか、一気に変換できず
初めは千行ごとにやらないとフリーズ状態です。
WIN XPでつ。
0368デフォルトの名無しさんNGNG
>>367
VBAで正規表現使えたっけ?と言うツッコミは無しで考えた方が良いですか?
0369デフォルトの名無しさんNGNG
「脳内二重人格」と「二重人格」の違いはなんですか?
0370デフォルトの名無しさんNGNG
>>368
そういやないですね。
Wordでの置換の正規表現モドキとしてください。
0371デフォルトの名無しさんNGNG
>>367
どうして自分でやってみないのですか?
0372デフォルトの名無しさんNGNG
おたずねします。
windows2000+EXCEL2000SR-1ですが、webbrowserコントロールをuserformに貼り付けてstopメソッドを使用すると、以下のエラーが出ます。

実行時エラー-2147221500(80040004)
stopメソッドは失敗しました。:IWebBrowser2オブジェクト

セルに貼り付けてstopメソッドを使用した場合は上記エラーは出ません。これは何故なんでしょうか?
0373デフォルトの名無しさんNGNG
うお、Splitなんて関数があったのか。ガビーン。
先週半日かかった仕事が30分で終わってたよ。orz
0374デフォルトの名無しさんNGNG
使用エクセルは2000です。
小数点第3位を四捨五入したいのですがワークシートで=ROUND(0.005,2)だと
きちんと0.01と四捨五入されるのですが、VBAで
 Range("A2").Value = Round(0.005, 2)
とやると5で切り捨てられ0、
 Range("A3").Value = Round(0.006, 2)
とやると6が切り上げられ0.01になります。
VBAの場合のきちんとした四捨五入方法教えて下さい。
0375デフォルトの名無しさんNGNG
特定のフォルダ内にあるcsvファイルの名前を全て習得し配列に格納したいのですがうまくいきません。
下記のような物を作りました。

Dim test1() String
Dim test2 String

FName = "C:\genka\" + 年 + 月 + "\"
test1() = Dir(FName + "*.csv", vbNormal)
test2 = Dir(FName + "*.csv", vbNormal)

test1()はデバック時にコンパイルエラー(配列には割り当てられません。)と出てしまいます。
test2はgenkaフォルダ内のcsvで名前の順で最初のファイル名が格納されているようです。

どのようにすれば巧く格納できるでしょうか?
ご教授よろしくお願いします。
0376デフォルトの名無しさんNGNG
>375
ヘルプでredimとdirの使い方をしっかり嫁
0377375NGNG
いろいろいじってたら出来てしまいました。
お騒がせしました。
0378デフォルトの名無しさんNGNG
>>374
Function dRound(Expression As Double, NumDecimalPlaces As Integer) As Double
 Dim s As Double
 s = 10 ^ NumDecimalPlaces
 dRound = Int((Expression + 0.5 / s) * s) / s
End Function

Sub test()
 Range("A2").Value = 0.004: Range("B2").Value = Round(0.004, 2): Range("C2").Value = dRound(0.004, 2)
 Range("A3").Value = 0.005: Range("B3").Value = Round(0.005, 2): Range("C3").Value = dRound(0.005, 2)
 Range("A4").Value = 0.006: Range("B4").Value = Round(0.006, 2): Range("C4").Value = dRound(0.006, 2)
End Sub

0379デフォルトの名無しさんNGNG
私の頭ではさっぱり分からないのでお知恵をください。

処理したい内容がシート1上にあり、これを処理してシート2に結果を書いていく
というプログラムです。

処理したい内容が膨大なので(5万5千行ほどある)処理中に
今の処理中の行を表示したいのです。”現在”+A+”行を処理中です。” とか。

ただ、セル上には表示したくないので MSGBOXを使おう
と思ったんですが、これだと表示するたびにOKボタンを入力しないと
制御が次へ行きません。

MSGBOX で入力待ちにせず、ただ、表示だけする方法や
何か他にいい方法はないもんでしょうか?
0380デフォルトの名無しさんNGNG
>>379

>>307 を参考にするといいYO!!
0381デフォルトの名無しさんNGNG
>>379
>>380の意見もまぁ考慮の余地はあるんだけど、、、
これは?(ただし俺はこれを実行したことは無い。動くかどうかのテストはそっちでやってくれ)

様は処理中であることをユーザーに示しておきたいってことだよね。


マクロ処理中にメッセージボックスで処理中の表示をする

sub main
DoEvents  '読込ダイアログ表示
他のサブルーチンの呼び出し
Unload UserForm1
endsub

Private Sub UserForm_Activate()'ユーザーフォーム本体
  MAIN
End Sub


Sub SHOWFORM1()
  '読み込み開始ダイアログを表示
  UserForm1.Show'→ユザーフォームに”処理中”
End Sub

0382デフォルトの名無しさんNGNG
>>379
これとか。
http://www.officetanaka.net/excel/vba/tips/tips13.htm
0383デフォルトの名無しさんNGNG
皆さんありがとうございました。

ApplicationオブジェクトのStatusBarプロパティ
これを使ってみようと思います。 
0384デフォルトの名無しさんNGNG
>>382
わしもそれがいいと思う。
0385374NGNG
>>378
CLng使ってきちんと四捨五入できるの作ったのですが
そちらの方が便利ですね

ありがとうございました。
0386デフォルトの名無しさんNGNG
Webサーバー上のCSVファイルをVBA(Excel)を使って読み込むにはどうするのが賢明ですか?
ftpは使えないとして・・。
0387デフォルトの名無しさんNGNG
シェイプを移動させたときのイベントを受けることはできますか?
Excel2000 です。
例)四角形を移動させたときに、他の四角形と重なったら警告する、等。
0388デフォルトの名無しさんNGNG
>>386
ファイル名にURL指定じゃダメ?
0389386NGNG
まさか!?と思い、やってみたんですが、やっぱりできません。
0390デフォルトの名無しさんNGNG
>>389
Workbooks.Open Filename:="http://kakaku.com/kakakudl/SPEC_winn.csv"
0391デフォルトの名無しさんNGNG
>>390
その csv ってまだあったんだ!?
価格.com のリニューアルの時にトップページにあった
「業者の皆様へ」とかいうリンクがなくなったから、
てっきりダウソできなくなったものだとばかり・・・。

vba とは関係ないがアリガ�d。
0392デフォルトの名無しさんNGNG
ACCESSのクエリーで、「ある日付に対し○ヶ月後の月末 例:平成16年6月30日の4ヶ月後・・・平成16年10月31日」を指定する関数をつくりたいのですが、是非ご教授下さいませ。
0393デフォルトの名無しさんNGNG
>>392
x月y日に対してzヶ月後の月末とは、(x+1+z)月1日の前日であるからして・・・。
0394デフォルトの名無しさんNGNG
http://home.h08.itscom.net/marinos/cherry_1.htm

すげぇ・・・最近の母親は小豆を知らんのか・・・。
0395名無しさん@お腹いっぱい。NGNG
VBAってFor文の中で任意のところでスキップさせるには
どうすればいいのですか?
0396デフォルトの名無しさんNGNG
>>395
if
0397デフォルトの名無しさんNGNG
>>395
exit for
0398デフォルトの名無しさんNGNG
>>395
Loopを抜けないのであれば Goto ラベル
0399デフォルトの名無しさんNGNG
>>398
構造化に反しない程度に。
0400デフォルトの名無しさんNGNG
小数点以下第5位で四捨五入するようなプログラムを作ったんですが
小数点以下が0の場合表示されません。
たとえば結果が500の場合セルで500.0000ではなくそのまま500と表示されます。
小数点以下の0を表示させる方法はありませんか?
0401デフォルトの名無しさんNGNG
>>400
セルの表示形式を0.00000にしちゃだめなの?
0402デフォルトの名無しさんNGNG
やべっ、0が1つ多かった・・・。
0403デフォルトの名無しさんNGNG
>>400
セルの表示正式の変更を自動マクロで記録すれば、VBAで
どうすればいいか分かる。
0404400NGNG
>>401
ご返答どうもありがとうございます。
その方法を試してみたのですが
計算をし直すとき前回の結果は消し去るようにしたので
セルの表示形式の変更もなくなってしまっていたのです。

>>403
ありがとうございました。
自動マクロを使って何をやってるかわかり
ゼロの表示をプログラムからできるようになりました。








0405デフォルトの名無しさんNGNG
Excelに貼り付けた画像ファイルの中身を、マクロで変更させる方法がいまいち分かりません。

画像オブジェクト . 画像プロパティ =”ファイル名”

みたいな形を取るんだと思いますが、そのオブジェクトとプロパティの設定させるのがうまくいきません。

VBオブジェクトでImageを配置して、その中身を変えるというのなら出来るのですが、
裏の画像が透けて見えるような処理が出来ないのと、
クリックしたときに地の色が出るので今やろうとしてる作業に不向きなんで・・・
0406デフォルトの名無しさんNGNG
配列に値を設定し、
Dim xvalues(10000) As Double
Dim yvalues(10000) As Double
・・・

それをグラフのX軸、Y軸として表示したいんだけど、
直接設定はできないみたいですね
.Value = yvalues
.XValues = xvalues

どうすればよいのですか
0407デフォルトの名無しさんNGNG
誰か〜アクセス2000でお助けを・・・
レポートで重複したデータを非表示にするVBAの構文ってしりませんかー
レポートで重複したデータを非表示にするプロパティいじってもうまく
いかないもんで・・
今日一日かけて色々やったけどさっぱできんかった・・・
お助けを・・・
0408デフォルトの名無しさんNGNG
>>407
標準機能で納得できないのなら、どういう機能がほしいのか詳細に書くべきだな。
なお標準機能の使い方については他をあたってください。
0409デフォルトの名無しさんNGNG
すいません お知恵をください。

塗りつぶしてあるセルだけ、他のワークシートにコピーするような式ってありますか?
赤とかオレンジとか。
0410デフォルトの名無しさんNGNG
>>409
とりあえずこんな感じで。

 Dim UsedCell As Range, CheckCell As Range
 
 Set UsedCell = ActiveSheet.UsedRange
 Application.ScreenUpdating = False
 Sheets("Sheet2").Activate
 For Each CheckCell In UsedCell
   If CheckCell.Interior.ColorIndex <> xlNone Then
    CheckCell.Copy
    Range(CheckCell.Address).Select
    ActiveSheet.Paste
   End If
 Next
 Application.CutCopyMode = False
 Application.ScreenUpdating = True
 Set UsedCell = Nothing

てきとーに変えて使ってください。
0411407NGNG
>>408
失礼しやした。
非常に複雑な構成でして・・・
一言で言えば、レポートで重複したデータを非表示にするVBAっす。
具体的にいうと
テーブルAとテーブルBという二つのテーブルがあります。
テーブルAは「問題年度」「問題番号」「問題の中の選択肢」
というフィールドがあります。
たとえば「平成14年度、第5問、選択肢A」で上記三フィールドを使用します。
テーブルBには「問題年度」「問題番号」「問題全文」
というフィールドがあります。
「平成14年度、第5問、甲は〜をし、こうした。選択肢A、選択肢B(略)」
で上記3フィールドを使用します。
このテーブルAとテーブルBを「問題年度」「問題番号」で共通するものをリンクしております。
で、レポートとしては
「平成14年度」「第5問」「選択肢A」
「問題全文」
「選択肢A」
「平成14年度」「第5問」「選択肢A」
「選択肢B」
「平成14年度」「第5問」「選択肢A」
「選択肢C」
「平成14年度」「第6問」「選択肢A」
「問題全文」
「選択肢A」
というように表示したいのですが・・
レポート上で「問題全文」のテキストボックスの重複非表示の設定を「はい」にしても
「問題全文」が「選択肢A」〜「選択肢C」の上に毎回表示されてしまうんです。
そこで、これをVBAでなんとかできんものかと・・・
よろしくお願いします。
0412デフォルトの名無しさんNGNG
クエリじゃだめなん?
0413デフォルトの名無しさんNGNG
>>411
とりあえず、すっげーわかり辛い
0414デフォルトの名無しさんNGNG
>>411
そのレポート、さっぱりわからんので
俺としては

「平成14年度」「第5問」
 「問題全文」
    「選択肢A」
    「選択肢B」
    「選択肢C」

「平成14年度」「第6問」
 「問題全文」
    「選択肢A」

と表示してほしい。
0415409NGNG
>>410
ありがとうございます!さっそくやってみます
お忙しいところすいませんでした。
0416デフォルトの名無しさんNGNG
現在選択されている図形オブジェクトを判断するにはどうしたら良いでしょうか?
0417デフォルトの名無しさんNGNG
>>416
TypeName(Selection) とか Selection.Name とか。
0418デフォルトの名無しさんNGNG
http://www.kit.hi-ho.ne.jp/~twalker/img-box/img20040622234717.jpg

スゲー
0419●=3(゜д゜)いんふる ◆1xsES22i66 NGNG
てすと
0420416NGNG
>>417
ありがとうございます。
Selection.ShapeRange
で解決しました。
ハマってた原因は複数のオブジェクトが選択される可能性があるのに気づかなかったことでした。


0421デフォルトの名無しさんNGNG
Excel97だと、WhatsThisHelpがFalseの時に「F1」で設定しているヘルプが表示されるのに
Excel2000以降だとTrueじゃないと表示されないのは仕様でしょうか?
0422デフォルトの名無しさんNGNG
AccessVBAで困ってます。
コンボボックスにDBから検索してきたものを二列表示させているのですが
コンボボックスを選択すると左側の列が表示されます。
二列目の項目を選択後にコンボボックスに表示させるにはどのようにすればよいのでしょうか?
ご教授よろしくお願いします。
0423デフォルトの名無しさんNGNG
コンボックス名.column(列番号)

※列番号は左端から0,1,2・・・なので2列目は1
0424デフォルトの名無しさんNGNG
ExcelVBAで神々の方からの回答お願いです。
スピンボタンで画像が次々とめくれるようにするにはどうしたらいいでしょうか?
例えば写真つきの社員名簿みたいのを想像してください。
ユーザーフォームにテキストボックスを配置してそこには文章を表示するように
出来たのですが、画像をどうしたらいいのか悩んでいます。
loadpicture関数を使って出来そうなのですが俺の技術では無理っぽいっす。
神様方、助けてやってください。
参考になるWebのリンクでも結構ですので貼り付けてください。
たのんます。
0425デフォルトの名無しさんNGNG
>>424
やってみたコードを提示してみてください。
0426424NGNG
解決しました。
0427デフォルトの名無しさんNGNG
>>424 = 426
"解決しました"じゃねぇだろ。どのように解決したか位書けよ。
0428デフォルトの名無しさんNGNG
>>427
知るか氏ね。
0429デフォルトの名無しさんNGNG
              ノ∩
           ⊂ >>
            /( 。A。 )っ←>>424=426=428
            U ∨ ∨
         ・@;∴‥
   ∧_∧ ∩  :: :.
  ( ・∀・)/  :: ::
  (つ   /  :: :'
  人⌒l ノ  :: ::
  し(_)

0430386NGNG
>>390
サンクス!
0431デフォルトの名無しさんNGNG
質問なのですが、ダブルクォーテーションを文字列で表示させたいんですが、どうすればいいのでしょうか?
0432デフォルトの名無しさんNGNG
>>431
MsgBox Chr$(&H22) & "ダブルクォーテーションを表示させたい !!" & Chr$(&H22)
0433デフォルトの名無しさんNGNG
>>431
""""
0434デフォルトの名無しさんNGNG
>>431
Chr(34)
0435デフォルトの名無しさんNGNG
431さんに便乗ですが質問させてください。

431さんのようにCONCATENATE関数や&で繋ぐ場合そのままだとうまく
いかないのでxlsファイル上で見えるようにするには、例えばほかのワークシート
に置いておいてそこから絶対参照を使って上記の関数などで繋げれば表示される
ようになりますが、それをcsvやtxtなどで保存すると"が"""になってしまっています。

しょうがないので現状では文字列は他の記号で保存をして後でエディタ等で置換
をしているのですがVBAなどで一気に処理できるようにはならないでしょうか?
VBAは初心者です・・
0436デフォルトの名無しさんNGNG
>>433
これがなんで4つか今だ理解できない漏れ。他にいろんなパターン打ってみたけど
いったいどうやって判定してるのだか。
0437デフォルトの名無しさんNGNG
" "" "
0438デフォルトの名無しさんNGNG
なんで3つじゃないんでつか?
MsgBox """でエラー
MsgBox """"で「"」???
0439デフォルトの名無しさんNGNG
>>438
Cで言うとこの原理だ。"\\" -> \
0440デフォルトの名無しさんNGNG
>>438
「仕様」です。
0441デフォルトの名無しさんNGNG
>>440
VBってそう言う言語だな。
思想や指向はなく、ただただ仕様と。
0442デフォルトの名無しさんNGNG
すびばせん。

Excelの既存のメニューの動作を乗っ取りたいんですが、
方法があれば、教えてください。

Wordだと、[ツール]→[ユーザー設定]→[コマンド]タブの
「すべてのコマンド」の中にある項目と同じ名前のメソッドを
VBAで作るとオーバーライドできますが、
Excelで同じようなことはできますか?
0443デフォルトの名無しさんNGNG
自動でつけられたグラフの名前を変更するにはどうすればいいですか?
0444名無しさん@そうだ選挙に行こうNGNG
計算というシートのL1からL22までのセルを
シートが保護されている記録というシートに行と列を入れ替えて
貼り付けます。
貼り付ける場所はA列の一番したです。

なぜか実行時エラー1004 rangeクラスのpastespecialメソッドが失敗しました。
と出たり出なかったりします(交互に)。
分かる方いません?
明日の課題が。。。(汗)

Sub module1()
Sheets("計算").Select
Range("L1:L22").Select
Selection.Copy
Sheets("記録").Select
'ActiveSheet.Unprotect password:="unlock"
下端 = Range(Cells(3, 4), Cells(3, 4)).End(xlDown).Row + 1
範囲 = "A" & 下端
Range(範囲).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveSheet.Protect "unlock", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("計算").Select
ActiveWorkbook.Save '上書き保存
Application.DisplayAlerts = False 'メッセージを出さない
'ActiveWorkbook.Close '閉じる
End Sub
0445444NGNG
分かりました。
保護の解除を先頭にもってきたらOKになりました。
お騒がせしました。

Sub module1()

Sheets("記録").Select
ActiveSheet.Unprotect password:="unlock"
Sheets("計算").Select
Range("L1:L22").Select
Selection.Copy
Sheets("記録").Select
下端 = Range(Cells(3, 4), Cells(3, 4)).End(xlDown).Row + 1
範囲 = "A" & 下端
Range(範囲).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveSheet.Protect "unlock", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("計算").Select
ActiveWorkbook.Save '上書き保存
Application.DisplayAlerts = False 'メッセージを出さない
'ActiveWorkbook.Close '閉じる


End Sub
0446デフォルトの名無しさんNGNG
保護のオプションによっては、
保護を解除しなくても、VBAで変更かけることができるぞ。
0447デフォルトの名無しさんNGNG
シートに含まれているマクロを開放することの出来るマクロを作成することは可能でしょうか?
0448デフォルトの名無しさんNGNG
>>447
できます。
0449デフォルトの名無しさんNGNG
ブックに含まれているマクロの一覧を得るにはどうしたら良いでしょうか?
0450デフォルトの名無しさんNGNG
>>442
私も知りたいのでしばらく調べてたんですが、よくわかりません。
↓は参考になりませんか?
http://www.asahi-net.or.jp/~ef2o-inue/kankyo/sub02_02_02.html
0451デフォルトの名無しさんNGNG
すいません
ちょっと方法が思いつかないので質問させてください

チェックボックスを一括してコレクションに突っ込みたいわけですが

With chkboxCollection
.Add item:=CheckBox1
.Add item:=CheckBox2
.Add item:=CheckBox3
.Add item:=CheckBox4
.Add item:=CheckBox5
.Add item:=CheckBox6
.Add item:=CheckBox7
End With

では効率が悪すぎます
かといって

For intCount = 1 To intChkcount
chkCollection.Add item:=OLEObjects("CheckBox" & intCount)
Next intCount

とするとチェックボックスではなく"checkbox1"という「文字列」が
突っ込まれてしまいます

良い方法はないでしょうか
0452デフォルトの名無しさんNGNG
Dim obj as Object
With chkboxCollection
For Each obj In Oleobjects
If left(obj.name,8)="CheckBox" Then .Add item:=obj
Next obj
End With
0453初心者NGNG
フォームのコンボボックス(例:"Drop down 1")の
コントロールの書式設定の入力範囲
をプロシージャで変更(例:sheet2!$B$2:$B$3)するには
どうすればよいのでしょうか?
0454デフォルトの名無しさんNGNG
>>453
取りあえずマクロ記録。
0455デフォルトの名無しさんNGNG
こんばんは。

VBAでワークシートをコントロールするプログラムを開発しているのですが、
ワークシート上に作成したピボットテーブルの行のグループ化のコントロールの所で
詰まってしまいました。

Range("A5").Select
Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, False)

で、グループ化そのものはできたのですが、その後、グループ化の状況を確認するために
グループの情報を得る方法がどうしてもわかりません。
どなたか、教えてください!
0456デフォルトの名無しさんNGNG
プロジェクトの保護について教えてください。
プロジェクトにパスワードを設定する方法だと、世の中には
パスワードを破るソフトがあるようなので、あまり信頼できません。
Excel VBA Lockっていうシェアウェアでプロジェクトの保護を
破られないようにすることが出来るそうですが、これはどれくらい安全
なんでしょうか?(100%破られることは無いと考えて良いのでしょうか?)
もし、そうならば、利用したいのですが。
0457デフォルトの名無しさんNGNG
テキストファイルを読み込んで、半角スペース区切りに
データの区切りを行いたいと思います。

  データ1 データ2 "データ3" データ4

データ3となっている部分は、そのまま半角スペースを目印に
区切るとデータ3の途中で分割されてしまいます。
すでにテキストファイル上でも"と"の間という目印はありますが
どのように処理をすればうまくデータ区切りができるでしょうか。
ご教授をいただければ幸いです。
0458デフォルトの名無しさんNGNG
元のテキストデータはどうなってるの?
0459デフォルトの名無しさんNGNG
>>458

年月日時分秒 名前 "コメント" 生息地
20040723123030 名無しさん "もう だめぽ" 浜松市

のようになっているものを、

年月日時分秒,名前,"コメント",生息地
20040723123030,名無しさん,"もう だめぽ",浜松市

という区切りにしてExcelのシートに自動的に貼り付ける
仕掛けを作りたいのです。

"コメント"の文字数が変化するので、
何文字目で区切るという芸当は使えません(泣
0460デフォルトの名無しさんNGNG
基本的にスペースで分けて、
スペースの次にダブルクォーテーションがある場合は、
ダブルクォーテーションの次にスペースがあるところまでを一つにすれば?
0461デフォルトの名無しさんNGNG
エクセルのメニューの
「ファイル」「開く」を使うのじゃなくて、
「データ」「外部データの取り込み」「テキストファイルのインポート」の方を使うとよい。

0462デフォルトの名無しさんNGNG
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Temp\gomi.txt", _
Destination:=Range("A1"))
.Name = "gomi"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(2, 2, 2, 2)
.Refresh BackgroundQuery:=False
End With
0463デフォルトの名無しさんNGNG
はじめまして。

VBAで作成したユーザー定義関数をEXCELワークシートのセルから呼出す際に、
通常のワークシート関数のように引数のバルーンヘルプのようなものを出すにはどうしたらよいのでしょうか?

どなたかわかる人がいたら教えてください。

0464デフォルトの名無しさんNGNG
Function hogehoge(fugafuga As Integer) As Integer
  中身
End Function

これで出ない?
0465デフォルトの名無しさんNGNG
質問です

Excelを印刷する時に特定のオブジェクトだけを印刷させない方法ってありますか?

0466465NGNG
すいません
普通にObjectのプロパティにありました
PrintObjectをFalseにすればいいだけでした^^;
お騒がせしました^^;;
0467デフォルトの名無しさんNGNG
作ったVBAマクロを他人に配布する方法でもっともスマートな手法を教えてください。
0468デフォルトの名無しさんNGNG
>>467
ホストのファイルごと渡す。
0469デフォルトの名無しさんNGNG
>467
何をもって、スマートとするのか?
現在どのようの方法を用いていて、問題点は何か?
0470デフォルトの名無しさんNGNG
>>467
スマートメディアにコピーして配布するのがいちばんスマートだわな。
0471デフォルトの名無しさんNGNG
>>470
35歳以上
0472デフォルトの名無しさんNGNG
CD-Rに焼いて渡す。
小さい方が好ましい。
0473467NGNG
説明不足かつ遅レスでスミマセン。

あるExcel VBAマクロを作ったんです。で、それを他の人(十数人)にも使わせたいのです。

で、とりあえず、VBEditorでプロジェクトエクスプローラで、標準モジュールにして、
それをエキスポートし、その(*.bas)ファイルを渡したのです。
で、それを各自のExcelのVBEditorでpersonal.xlsにインポートしてもらいました。
しかし、この方法は手間が多いのでもうちょっとサクッと配布&インストールする方法が無いかなぁ、と思ったのです。
使う人達は素人同然なので...

ちなみに私は普通のVBは使ってますが、Excel VBAは初心者です。
0474デフォルトの名無しさんNGNG
>>473
マクロウイルス的手法でインストーラを作成するのは可能だと思いますが、現状の方法が一番素直だと考えます。
0475デフォルトの名無しさんNGNG
>>473
アドイン化すれば?
そうすれば、Application.AddIns.Add一発でインストールできるよ。
0476デフォルトの名無しさんNGNG
エキセル
0477467=473NGNG
どうもです。
遅レスで申し訳ない...

>>474
なるほどです。
自分の方法におかしな点が無さそうなのは救いです。

>>475
アドイン化?
調べてないので良く分かりませんが、定番な手法なんでしょうか?
一応ググってみます...
0478 NGNG
Sub まとめて()

a = 61

For a = 61 To 1891 Step 60

Rows(a).Rows.Select
Application.Union(Rows(61), Rows(a)).Select

Next a
End Sub


61行から1891まで60行おきに全て選択したいんですが、うまくいきません。
選択されるのは最初の61行目だけです。アドバイスお願いします。
0479デフォルトの名無しさんNGNG
>>478
Sub まとめて()
 Dim RowNum As Long
 Dim SelectRange As Range

 For RowNum = 61 To 1891 Step 60
  If SelectRange Is Nothing Then
   Set SelectRange = Rows(RowNum)
  Else
   Set SelectRange = Union(SelectRange, Rows(RowNum))
  End If
 Next RowNum
 
 SelectRange.Select
 Set SelectRange = Nothing
End Sub
0480478NGNG
>>479
本当に助かりました、ありがとうございました。
0481デフォルトの名無しさんNGNG
>>473
テンプレートフォルダにマクロの入ったファイルを置いておくだけで、マクロが呼べるようになるよ。
あと、ワークグループテンプレートを使えば、マクロを配布しなくても、
LAN上の共有フォルダにマクロを置いておけば呼べるようになる。
フォルダの設定は、「オプション」の「既定のフォルダ」を見ろ。
0482デフォルトの名無しさんNGNG
エクセルのVBAなんですが

B列に「りんご」、「もも」、「なし」・・・
と入れていって

重複した名前・・・例えば「りんご」を再び入れたら

「もう入ってるよ!」とメッセージが出るようにしたい場合

どうすれば良いんでしょう?
0483デフォルトの名無しさんNGNG
>>482
シートモジュールに

Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
  If WorksheetFunction.CountIf(Range("B1").Resize(.Row - 1), .Value) > 0 Then
   MsgBox "もう入ってるよ!"
  End If
 End With
End Sub

をコピペ。
0484デフォルトの名無しさんNGNG
>>483
早速お返事感謝します
For Nextの方ではまってしまい
WorksheetFunctionを使うなんて想像もしてませんでした

本当に助かりました。有難うございます!
0485デフォルトの名無しさんNGNG
本当にvbaの初心者なので申し訳ございません。

keycode=0
というセンテンスですが
どういう意味なのか教えてくれませんか?
0486デフォルトの名無しさんNGNG
>>485
KeyCodeには、キーボードで押したキーの定数が入ってきます。
そのKeyCodeに0を代入すると、その押されたキーは無効になるということです。

例えば、テキストボックスのKeyDownイベントに

If KeyCode = vbKeyA Then KeyCode = 0

と書くと、アルファベットのAは入力出来なくなります。
0487485NGNG
>>486
ありがとうございます。
0488デフォルトの名無しさんNGNG
ウインドウ枠の固定とは別に
A1:J8を固定(スクロールで動かない)ように
する方法ってありますでしょうか?
0489デフォルトの名無しさんNGNG
エクセルのVBAで「現在行を選択する」ってどうやるのでしょう?
行番号を指定して選択するのは簡単ですが
現在のカーソルのある行を指定する方法がどうしてもわからず困っています。
0490デフォルトの名無しさんNGNG
>>489
Rows(ActiveCell.Row).Select
0491デフォルトの名無しさんNGNG
>>490
助かりました。ありがとうございます。
0492デフォルトの名無しさんNGNG
誘導されました

パワーポイントでのVBAです、

やりたいことは、
1.特定のオブジェクトのプロパティをコピーして
2.選択した同種のオブジェクトに適用したい

です。

2の動作の前にプロパティ値の確認&書き換え可能なポップアップを出したいです。

よろしくお願いします。

対象とするオブジェクトのプロパティは吹き出しや曲線矢印のトグルなど、アプリケーション上のプロパティでは設定が出きないものです。
0493デフォルトの名無しさんNGNG
>>492
マルチ
0494デフォルトの名無しさんNGNG
ツール->マクロ->VB editor のヘルプに shape とつっこんで、
Shapeオブジェクトからたどれるところを全部見ろ。
LineプロパティのLineFormatオブジェクトのプロパティのところと、
CalloutプロパティのCalloutFormatオブジェクトのプロパティのところあたりが
役に立つかもしれん。
ダイアログの出し方とかの基本的なとこは、
PowerPointとは独立だから別途勉強しろ。
勘とセンスがあればかなりのことはVB editorのヘルプでなんとかなる。
0495デフォルトの名無しさんNGNG
末尾の部分が

\タブ\改行
\EOF

という
ファイルがあって

\改行
\EOF

のように\タブの部分を消したい場合どうすればいいのでしょうか?
2時間悩んでます・・・・

seek()メソッドを使えばよろしいのでしょうか?
お願いします。
0496デフォルトの名無しさんNGNG
tabclear()を使ってください
0497495NGNG
すいません説明が不足していました。
エクセルファイルからセルをタブ区切りでCSVファイルに出力させる作業をやっています。



0498デフォルトの名無しさんNGNG
vbTabを検索して削除だな。
0499495NGNG
>>496
>>498
ありがとうございます

説明がなっていなくてで本当に申し訳ございません・・・
最後のタブだけを削除したかったのです。
ファイルの末尾から検索(ループ検索)してvbtabを削除することは可能なんでしょうか?
0500デフォルトの名無しさんNGNG
ファイルタイプをCSVファイルでSaveAsしたほうが早そうだな。
0501デフォルトの名無しさんNGNG
Excelで作成したグラフをgifに出力して、それをFTPでアップロードしたいのですが、
FTPでのアップロードがうまくいきません。

こんな感じのソースです。

Dim strPNAME As String 'パラメーターファイル名
Dim nFNO As Integer 'ファイル番号

strPNAME = ThisWorkbook.Path & "\ftptest.txt" 'ftpコマンドファイル作成
nFNO = FreeFile '空いてるファイル番号を取る

Open strPNAME For Output As #nFNO

'データ書き込み
Print #nFNO, "open xxx.xxx.xxx" ' ホスト名
Print #nFNO, "userID"
Print #nFNO, "password"
Print #nFNO, "cd public_html"
Print #nFNO, "put " & ThisWorkbook.Path & "\graph.gif"
Print #nFNO, "quit"

Close #nFNO

Shell "ftp -n -s:" & strPNAME

対処方法をご存知の方がいましたらお教えください。
0502デフォルトの名無しさんNGNG
>>495
いっそのことテキストファイル生成してcsv(形式)になるように手動で書き込んでく、とか。
0503デフォルトの名無しさんNGNG
>496
tabclear() なんてあったっけ?
0504デフォルトの名無しさんNGNG
>>503
昔あったよ、透明のコーラ。おいしくなかったな
0505デフォルトの名無しさんNGNG
俵孝太郎……
0506デフォルトの名無しさんNGNG
その精液は「透明なコーラ」と称され、当時のゲイの方々に愛飲された。
0507デフォルトの名無しさんNGNG
16進数を10進数に変換する関数ってありますか?
セルに色つけたいんですが、元データが16進数で、RGB関数は10進数なので変換しないと・・・
0508デフォルトの名無しさんNGNG
>>507

16進文字列の長さが0になるまで{

返値に16を掛ける。
16進文字列の前1文字を取り出す。
取り出した16進1文字を0〜15の10進に変換する。
返値に変換した10進を足す。
16進文字列の前1文字を削除する。

}
0509デフォルトの名無しさんNGNG
>>508
ありがとうございます。
一発変換はできないのですねぇ・・・_| ̄|○
0510デフォルトの名無しさんNGNG
>>509
すまんかった、削除いらいだしてくる。
0511デフォルトの名無しさんNGNG
>>507
Colorプロパティに16進数をつっこむ。

Range("A1").Interior.Color = &HFFF
0512デフォルトの名無しさんNGNG
>>511
どうもです
&Hですか。0xでやってました。出直してきます...λ
0513デフォルトの名無しさんNGNG
>>512
ドンマイ!がんがれ!
0514デフォルトの名無しさんNGNG
アドインの"分析ツール"を組み込めば、そのまま、hex2decという名前の関数があるのだが。
VBAでも使いたいにゃら、"分析ツール - VBA"アドインも組み込んであげて下さい。

0515デフォルトの名無しさんNGNG
A列に日付、B列にデータを入力してグラフを作成。
B列には順次データが追加される。

常に最新のデータを含んだグラフに更新するにはどうすれば良いのでしょうか?
これだと、エラーになってしまいます。

Sub graph4()
Sheets("graph(1988〜)").Select
ActiveChart.SetSourceData Source:=Sheets("data").Range("A6", Range("B6").End(xlDown)), PlotBy:= _ xlColumns
End Sub
0516デフォルトの名無しさんNGNG
>>515
以下のような感じでうまくいきました。試してみてください。

Sub graph4()
Sheets("graph(1988〜)").Select
ActiveChart.SetSourceData Source:=Sheets("data").Range("A1:B" & Split(Sheets("data").Range("A1").End(xlDown).Address, "$")(2)),PlotBy:=xlColumns
End Sub
0517デフォルトの名無しさんNGNG
四角形や線などの図形オブジェクトの名前を知ったり、変更するにはどうすればよいでしょうか?
VBだと、オブジェクトのプロパティで簡単にできますよね。

現在は、名前を表示するには、以下のようなマクロを実行。

Sub ActiveShapeName()
Debug.Print Selection.ShapeRange.Name
End Sub

名前を変えるには、イミディエイトウィンドウで
selection.shaperange.name = "新しい名前"
のようにしているのですが、かなり面倒です。

良い方法はありませんでしょうか?
0518デフォルトの名無しさんNGNG
VBAのユーザーフォームってBorderStyleは可変にできないのでしょうか?
フォームの最大化(サイズ変更)を自由にさせたいのですが…
0519デフォルトの名無しさんNGNG
>>518

Private Const GWL_STYLE = (-16)
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_THICKFRAME = &H40000

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub UserForm_Initialize()

    Dim lngWnd As Long

    lngWnd = FindWindow("ThunderDFrame", Me.Caption)
    SetWindowLong lngWnd, GWL_STYLE, GetWindowLong(lngWnd, GWL_STYLE) Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX Or WS_THICKFRAME

End Sub
0520518NGNG
>>519
ありがとうございます! 早速試してみます
0521デフォルトの名無しさんNGNG
main(){
 何かの処理その1
 printf("AAAAA");←1番目は最初からある
 printf("BBBBB");←2番目はここに追加
 printf("CCCCC");←3番目はここに追加
 printf("DDDDD");←4番目はここに追加
 何かの処理その2
}

ユーザが任意で二番目以降n番目までのprintf〜を追加し、エクセルのシート
に出力するVBAを作るにはどうすればいいのですか?
0522デフォルトの名無しさんNGNG
Excel2000のVBAヘルプでキーワード入力等にマウスを持って行くとカーソルが←→になって入力ができなくなりました。
どうすれば直りますか?
0523デフォルトの名無しさんNGNG
シートを並べ替えるコードを教えて下さいm(__)m(Excel2000)
0524デフォルトの名無しさんNGNG
>>523
どのように並べ替えたいのですか?
0525デフォルトの名無しさんNGNG
日本語(文字数:不定)+数字という感じなんで文字コード順でいいんですけど、
よろしくお願いしますm(__)m。
0526523NGNG
525は>>524へのお願いです。
0527デフォルトの名無しさんNGNG
>>525
workという名前のシートを作成してから実行してください。
Sub test()
Dim i As Long
Sheets("work").Activate
Columns("A:A").Select
Selection.ClearContents
Range("A1").Select
For i = 1 To Sheets.Count
Cells(i, 1).Value = Sheets(i).Name
Next
Range("A1:A" & Sheets.Count).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
Range("A1").Select
For i = 1 To Sheets.Count
Sheets("work").Activate
Sheets(Cells(i, 1).Value).Move after:=Sheets(i)
Next
End Sub
0528523NGNG
>>527
お礼がおそくなり、すいませんでした。やってみたらばっちりです。感謝m(__)m。
これってsheet名 workにブック内のシート名を書き出して、ソートし、その結果を
元に並べ替えているんですよね?

なにはともあれ、有難うございました。
0529デフォルトの名無しさんNGNG
お知恵をお貸しください。
ユーザーフォームのコマンドボタンから他のexcelシートを呼び出しています。
ユーザーフォームをhideにしないとそのexcelシートが触れないのですが、
hideにしてしまうと呼び出したexcelシートからユーザーフォームへ復帰ができません。
呼び出したシートにはなるべくコードを書きたくないので、
下の様なコードを呼び出し側のシートに書いたのですが、
Activateイベント自体を拾えないようです。
2つ目のexcelを閉じる→一つのexcelがactiveとはならないのでしょうか?

xxフォーム
Cmd_Click
  me.hide
Workbooks.Open Filename:=CurrentPass & "\" & fname
xxフォームのあるexcelシート
Private Sub Worksheet_Activate()
xx.Show

0530デフォルトの名無しさんNGNG
>>529
UserForm1.Show vbModelessではだめですか?
0531529NGNG
>530
ありがとうございます。
やってみたがだめでした。
(xxフォームを開くときにvbModelessでいいんですよね?)
フォームがシートの上にあってシートクリックしても前面に出ないのです。
よけて入力するにはフォームが大きすぎて・・・
zorderみたいなものがあればいいのですが。
0532デフォルトの名無しさんNGNG
ヘッダーを作成するプログラムを作っているのですが
変数って使えますか?
0533デフォルトの名無しさんNGNG
以前に作成したプロジェクトにロックをかけてしまい、そのパスワードを忘れてしまったので
すが、解除するソフトってありますか?
フリーで結構出回っているということなのですが・・・
0534デフォルトの名無しさんNGNG
その程度ググれないなら使うな
0535句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. NGNG
>>534
0536デフォルトの名無しさんNGNG
いつまで夏のつもりだ?
0537句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. NGNG
>>536
9/11
0538デフォルトの名無しさんNGNG
現在いじくっているワークシートが
先頭から何番目なのかわかる方法ないでしょうか?
0539デフォルトの名無しさんNGNG
>>538
ActiveSheet.Index
0540デフォルトの名無しさんNGNG
壁に当たっています。

A1のセルの内容が”22,23”のようにカンマを使って区切られている場合はそれを
B2に”22”B3に”23”と分けて出力し、セルの内容が”123”というようにカンマを使われてない
場合はB2に”123”と出力するようにしたい場合はどうすればよいでしょうか?

またさらに”port 22,23”というようなセルがあった場合それをB2とB3に”port 22” ”port 23”
という風に分けて出力する方法はあるのでしょうか?

いずれの場合も区切られている記号はカンマのみで他の記号の場合は分割する必要はありません。


まだ始めたばかりなせいかIfとFindを使うんだなぁくらいしか思い浮かばず
何をどうすればいいか見当もつきません。どなたか宜しくお願いします。
0541540NGNG
自己レスすいません。

前レスでsplit関数なるものを見つけまして、最初の数字だけのセルだったら
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

で何とかなることがわかりました。
ただ二つめの文字列と数字の混合してあるようなセルの場合に対処することが出来ません。
どうか宜しくお願いします。
0542デフォルトの名無しさんNGNG
>>540-541
A列の処理したいところを選択してから下のマクロを
実行してみてください。

Sub Test()
 Dim CheckCell As Range
 Dim TextHead As String
 Dim TempText As Variant
 Dim TextSource As String
 Dim i As Long

 For Each CheckCell In Selection
  TextHead = ""
  TextSource = CheckCell.Value
 
  If InStr(1, TextSource, " ") > 0 Then
   TempText = Split(TextSource)
   TextHead = TempText(0) & " "
   TextSource = TempText(1)
  End If

  If InStr(1, TextSource, ",") > 0 Then
   TempText = Split(TextSource, ",")
   For i = 0 To UBound(TempText)
    CheckCell.Offset(0, i + 1).Value = TextHead & TempText(i)
   Next i
  Else
   CheckCell.Offset(0, 1).Value = TextHead & TextSource
  End If
 Next CheckCell
End Sub
0543542NGNG
B2とB3か・・・間違えた。
それぞれ以下のように書き換えてください。

CheckCell.Offset(0, i + 1).Value = TextHead & TempText(i)

→CheckCell.Offset( i + 1,1).Value = TextHead & TempText(i)

CheckCell.Offset(0, 1).Value = TextHead & TextSource

→CheckCell.Offset(1, 1).Value = TextHead & TextSource
0544540NGNG
>>542さん。どうもありがとうございます。
まだどんな処理しているか分からないですけどとりあえずコピペして試してみたら
やりたいことが出来ました!

しかも理解しやすい変数を使って頂きありがとうございます。これからどのように動いているか
調べます。本当に助かりました。
どうもありがとうございました。
0545デフォルトの名無しさん NGNG
お力をお貸し頂けたらと思い書き込みさせていただきます。

別々の人がAccessを使って作った顧客管理ソフト?が2つ(A・B)
あります。

外部から電話がかかってくると常駐してあるAに切り替わります。
画面上には電話番号・顧客登録で登録した氏名・会社名等を表示す
る横長のフォームがあり、そこに上記の情報が表示されます。
そこには「表示」ボタンがありそれを押すと「顧客管理フォーム」
が表示され、電話をかけて来た顧客の情報画面が表示されます。

しかしAの顧客情報画面よりBのソフト方のが登録できる顧客情報
が多いので、Bの方の顧客情報画面を表示させたいのです。
ちなみにBで顧客情報画面を出すには、Bを起動後メインメニュー
から電話番号検索を選びそこに電話番号を入力し検索すると検索結
果が表示されその画面上にある顧客情報ボタンを押すと顧客情報画
面が画面が表示されます。

ここで行いたい処理の流れを整理すると
 電話がかかってくる→Aが起動する→フォームに電話番号などの
 情報が表示される→画面上のボタンを押す→Bが起動→Aで表示
 されている電話番号を元に検索→「顧客情報画面」を表示
ということなのですが、このようなことはVBAでは可能なのでし
ょうか?可能ならばどの様なプログラムになるのでしょうか?
多分説明(情報)不足ではありますが宜しくお願いします。
0546デフォルトの名無しさんNGNG
>>545
同僚がこんな仕様書書いてきたら怒鳴りつける。
0547デフォルトの名無しさんNGNG
>>545
できる
要するに、別のファイルを開いて変数を渡すってだけでしょ・・・

塚、そのカキコの様子ではVBAの知識ゼロだべ
イチから説明せにゃならんのか?
0548デフォルトの名無しさんNGNG
>>545
その顧客管理ソフトを作った人たちに相談したら?
0549デフォルトの名無しさんNGNG
with range("A1:E10")
   ~~~~~~~~~~~~~~~~~~
 .value = ...
 ActiveChart.SetSourceData Source:=range("A1:E10") ...
                         ~~~~~~~~~~~~~~~~~~
end with

この2ヶ所が重複してしまうのですが、良い指定方法はありますでしょうか
(C++のthisの様な物を探しているのですが…)
0550デフォルトの名無しさんNGNG
With使わずに、若しくは使う前に一時変数に保持しといたら?
0551538NGNG
>>539
ありがとうございました。
0552デフォルトの名無しさんNGNG
>>550
一時変数とか言わんでクレ。なんか構造化すらできない言語のように聞こえる・・・。、
0553デフォルトの名無しさんNGNG
特に深い意味はなかったんだが…
ローカル変数とでも読んどいてくれ…
0554デフォルトの名無しさんNGNG
被捕食者の数N、捕食者の数Pとするとき、ロトカ・ボルテラの式

dN/dt=r*N-a*N*P
dP/dt=-s*P+b*N*P (r,s,a,bはいずれも定数)

を、修正オイラー法で近似して、グラフ(横軸:時間t、縦軸:個体数)をシミュレーション、
個体数が2つの波となって周期的に振動する様子を確認せよとの課題が出た。
被捕食者の数は、
N(t)'=N(t-1)+{r*N(t-1)-a*N(t-1)*P(t-1)}  「仮の値」
N(t)=N(t-1)+[ {r*N(t-1)-a*N(t-1)*P(t-1)}+{r*N(t)'-a*N(t)'*P(t)'} ]/2 「修正した値」
捕食者の数は、
P(t)'=P(t-1)+{s*N(t-1)*P(t-1)-b*P(t-1)} 「仮の値」
P(t)=P(t-1)+[ {s*N(t-1)*P(t-1)-b*P(t-1)}+{s*N(t)'*P(t)'-b*P(t)'} ]/2 「修正した値」

だそうだが、y=at+b だの、y=exp(-r*t) だのみたいにもう変数tの式になってるような関数しか今まで
見てないのに、「N(t)=N(t-1)+・・・」とか、関数が関数で表現されてる時点で自分にはもうワケワカメ。
結局NやPを表す式がどうなるのか皆目検討もつきやせん。
「ロトカ・ボルテラ」や「VBA]なんかの単語をを必死で組み合わせてググッてしらみつぶしに見ていったけど
徒労に終わっちゃい、もはやここしか当てのなくなった初心者学生ですが、誰か救いの手を〜
0555554NGNG
みようみまねの作成途中のやつ。肝心の中身が何にもできてないので「骨組み」とすら呼べんが・・・
これだけすでに「おまえ本当に知識0だろ」と指摘されそうな悪寒。

Dim N As Double, P As Double, a As Double, b As Double, t As double,
Dim N0 As Double, P0 As Double
Dim n As Integer
r = InputBox("被捕食者増加率")
s = InputBox("捕食者死亡率")
a = InputBox("被捕食者死亡率")
b = InputBox("捕食者増加率")
N0 = ??
P0 = ?
t = 0
With Worksheets("Sheet1")
.Cells(5, 5) = "r"
.Cells(5, 6) = r
.Cells(6, 5) = "s"
.Cells(6, 6) = s
.Cells(7, 5) = "a"
.Cells(7, 6) = a
.Cells(8, 5) = "b"
.Cells(8, 6) = b
For t = 1 To 100
n = n + 1
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
.Cells(n, 1) = N
.Cells(n, 2) = P
Next t
End With
End Sub
0556デフォルトの名無しさんNGNG
ファイルオープンダイアログを
カレントディレクトリで開くにはどうすればいいですか?
0557デフォルトの名無しさんNGNG
>>554
漸化式を知らないということは中学生位かな?

まず
P(t)'=P(t-1)+{b*N(t-1)*P(t-1)-s*P(t-1)}
という所から直してね。
0558デフォルトの名無しさんNGNG
>>556
任意の場所で開く場合
ChDir "C:\"
Call Application.GetOpenFilename
0559デフォルトの名無しさんNGNG
>554
>「ロトカ・ボルテラ」や「VBA]なんかの単語を
その前に、オイラー法を勉強すること。

修正オイラー法の前に、前進のオイラー法ね。
y'=yとかy'=cos(y)とか解いてみて、振動問題でまずいことになってから修正オイラー法を試す。
0560デフォルトの名無しさんNGNG
入力規則をユーザーが変更できないようにマクロで固定
する方法を教えてください。
半角英数のみしか入力できないセルを作成したいです。
0561デフォルトの名無しさんNGNG
質問です。
全シートを一括でAutoFit死体のですが、以下のコードでは
Sheets.Selectする前にアクティブだったシートしかAutoFitされません。

ー ソース −
Sheets.Select
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit

教えてえっちぃ人。
0562デフォルトの名無しさんNGNG
>>560
シートの保護じゃダメなんですか?
0563デフォルトの名無しさんNGNG
>>561
こうかな。

 Dim WS As Worksheet
  
 For Each WS In Worksheets
  WS.Cells.EntireColumn.AutoFit
  WS.Cells.EntireRow.AutoFit
 Next
0564561NGNG
>>563
なる程。ワークシートの子要素の数だけループするのですか。
しかもシートをselectする必要無しですね。

( ・∀・)ウマクイッタヨ ステキダヨ カシコイヨ ヌルポ

でもなんで漏れのコードどで思い通りの動きにならなかったのか謎。
0565デフォルトの名無しさんNGNG
>>564
Cells.EntireColumn.AutoFit

シートオブジェクトを省略すると、アクティブシートが
対象になると思うんだけど。
0566デフォルトの名無しさんNGNG
Excel VBAの初心者なんですが、
Excel起動時にフォームを表示させているのですが

そのフォームが表示されていると、
他の動作がすべてロックされていますが
これはなぜなんですか?

例えば
セルの選択や、ワークシートの切り替えも出来なくなっています。
ツールバーも使用できなくなってます。
フォームを閉じると普通に戻るのですが・・・
何か設定することでもあるのですか?
0567デフォルトの名無しさんNGNG
>>566
デフォルトでモーダル表示だから。
モードレスにするなら

UserForm1.Show vbModeless

とする。ただし、97では不可。
0568デフォルトの名無しさんNGNG
>>92

>VBA歴1日の超初心者ですが、ヤフーへの自動ログインマクロを
>作って居たところ、input name=".save" となっていて、
>"objIE.document.all..save.Click"と、
>記述すると文法違反になってしまいます。
>
>良い知恵はございませんでしょうか?

もし解決されていたら方法を投稿して頂けませんか?
同じ問題で3日悩んでます(泣
0569デフォルトの名無しさんNGNG
access2000のVBAで、
テーブルの項目名を取得するにはどうすれば
よいのでしょうか?
結構いろんなサイトを探したのですが載っていません
どなたか教えたください。よろしくお願いします。
0570デフォルトの名無しさんNGNG
Dim rs As Recordset
Dim fld As Field
Set rs = CurrentDb.OpenRecordset("テーブル1")
For Each fld In rs.Fields
MsgBox fld.Name
Next
・
・
・
0571569NGNG
>>570 様
できました!!
本当にありがとうございます。
前々からこの部分だけが解らず、ひっかかっていました。
感謝です。
0572540NGNG
セルの照合をするプログラムを作っています。

”管理”というワークシートのB列に物品の管理番号、C列に物品番号。
”検索”というワークシートのB列に管理番号を知りたい物品番号。
が入力されてます。

検索シートでマクロを実行させると検索シートのB列の右側に管理番号が表示されるよう
ことが目的です

それで以下のようなコードを記述しました。

Sub 検索()


Dim objRange As Range
Dim l As Long
Dim m As Long
Dim n As Long
Dim i As Long
Dim j As Long

l = 5
m = 3
i = 4
j = 2
n = Cells(Worksheets("管理").Rows.Count, 1).End(xlUp).Row

0573572の続きですNGNG


next0:
Do Until y = z + 1

If Worksheets("管理").Cells(l, m) = Worksheets("検索").Cells(i, j) Then
Worksheets("検索").Cells(i, j + 1) = Worksheets("管理").Cells(l, m - 1)
GoTo next1

Else
m = m + 1
End If

Loop

next1:
If Cells(i + 1, j) = Empty Then
GoTo finale
Else
i = i + 1
GoTo next0
End If

finale:
MsgBox "検索が終了しました。"

End Sub




0574572の続きですNGNG
このように記述して実行したところ
If Worksheets("管理").Cells(l, m) = Worksheets("検索").Cells(i, j) Then

の箇所で、実行時エラー 1004
アプリケーション定義またはオブジェクト定義のエラーです。
と言われてしまいました。

ちょっと自分ではどこがいけないのか分からないのでどなたか悪いところを教えて頂けないでしょうか?
宜しくお願いします。
0575ゆうNGNG
私は老人ホームで働いているゆうといいます。
ショートステイという業務があり非常に多忙です。
そこでエクセルのVBAを使用してなんとか業務を改善したいのですが、
どなたかボランティアでプログラムを作成してくださる方はおりませんか?
私もVBAはほんの少しならわかるのですが、業務が複雑でプログラムが
かけません。
0576デフォルトの名無しさんNGNG
エクセルVBAの関数で、指定範囲の空欄個数を返すような関数は
ありませんか?
0577デフォルトの名無しさんNGNG
あるだろってかカウントしろよそれくらい。
0578デフォルトの名無しさんNGNG
>>572
n = Cells(Worksheets("管理").Rows.Count, 1).End(xlUp).Row
↑このnは使わないの?

>>573
Do Until y = z + 1 ←このyとzは何ですか?
0579デフォルトの名無しさんNGNG
>>573
m = m + 1
と計算して、列をどんどん右に調べていくことになってシートからはみ出てエラーだな

DGETやVLOOKUP使えばすむのに・・・
0580578NGNG
>>572-574
以下のように変えればとりあえず動きますね。
※の行が変更点です。

Sub 検索()
 Dim objRange As Range
 Dim l As Long, m As Long, n As Long, i As Long, j As Long

 l = 5: m = 3: i = 4: j = 2
 n = Worksheets("管理").Cells(Worksheets("管理").Rows.Count, 3).End(xlUp).Row '※
next0:
 Do Until l = n + 1 '※
  If Worksheets("管理").Cells(l, m) = Worksheets("検索").Cells(i, j) Then
   Worksheets("検索").Cells(i, j + 1) = Worksheets("管理").Cells(l, m - 1)
   GoTo next1
  Else
   l = l + 1 '※
  End If
 Loop

next1:
 If Cells(i + 1, j) = Empty Then
  GoTo finale
 Else
  i = i + 1
  l = 5 '※(追加)
  GoTo next0
 End If

finale:
 MsgBox "検索が終了しました。"
End Sub
0581572NGNG
>>578さん、ただの間違いです。はじめlmnをxyzで使っていたら
数学のX軸とY軸と混同してしまってワケ分からなくなったので・・・

>>579さん、ほんとだw 二日酔いで頭が混乱してる・・・


とりあえず>>580に示されたとおりに動かしてみたら動きました。
とんでもないアホに付き合わせてしまってどうもすいませんでした。
0582デフォルトの名無しさんNGNG
Outlook2003、WindowsXPProSP2を使ってまして、
Outlook2003の自作のマクロを実行させようとしたら、
今までは実行できていたのですが、
いつのまにか(ひょっとしたらSP2を入れてから?)
「このプロジェクトのマクロは無効に設定されています。
マクロを有効にする方法についてはオンライン ヘルプまたは
ホストアプリケーションのドキュメントを参照してください。」
と言われてマクロが実行できなくなってしまいました。

しかし、ヘルプをさんざんみたものの、その方法が見あたらず。。。

なお、セキュリティを「低」にしてみても、同様です。
上記の解決方法をご存じのかた、教えていただければ幸いです。
0583デフォルトの名無しさんNGNG
はたしてSP2を入れるメリットはあるのかな
私も一部動かなくなりました。
0584デフォルトの名無しさんNGNG
>>568
ヤフーオークションのログイン画面でしたら、以下のような感じでログインボタンがクリックできると思います。

Set objForms = WebBrowser1.Document.Forms("login_form")
For Each x In objForms
If x.Value = "ログイン" Then
x.Click
End If
Next
0585デフォルトの名無しさんNGNG
>>568
objIE.document.all(".save").Clickではだめですか。
0586 ◆rP70MOObas NGNG
>>583
ない!
0587デフォルトの名無しさんNGNG
AccessのモジュールにあるFunctionをWORDのVBAから呼び出したいのですが、
どのようにすればいいのでしょうか?

WORDからADO使ってAccessのデータベースに接続することはできたけど、
Accessのモジュールを呼び出せると、使い道が増えそうなので…
0588デフォルトの名無しさんNGNG
CreateObject("Access.Application")でAccessを起ち上げさせるのはどうよ
0589587NGNG
>>588
多分こんな感じになるはずなんだけど、動きません。うーん…

Sub acModule()
Dim Yougo, Imi As String
Dim acDB As Object

Set acDB = CreateObject("Access.Application")

Yougo = InputBox("用語を入力", , "コンピュータ")
Imi = acDB.Run("用語集.mdb!Yougo", Yougo)
MsgBox (Yougo & " : " & Imi)

End Sub

用語集.mdbのModule1にYougoというFunctionを作っています。
0590デフォルトの名無しさんNGNG
こんな感じだと思う

Set acDB = CreateObject("Access.Application")
acDB.OpenCurrentDatabase ActiveWorkbook."絶対パス"  ’"C:\My Documents\用語集.mdb"とか
acDB.Visible = True
acDB.UserControl = True
0591デフォルトの名無しさんNGNG
スマソ間違えた

Set acDB = CreateObject("Access.Application")
acDB.OpenCurrentDatabase "絶対パス"  ’"C:\My Documents\用語集.mdb"とか
acDB.Visible = True
acDB.UserControl = True
0592587NGNG
>>591
ありがとうございます。うまくいきました。
Accessのファイルを開いていなかったのが、最大の原因だったんですね。

0593デフォルトの名無しさんNGNG
既出、スレ違いかも知れませんが、
皆様のお知恵を拝借したくカキコしております。

現在悩んでいること
 現在、VB.NETからOutLook2000をCreateObjectして、
 MailItemを操作するプログラムを開発しております。

 外部プログラムからOutLookを操作する際に、
 セキュリティの警告ダイアログが出てしまい、
 運用に耐える代物ではなくなってしまっております。

質問
 ・外部プログラムからOutLookを操作してセキュリティの警告ダイアログを出さない方法は有るか?
 ・外部プログラムからOutLookを操作してセキュリティの警告ダイアログが表示された時、
  自動的に閉じさせる方法は有るか?
 ・実現可能な場合、その方法は。

色々調べたのですが答えが出ませんでした。
なお、メール操作にはOutLookを利用することが要件として含まれているため、
他の方法でメール操作の要件を満たすことが出来ません。

一応、以下に調べた結果を列挙します。
主なWeb上の取り扱い
 結果1、Officeの仕様だ諦めろ
 結果2、ウイルスの中にはセキュリティの警告を出さずに操作するものもあるらしい。
 結果3、恥ずかしくなる位簡単な方法で回避できた(OutLook2002)
    (どうやって回避したとかは載ってませんでした)

※信頼に耐えうるソース
0594593NGNG
途中で文章が切れてしましました^^;

一番最後の行
 ※信頼に耐えうるソース → ※信頼に耐えうるソースは結果1のみです。

質問した上に誤植までしてしまい、申し訳有りませんでした。
0595デフォルトの名無しさんNGNG
質問に顔文字使うような奴に下流工程を任せたくない。
0596デフォルトの名無しさんNGNG
SP2を外せ
0597593NGNG
>>596

レス有難うございます。
やはりアップデートを外すしか無いのかも知れませんね。
しかし、OutLookの性格上アップデートを外すのはセキュリティ上不安が残るのも事実です。

考えていた対処
 ・オフィスのバージョン2000=>97に落とすか、2000のアップデートを外す。
 ・現実的な対処としてOutLookにアクセスする回数を減らしてユーザーに我慢してもらう。

なんとなく踏ん切りが付きましたので、後者をメインに考えてユーザーと相談してみます。
アドバイス頂きまして、誠に有難うございました。
0598デフォルトの名無しさんNGNG
OLでメール出そうという企画がまちがい。ユーザーと相談してみなさい。
0599質問ですNGNG
はじめまして。さっそく質問させていただきます。
コンボボックスに
中1
中2
中3
高1
高2
高3
のような項目を作成しました。
このときコンボボックスの値に上記の値の中から
任意のものを初期値としてフォームに入力しておく
ことはできるのでしょうか?
0600デフォルトの名無しさんNGNG
>>599
できます。
0601質問ですNGNG
>>600様
もしお時間があるようならばその方法を教えていただけないでしょうか?
0602デフォルトの名無しさんNGNG
>>601
無いので嫌です。
0603デフォルトの名無しさんNGNG
>>600です。>>602様、騙り乙です。

で、まずお使いのアプリを教えれ。
話はそれからだ。

塚、ググればいくらでもHitすると思いますよ。
0604質問ですNGNG
>>599です
>>600様、返信ありがとうございます
現状を全く書いていなかったのが悪かったのですね。。
以後気をつけます。

使っているアプリはエクセル2002です。
Visual Basic Editer を使用してマクロを組んでいます。

「エクセル マクロ コンボボックス 初期化」
などでググっては見たのですが、3時間探しても見つからないので
こちらに質問させていただきました。

開発途中の画像は↓↓↓です。
ttp://www1.ocn.ne.jp/~nasitaka/situmon.JPG
画面右側のコンボボックスに初期値を入力させるというものを最終的には作ります。

是非アドバイスよろしくお願いします
0605600NGNG
Excelのフォームは詳しくないですが・・

>>599で中2を既定で設定するには

コンボボックス名.ListIndex = 1

でできるようです。

未選択にする場合は-1、リストの1番目は0です。
0606質問ですNGNG
即レスありがとうございました。
またわからないことがありましたら書き込みさせていただきます
0607デフォルトの名無しさんNGNG
急いでいるのでマルチポストをお許し下さい。

折れ線グラフの雛形を作っておき、それに対して毎回不規則に個数の変わるデータを
元データにする(わかりやすく言えば元データを変える)マクロを作ろうとしています。

試しにマクロの記録で見てみたのですが、

ActiveChart.SeriesCollection(1).Values = "=Sheet1!R1C1:R25C1"
↑こんな感じでした。

データの個数が常に一定であれば R1C1:R25C1 をR1C2:R25C2 のような感じにすればよいのですが、
データの個数が一定ではないところが悩みのネタです。
このR1C1:R25C1を開始行と終了行の変数にして、INPUTBOXか、セルに入力して読ませる感じで
やれば良いんじゃないかなと思っているのですが、なかなかうまくいきません。
ちなみに、X軸、Y軸ともに同じ個数で毎回変動します。
(つまり、X軸とY軸のデータの個数は等しくなります)

A:Aが使えればよいのですが、上記のメソッドでは使えないようです。
google等で調べてみたのですが、解決に至りませんでした。

どなたかご指導下されば幸いです。
0608デフォルトの名無しさんNGNG
>>607
マルチポストした時点で誰も答えるわけ無いのに。
0609607NGNG
すいませんでした。
0610デフォルトの名無しさんNGNG
>>609
Sheet1.Range("A1:A25")
0611デフォルトの名無しさんNGNG
某掲示板の書いたものの、ちょっと急ぎなので2ちゃんなら
早いレスもらえるかと思った次第です。
0612607NGNG
>>609
いえ、たまたま例をだしただけで、実際はA1:A150だったり、A1:A2000だったり、
毎回変わるのです。
それをInputboxとかセルから変数に読み込んで元データを指定する感じにしたいのです。
inputBOXとかセルから読ませるのはわかります。が、

ActiveChart.SeriesCollection(1).Values = "=Sheet1!R1C1:R25C1"(←あくまで例です)
の、R1C1:R25C1の部分を変数にしてマクロを組みたいのです。

質問する分際で説明不足で申し訳ありませんでした。
0613デフォルトの名無しさんNGNG
おかしいなぁ。マクロの記録でやると

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:A25"), PlotBy _
:=xlColumns

ってなる・・・。バージョンの違いなんかな。
0614 ◆FIcNi4f8js NGNG
マルチポストするやつってたいてい解決しても終了報告はマルチポストしないんだよね。
0615 ◆FIcNi4f8js NGNG
>>607
こんなん?
Sub makechart()
Dim line As Integer

line = 1
While (Cells(line, 1) <> "")
line = line + 1
Wend
If (line = 1) Then Exit Sub

Range("A1:A" & CStr(line - 1)).Select
Charts.Add

あとは適当
0616デフォルトの名無しさんNGNG
>>615
ナイスマクロウイルス!
0617607NGNG
>>615がマクロウィルスかどうか私の技量じゃわかりません・・・
なんかそれらしい気もしますが。あした職場のPCで開いてほんとに菌なら処分されます・・・

や、でもなんかそれらしいのでとりあえず持っていって、スタンドアローンで開いてみます。

ドキドキ。
0618607NGNG
>>615様、貴方が善意の方でしたら申し訳ありません。
私がみるには菌には見えませんのでとりあえずこれをいじって使わせていただきます。
ありがとうございました。
0619607NGNG
連続で申し訳ありません。
>>617で書いた「それらしい」っていうのは、私の質問で対する回答っぽいという意味であり、
菌らしいという意味ではありません。気を害したら申し訳ないです。では明日試します。
0620デフォルトの名無しさんNGNG
>>619
いい加減黙れ。
0621デフォルトの名無しさんNGNG
620ワロタ
0622デフォルトの名無しさんNGNG
Range("A1:A" & Range("A1").End(xlDown).Row).Select

ではいかんのかいのぅ?
0623デフォルトの名無しさんNGNG
それだと2行目以降が空欄のとき、最終行までいかなかったっけ?
0624デフォルトの名無しさんNGNG
Word で下の方に 5行 6桁 など現在のカーソル位置がでますが、
「5行6桁」などと指定してカーソル位置を移動させる方法ありますか?

ちょうど、 EXCELで、 Range("A1").Select とやるようなことを
やりたいわけなんですが。
0625デフォルトの名無しさんNGNG
VBAでWORDのフィールドコードの種類、オプションのスイッチを
取得する方法ってありますか?

Fields(i).Code.Textで取得してregexで処理するしかないでしょうか?
0626デフォルトの名無しさんNGNG
シートから1列データを取って、それを重複除去、ソートで整形して
コンボボックスに追加しようと思ったけどソート用関数とか無いの?
0627デフォルトの名無しさんNGNG
>>626
口の利き方に気をつけろヴォケ!!
>それを重複除去、ソートで整形して
↑この時点でアフォ丸出しだw

>>624-625
Wordはよく判りませぬ・・
0628デフォルトの名無しさんNGNG
>>627
unix知らないんだろうなぁ・・・。
0629 ◆FIcNi4f8js NGNG
>>628
ソートしてから重複除去だろ?
0630デフォルトの名無しさんNGNG
office2000

excel vbaでセルの高さや幅を変更したら発生する
イベントってないですか?

0631デフォルトの名無しさんNGNG
office2000のExcelでコンボボックスを利用しているのですが、
▼をクリックして、リストを開いた状態で、マウスのホイールを
スクロールさせるとシートのスクロールが発生し、リストのみ画面下部に
移動してしまいます。
できれば、リスト内でスクロールを発生させたいのですが、方法はないでしょうか。
0632デフォルトの名無しさんNGNG
サービスパックあてれ
0633デフォルトの名無しさんNGNG
マクロの実行した時、随分時間がかかるんですが
メモリ増やしたら早くなったりしますか?

処理中すごい音してるしちょっと怖いです
0634デフォルトの名無しさんNGNG
>>633
マクロの内容による
0635デフォルトの名無しさんNGNG
>>633
>処理中すごい音してるしちょっと怖いです

スワップしてるんなら有効。単に外部ファイル読みまくりなら買って西根。
0636デフォルトの名無しさんNGNG
>>633
excelのマクロとかだったら処理中の描画をOFFにするだけでかなり速くなる
0637デフォルトの名無しさんNGNG
>633

ロジック見直せば速くなる
0638デフォルトの名無しさんNGNG
>>637
当然ながらハンド最適化済みです。
0639デフォルトの名無しさんNGNG
>>638
ソースくらい出せ
0640633NGNG
>>635
スワップ、調べましたが私にはどうすればいいのか分かりませんでした。

>>636
最後に

application .screenupdating = false

と書いたんですが何も変わりませんでした。

>>637
638は私ではありません

>>639
次に書きます





0641633NGNG
Sub ソース()

Dim mysheet As Variant
Dim b As Integer
Dim c As Integer
Dim code As Integer, q As String, u As String, rownum As Integer
Dim myrange1 As Range, myrange2 As Range
Dim move As Integer
Set mysheet = Sheets(Array("×", "×2", "×3", "×4", "×5", "×6", "×7", "×", _
"×9", "×10"))


For Each mysheet In Array("×1", "×2", "×3", "×4", "×5", "×6", "×7", "×8", _
"×9", "×10")
Worksheets(mysheet).Select


For b = 61 To 1891 Step 60
Rows(b).Delete
Next b

For c = 2 To 1831 Step 61
Rows(c).Insert , xlShiftUp
Next c


0642633NGNG
For rownum = 2 To 1891 Step 61
code = Cells(rownum + 1, 1).Value
If code > 0 Then

Worksheets("○○").Select
Set myrange1 = Range("A:A").Find(what:=code, searchorder:=xlByColumns)
q = myrange1.Address

If Not myrange1 Is Nothing Then

Set myrange2 = Range(q).End(xlToRight)
u = myrange2.Address
Range(q, u).Copy Destination:=Worksheets(mysheet).Rows(rownum)

End If

Worksheets(mysheet).Select

0643633NGNG
Range(Cells(rownum + 57, 14), Cells(rownum + 59, 14)).FormulaR1C1 = "=AVERAGE(RC[-6]:R[2]C[-6])"
Range(Cells(rownum + 55, 16), Cells(rownum + 59, 16)).FormulaR1C1 = "=AVERAGE(RC[-8]:R[4]C[-8])"
Range(Cells(rownum + 50, 18), Cells(rownum + 59, 18)).FormulaR1C1 = "=AVERAGE(RC[-10]:R[9]C[-10])"
Cells(rownum, 20).FormulaR1C1 = "=AVERAGE(RC[-10]:R[2]C[-10])"
Cells(rownum, 22).FormulaR1C1 = "=AVERAGE(RC[-12]:R[4]C[-12])"
Cells(rownum, 24).FormulaR1C1 = "=AVERAGE(RC[-14]:R[9]C[-14])"

Range(Cells(rownum, 14), Cells(rownum + 56, 14)).FormulaR1C1 = "=R[1]C+2/4*(RC[-6]-R[1]C)"
Range(Cells(rownum, 16), Cells(rownum + 54, 16)).FormulaR1C1 = "=R[1]C+2/6*(RC[-8]-R[1]C)"
Range(Cells(rownum, 18), Cells(rownum + 49, 18)).FormulaR1C1 = "=R[1]C+2/11*(RC[-10]-R[1]C)"

0644633NGNG
Cells(rownum, 15).FormulaR1C1 = "=RC[-7]/RC[-1]-1"
Cells(rownum, 17).FormulaR1C1 = "=RC[-9]/RC[-1]-1"
Cells(rownum, 19).FormulaR1C1 = "=RC[-11]/RC[-1]-1"
Cells(rownum, 21).FormulaR1C1 = "=RC[-11]/RC[-1]-1"
Cells(rownum, 23).FormulaR1C1 = "=RC[-13]/RC[-1]-1"
Cells(rownum, 25).FormulaR1C1 = "=RC[-15]/RC[-1]-1"

'Cells(rownum, 26).FormulaR1C1 = "=RC[-18]/RC[2]"
'Cells(rownum, 27).FormulaR1C1 = "=RC[-1]/R[1]C[-1]"
'Cells(rownum, 29).FormulaR1C1 = "=RC[-1]/R[1]C[-1]"

End If
Worksheets(mysheet).Select
Next rownum

Range("A:D").HorizontalAlignment = xlCenter
Range("O:O,Q:Q,S:S,U:U,W:W,Y:Y").NumberFormatLocal = "##0.00%"
Range("N:N,P:P,R:R,T:T,V:V,X:X").NumberFormatLocal = "#,###,###,###"
Range("A1").Select

Next mysheet

End Sub
0645633NGNG
「本文が長すぎます」とエラーがでるので分割しました。
見難くて申し訳ありません。
よろしくお願いします。
0646デフォルトの名無しさんNGNG
application .screenupdating = false は最後じゃ意味ないぽ
0647デフォルトの名無しさんNGNG
>>646
最初に入れたら画面が更新されなくなってしまいました。
どうしたらこの不具合を回避できるでしょうか?
0648デフォルトの名無しさんNGNG
application .screenupdating = true
0649デフォルトの名無しさんNGNG
>>641-644
(1)シート"×1"だけ処理。(行の削除・追加・Excel関数入力など))

(2) (1)で出来たシートをコピーして、シート"×2"〜 "×10"を作成

(3)シート"×2"〜 "×10"で、シート"×1"と違う部分だけ変更。

というようにしてみてはどうかと思ったんだがいかがなものか。
各シートの内容がどうなってるのかさっぱりわからないのでなんともいえないけど。
0650デフォルトの名無しさんNGNG
Excel2002のVBAはVB.6ベースだと思いますが、
ExcelXP や Excel2003 もそれは変わっていませんか?
それともVB.netベースになっていますか?
どなたかご存知の方教えてください。
0651デフォルトの名無しさんNGNG
フォームのダイアログボックスにListBox1を作っておいて、
下のような感じで動かしたいのですが、MainからTestを呼び出しても、
testListBoxがNULLになってしまい、動作しません。
どのようにすれば動くようになるのかお教えください。

Sub Main()

Call Test(Form1.ListBox1)

End Sub

Sub Test(testListBox As Object)

testListBox.Clear

End Sub


Office2000のWORD上でやっています。
0652デフォルトの名無しさんNGNG
>>650
微妙に関数が増えていたりするが。netではない。

>>651
Sub Main()
  Dim clsList As New Class1
  clsList.obj = UserForm1.ListBox1
  clsList.Test
  UserForm1.Show
End Sub

クラス
Dim WithEvents lst As msforms.ListBox
Property Let obj(ByRef o As Object)
 Set lst = o
End Property

Public Function Test()
 lst.AddItem "ABCDE"
End Function
0653650NGNG
>>652
ありがとうございます
0654デフォルトの名無しさんNGNG
初心者なのですみませんですが、おしえて
もらいたいのですけど、
Selection って=現時点のオブジェクトって
ことなのでしょうか?
Selection.xxxの
xxxはそのオブジェクトに依存しているメゾット
とかプロパティというカンジの。
0655デフォルトの名無しさんNGNG
>>654
カイル君に聞けよ。
0656デフォルトの名無しさんNGNG
>>654
Selectionは Application オブジェクト と Windows オブジェクト のプロパティ
0657デフォルトの名無しさんNGNG
VBAをエミュだと思って入ったのは俺だけか?
0658デフォルトの名無しさんNGNG
現在のマウスの位置にフォームを表示したいのですが、
VBにはScreen.TwipsPerPixelXがありますが、VBAにはありません。
どのようにTwipsとPixelを変換すればよいのでしょうか?
お助けください。
0659デフォルトの名無しさんNGNG
>>658

[ほかの言葉を使って試してみてください]
0660デフォルトの名無しさんNGNG
ExcelのVBAで
1.テキストファイルの読み込み
2.一定時間後再度、同じファイルを読み込み
を行いたいのですが、「2.」で読み込む場合
は「1.」で読み込んだ箇所を飛ばして、更新
された箇所だけ読み込みたいのですが、どの
ようにすればできるのでしょうか?
0661デフォルトの名無しさんNGNG
1.のテキストの最後の文言を控えておいて2.を始める時に検索させれば解決かと
0662デフォルトの名無しさんNGNG
ExcelVBAで動的にツールバー内部のメニューにマクロを登録したいのですがやり方がわかりません。
通常のボタンですと
Toolbars(i).ToolbarButtons(1).OnAction = "method"
みたいに設定できるので
Toolbars(i).ToolbarButtons(1).Menus(1).OnAction = "method"
みたいにやるのかと思ったのですがスカでした。
これは不可能なのでしょうか・・・
0663デフォルトの名無しさんNGNG
メニュー自体がひとつのコマンドバーなんだが
0664660NGNG
>>661

解決しました。
ありがとうございます。
0665デフォルトの名無しさんNGNG
Excel で印刷される範囲を知るにはどうしたらいいでしょう?
セルは連続してないこともあるので CurrentRegion は使えず、
印刷範囲の指定をしていないときもあるので PrintArea も使えず、
V/HPageBreak もちょっと違います。
具体的には、改ページプレビューで一番外側の青色の線の位置が知りたいんですが。
よろしくお願いします。
0666デフォルトの名無しさんNGNG
VBAのクラスモジュールは標準モジュールに比べて動作が遅い。

とかありますか?
0667デフォルトの名無しさんNGNG
>>665
PrintAreaで取れなければ一番端のセルを取ればいいだろ
Dim strAddress As String
strAddress = ActiveSheet.PageSetup.PrintArea
If strAddress = "" Then
 Range("A1").Select
 ActiveCell.SpecialCells(xlLastCell).Select
 strAddress = "$A$1:" & Selection.Address
End If

>>666
インスタンスを1回しか生成せず、Public変数しか使わなければ
ほとんど変わらんし、インスタンスを何度も作れば遅くなるのは
どんな言語でも常識
0668デフォルトの名無しさんNGNG
初心者のような質問で申し訳ありませんが・・・・

EXCEL2000で以下のような記述をしたところ、EXCEL2000ではうまく動くのですが、
別機種のEXCEL2002ではエラーメッセージが表示されてうまく動きません。
【VBA】
Range(2, "A"), Cells(65536, "L")).Select
Cells(Main_X_start, Main_Y_start).Activate
Selection.ClearContents
Selection.Font.ColorIndex = 1
【2002エラー】
実行時エラー'1004':
「FontクラスのColorIndexプロパティを設定できません。」

対象シートは保護されてますが、Rangeで指定された範囲のロックはされていません。
ColorIndexをColor=RGB(・・・・に修正しても結果は同じでした。
メッセージだけ見ると、Fontオブジェクトをクラスとして認識してしまってる様なのですが・・・・・・

お分かりの方がいらっしゃいましたら、うまく避ける方法を教えてください。
OSは2台ともWIN2000です。
0669デフォルトの名無しさんNGNG
>>667
例外が起きた後インスタンスがすべて解放されてるのが泣けるのでなんか考えます。
0670665NGNG
>>667
SpecialCells(xlTypeLastCell)なんてものがあったんですね。
どうもありがとうございました♥
0671デフォルトの名無しさんNGNG
Sub Macro1()
Worksheets("Sheet1").Range("F9").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Application.OnTime Now + TimeValue("00:00:10"), "Macro2"
End Sub

Sub Macro2()
Worksheets("Sheet1").Range("F9").Select
With Selection.Interior
.ColorIndex = 46
.Pattern = xlSolid
End With
End Sub

上記のようなマクロで、マクロ実行後Macro2が呼ばれる前に
別Bookを開いていると(ActiveなSheetは「2」)

===========================
実行時エラー'9':

インデックスが有効範囲にありません。
===========================
どのように回避すればよいのでしょうか?
0672デフォルトの名無しさんNGNG
ThisWorkBook
0673デフォルトの名無しさんNGNG
>>671
Macro2の対象が元のワークブックならThisWorkbookつけろ
0674671NGNG
>>672,673
ありがとうございました。

下記のように記述したら、解決したのですが、
現在Activeのbookが非Activeになるのですが、
現在ActiveのbookはActiveのまま、裏でマクロ
を実行されることはできないのでしょうか?

〜省略
Sub Macro2()
ThisWorkbook.Activate
Worksheets("Sheet1").Range("F9").Select
With Selection.Interior

〜省略
0675デフォルトの名無しさんNGNG
セル自体をオブジェクトにとる方法ってありますか?
rangeじゃないですよね。
0676デフォルトの名無しさんNGNG
>>675
Rangeじゃない?
0677デフォルトの名無しさんNGNG
ご存知の方いらっしゃいましたら教えてください。

エクセルシートからCSVファイルを作成するときに
Open file
write #Fileno long(1),long(2),・・・
close file
として数値をダブルコーテーションでくくられていない状態にできるのは
わかったんですけど、
write #Fileno double(1),double(2),・・・
としたときに 0.123 のような値の出力は .123 とされてしまいます。
一の位の0が落ちないようにCSVを作成するにはどうしたらいいのでせうか?
0678デフォルトの名無しさんNGNG
>>677
VBAは使ったこと無いのだが
Format(0.123, "#0.###")
みたいな事はできないのか?
0679デフォルトの名無しさんNGNG
何も考えずにSAVEASメソッドでCSV形式保存すればいいような…
0680677NGNG
>>678-679
ありがとうございました。
明日会社でやってみます。
0681デフォルトの名無しさんNGNG
キーボードから5つの数字を取り込み、それらのうち最大の数、最小の数を画面表示するプログラムって作れる人いますか?(Visual Basicです)
0682デフォルトの名無しさんNGNG
>>681
いますよ。
で?VBAでやりたいのか?
0683デフォルトの名無しさんNGNG
そうです!書いてもらえるとありがたいです

0684デフォルトの名無しさんNGNG
>>683
宿題は自分でやれ。
0685デフォルトの名無しさんNGNG
お願いします〜
0686句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. NGNG
>>685
0687デフォルトの名無しさんNGNG
SaveAsメソッドでセーブするとき、同名のファイルがあると上書き確認のダイアログ出ますよね。
で、cancelとかいいえをおすとSaveAsメソッドに失敗したという実行エラーになる。。。

処理の最後の部分なので、Resume Nextで進めばいいかとしておきましたが
何かもっとスマートに解決する方法無いですかね?
0688デフォルトの名無しさんNGNG
>>687
saveasの後にスペースを打ってみろ。
0689デフォルトの名無しさんNGNG
>>687
Dirで存在調べてあったら消しゃいいだろ
0690デフォルトの名無しさんNGNG
>>689
だせぇ。
0691デフォルトの名無しさんNGNG
>>687
On Error Gotoで例外処理。
JavaとかC#とかではそれが当たり前。
0692デフォルトの名無しさんNGNG
ああ、VBしか使ってないから恥かいた。
0693デフォルトの名無しさんNGNG
>>689
そっかそっか。勝手に消すかはともかく先回りして調べておきゃいいよな。

例外処理はTryCatchでできればいいけんだけど、まぁVBAだし。
0694デフォルトの名無しさんNGNG
>>687
これかな?
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP292482
0695デフォルトの名無しさんNGNG
>>693
>そっかそっか。勝手に消すかはともかく先回りして調べておきゃいいよな。

キャンセルしたら元ファイルが消えるという愉快な罠。
0696デフォルトの名無しさんNGNG
activecell の行の "A1:K1" の背景に色を塗るってどうやるんでつか?
行だけは相対参照で、列が絶対参照なんです。
0697デフォルトの名無しさんNGNG
Excel2000 VBAでExcelの最大化やリサイズを通知してくれるイベントはあるんでしょうか。
0698デフォルトの名無しさんNGNG
>>697
ない
フックしろ
0699696NGNG
696をちょっと訂正します。
ActiveCell の行の1列目から10列目までのセルの背景を黒くするマクロ
を書きたいのですが、どう書けばよいのかわかりません。
行が相対参照で列が絶対参照なんです。
0700デフォルトの名無しさんNGNG
>>699
Cells(ActiveCell.Row, 1).Resize(1, 10).Interior.ColorIndex = 1

でいいのかな?
0701デフォルトの名無しさんNGNG
>>699
どこでつまづいているんだろう。
アクティブセルの行数を取得できているか、
Rangeで選択するときにCellsを使っているか、
ぐらいじゃないか。
0702696NGNG
>>700助かりました。ありがとうございます。
0703きょうこ。NGNG
InStr で Chr(10)の位置を検出したいんであけど、どうすればいいですか?
textCommentが検索対象のテキストとして
InStr(0, textComment, Chr(10), vbTextCompare)
とやっても8文字目にはいってる改行コードの位置が帰ってきません。
vbTextCompareをvbBinaryCompareにしてもだめでした。
textComment の中身をメモ帳に貼り付けるとちゃんと改行されるんですけど・・・
0704Instr(1,NGNG
検出したいんであけど
0705デフォルトの名無しさんNGNG
>>703
Instrのスタートは1から
0706デフォルトの名無しさんNGNG
A列が空白ではない行のBからK列の空白に*という文字を入れたいのですが
どう書けばよいのでしょうか
0707デフォルトの名無しさんNGNG
セル内のデータの取得と変更、空白かどうかの判定式、ループ処理あたりを調べる
0708デフォルトの名無しさんNGNG
質問です。

C++で作成したDLLとExcelの間で、文字列の配列を
ユーザ定義型の中の二次元配列でやり取りしようとしてます。
(この時点で間違ってるかな…)
で、
public Type STRUCT
buf(10) As String * 64
end Type
------------------------
Dim struct As STRUCT
としてDLLに渡してやると上手くいくんですが、
渡す直前に配列数を増やそうと思い、
public Type STRUCT
buf() As String * 64
end Type
------------------------
Redim struct.buf(10) As String * 64
としてDLLに渡すと上手くいきません。
理由や代替法など、どなたかご教授願えませんでしょうか?
0709デフォルトの名無しさんNGNG
>>708
上手くいきません上手くいきません上手くいきません上手くいきません
上手くいきません上手くいきません上手くいきません上手くいきません
上手くいきません上手くいきません上手くいきません上手くいきません

症状くらい書けねえのか!
0710デフォルトの名無しさんNGNG
>>709
はいはい
0711708NGNG
>>709
すみません…

症状の方は、DLLの関数を実行して処理が戻ってきた時に落ちます。
「0xXXXXXXXX での命令は、 0xXXXXXXXX のメモリを参照しました。
 メモリが read になることができませんでした。」
と、デバッガを起動させると表示されました。
0712デフォルトの名無しさんNGNG
CSVファイルとして出力したいのですが
Write #ステートメントで文字列であってもダブルクォートで括らないように出力したいのです
Print #でカンマと改行コード足してやるか、SaveAsでFileFormatをcsvでするしかないんでしょうか?
0713デフォルトの名無しさんNGNG
仕様です。
0714デフォルトの名無しさんNGNG
excel VBAで
RDOを使おうとして、rdoEnvironmentを
setすると、ActiveXコンポーネントはオブジェクトを
作成できません。
といわれます。
参照設定でRDO2.0を設定しても同じです。
RDOは使えないのですか?
0715デフォルトの名無しさんNGNG
>>711
肝心な所を隠すのか。。。
0716デフォルトの名無しさんNGNG
質問です。
Excelでプロセスメモリエディタのようなものを作ろうと思っているのですが
ExcelVBAでメモリ内の指定のアドレスの値を読むには
どのようにしたらいいのでしょうか?
0717デフォルトの名無しさんNGNG
判別式で、もし”ヌルポ”というシートが存在する場合にはAの処理へ
”ヌレポ”というシートが存在した場合はBの処理をするようにしたいのですが、
どのような関数を使えばいいのでしょうか?
教えてください。
0718717NGNG
Dim Sh As Worksheet
On Error GoTo Err1
Set Sh = Sheets("ヌルポ")
Worksheets("ヌルポ").Copy After:=Workbooks("galtu").Worksheets("nullpo")
GoTo Shori
Err1:
On Error GoTo Err2
Set Sh = Sheets("ヌレポ")
Worksheets("ヌレポ").Copy After:=Workbooks("galtu").Worksheets("nullpo")
GoTo Shori2
Err2:
Workbooks("galtu").Close
MsgBox "ヌルポもヌレポも存在しないファイルを選択しました。処理を中止します。"
GoTo ErrorEnd

どうもerr1の処理はしてくれるのですがerr2の処理はしてくれないのです。
どこがいけないのか教えていただけないでしょうか?
0719デフォルトの名無しさんNGNG
>>718
Shoriラベルがない。

そう言う使い方する場合はなるべくOn Error Resume Nextを使ってくれ。
読みにくい。
0720デフォルトの名無しさんNGNG
>>718
ttp://www.microsoft.com/japan/msdn/library/ja/vblr7/html/vastmonerror.asp
>エラー ハンドラがアクティブな間 (エラーの発生から、Resume、Exit Sub、Exit Function、
Exit Property の各ステートメントまで) にエラーが発生した場合は、現在のプロシージャの
エラー ハンドラはエラーを処理できません。
0721717NGNG
>>720
resume を入れていないからどの部分でエラーが起こっても
On Error GoTo Err1
だけ処理をしてしまって
On Error GoTo Err2
が使われなかったということっすよね?

resumeを知りませんでした。どうもありがとうございました。
0722デフォルトの名無しさんNGNG
質問なんですが
あるフォルダのパスを取得して、そのフォルダ内の
ファイル名をセルに書き出して・・・というマクロを作ってるんですが
対象になるフォルダパスの取得方法に悩んでいます。

ファイルを開くダイアログボックスみたいなのをだして
フォルダパスを取得したいんですが
どうしたらいいのでしょうか?
0723デフォルトの名無しさんNGNG
VBA フォルダを開く ダイアログボックス
でググるとすぐ引っ掛かるが…
0724716NGNG
解決しました
スレ汚してスマソ
0725デフォルトの名無しさんNGNG

質問です。
エクセルで当番表の様なものをつくっています。
土日はその列の背景をオレンジにするようなマクロを作成したいのですが
〜抜粋〜
Do
If ActiveCell.Value = "土" Then
row = ActiveCell.row
col = ActiveCell.Column
Range(Cells(6, col), Cells(26, col)).Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
〜省略〜
この様な感じで一応は動きます。
ただシート側の曜日の作成をDATE関数で作成しており、↑の比較ではシリアル値が比較対象となっているせいか
うまく土曜日、日曜日を判定してくれません。エクセル上のシリアル値ではなく表示されている文字で比較する方法はないのでしょうか?
いい解決策がありましたらよろしくお願いします。
0726デフォルトの名無しさんNGNG
すいませ〜ん、ひとつ教えてください。現在PCを使用しているユーザー名って知ることが出来るでしょうか?
Excel2000です。
0727デフォルトの名無しさんNGNG
If Week(ActiveCell.Value) = "土" Then
0728デフォルトの名無しさんNGNG
>>726
http://www.asahi-net.or.jp/~ef2o-inue/api/sub08_01_020.html
0729726NGNG
>>728
サンクス!頑張って勉強します!
0730デフォルトの名無しさんNGNG
HTMLの勉強してるんだけど、例文とか高橋愛・モーニング娘。とかばっかだからなw
0731デフォルトの名無しさんNGNG
>>725
If ActiveCell.Text = "土" Then
0732デフォルトの名無しさんNGNG
モジュール - ユーザーフォーム間でモジュールの変数の値を
渡したいのですけど、publicしか方法はないんですか?

逆にフォームの値もモジュールに渡したいんだけど・・。

よく分かりません。出来ればDimでなんとかできませんか?
0733デフォルトの名無しさんNGNG
>>732
ソケットでも張れ。
0734デフォルトの名無しさんNGNG
>>732
非表示にしたラベルのCaption使うとか。
0735デフォルトの名無しさんNGNG
Publicをつかいたくない理由が分からん…
0736デフォルトの名無しさんNGNG
>>735
ユーザが不用意に不正な値を変数にセットするのを防ぎたいんだろう。
つまりアクセサメソッドのことを言いたいんだよ。彼は。
0737デフォルトの名無しさんNGNG
>732
クラス作るのめんどうなんで、もっと簡単な
方法ないかと思っていたのですけど。
ありがとうございます。
0738デフォルトの名無しさんNGNG
>>736
ユーザーフォームもクラスなのでそういうことをしたければ
Property Let/Getがつかえる。
その場合でもPublic PropertyになるのでPublicは必ず必要。
それでもPublicが嫌ならPrivate Propertyにすればいいが、
そうするとユーザーフォームでしか使えない。
だからPublicを使いたくない理由が理解できなかったのだが。

元発言の意図がProtectedを使いたいのだとばかり…
0739デフォルトの名無しさんNGNG
spreadsheetを使っているんですが、セルの書式を文字列に変更したい場合はどうすればいいんでしょうか?
通常のシートの場合だと、cell.numberformat = "@" で
うまくいくことを確認しているのですが、spreadsheet では他の方法が
必要なのでしょうか?
わかる方いらっしゃったら、よろしくお願いします
0740デフォルトの名無しさんNGNG
>>738
継承できないじゃん。と、つっけんどん。
0741デフォルトの名無しさんNGNG
わるい √の計算方法わがんねぇ
だれかご教授ください
0742デフォルトの名無しさんNGNG
>>741
x^x=y

を解け
0743デフォルトの名無しさんNGNG
>>741
「開平算」でYahoo検索してみるのは?
0744デフォルトの名無しさんNGNG
sqr
0745デフォルトの名無しさんNGNG
741です
すまねぇSqrってやつがどーしてもでてこなかったorz
自己解決しますた
742さん 743さん 助言ありがとです
0746デフォルトの名無しさんNGNG
ValidMode As Excel.Validation
Set ValidMode = CreateObject("Excel.Validation") 又は
Set ValidMode = New Excel.Validation

これが通らない理由がわかりません。
なぜでしょうか?
0747デフォルトの名無しさんNGNG
書き方が正しくないから。
0748デフォルトの名無しさんNGNG
シート1のA1〜A100まで値が入っていたとして、その中から
文字列で「AA」が入ったセルだけををシート2のB列にコピーしたいのですが
どうしてもうまくいきません、誰か助けてください
0749デフォルトの名無しさんNGNG
>>748
取りあえずお前が書いたソースup
0750デフォルトの名無しさんNGNG
VBスレでも聞いてるな
0751デフォルトの名無しさんNGNG
すみません。おしえてください。

VBEで、プロジェクトエクスプローラーに
microsoft Excel Object
┣---sheet1
┣---sheet2
┣---sheet3
標準モジュール
┗---modules1

ってある場合、modules1の変数は
sheet1に渡すことはできるのでしょうか?
0752デフォルトの名無しさんNGNG
>>751
プロシージャの外、一番上に、Publicで宣言。

Public Hensu As String

みたいに。
0753デフォルトの名無しさんNGNG
>751
すみません。できました。
0754デフォルトの名無しさんNGNG
あー
0755デフォルトの名無しさんNGNG
作業番号 作業時間
 1 7
 2   4
 3   9
 4   2
のような表があるときに作業番号1〜4に対してそれぞれの持っている時間を
求めるにはどうやればいいのでしょうか?
それを使ってその中から最小の値の番号を調べるようなプログラムを作りたいのですが

0756間違えたNGNG
作業番号 作業時間
  1     7
  2     4
  3     9
  4     2
のような表があるときに作業番号1〜4に対してそれぞれの持っている時間を
求めるにはどうやればいいのでしょうか?
それを使ってその中から最小の値の番号を調べるようなプログラムを作りたいのですが
0757>>756NGNG
はっきりいって意味わかんね。
まず他人の立場に立ってみて、この説明を読んで質問内容が理解できるか
考えてみ。
0758デフォルトの名無しさんNGNG
>>757
マジか?シスアドレベルだぞ?
0759デフォルトの名無しさんNGNG
単に作業時間を昇順でソートして一番上にくる作業番号を抜き出すだけだろ。
0760>>757NGNG
すんません。文章下手すぎで
0761デフォルトの名無しさんNGNG
このデータは Excel の表に入ってるの?それとも外部ファイルを読むの?
0762デフォルトの名無しさんNGNG
使ってるのはExcel2000で、本でも読んでじっくり勉強したいと思うんですが
お薦めの一冊はどれでしょうか?
0763デフォルトの名無しさんNGNG
>762
http://pc5.2ch.net/bsoft/
こっちの板で質問した方が良さげかもなぁ

webやhelpで事足りるんで本買わない
0764デフォルトの名無しさんNGNG
図書館がお勧め
0765デフォルトの名無しさんNGNG
すみません 教えてください。
ACCESSからEXCELファイルを開く際、
該当のファイルがすでに開かれているか
チェックしたいのですが・・・。
EXCELのVBAではできたのですが、
それをACCESSで行おうとするとうまくいきません・・・。
0766デフォルトの名無しさんNGNG
教えてください。
Excelでリストボックス内の項目をダブルクリックしたあとに
選択が解除されている状態にしたいのですがうまくいきません。
ListIndexを-1にすればいいというような記述を見つけたので
やってみましたが、選択された状態(項目が反転表示)のままです。
List.Clearして項目を追加しなおすという作業が必要なのでしょうか、、、
0767デフォルトの名無しさんNGNG
>765
どううまくいかないのか書かないと誰も答えられません。
0768デフォルトの名無しさんNGNG
教えてください。
Access2000で、以下のようなことをやりたいのですが、うまい方法が思いつきません。

クラスモジュールとして
Class1
 Class2
  :
 Class8
があり、Class1〜8には同じ名前のメソッドが定義されている。
他のクラスモジュールから、Classiのインスタンスを生成したいのですが、
Public sub test(i as integer)
 Dim obj as Object
set obj = new ________
      :
newの後に、固定以外のクラスを指定する方法が分かりません。
クラスのコレクションみたいなのがあって、"Class" & format(i,"0") でうまいこと出来ないものでしょうか。

どうぞ宜しくお願いいたします。
0769デフォルトの名無しさんNGNG
>>768
ファクトリを作りなさい。
0770デフォルトの名無しさんNGNG
>>766
とりあえず2通り。

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 ListBox1.Value = ""
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 With ListBox1
  .Selected(.ListIndex) = False
 End With
End Sub
0771デフォルトの名無しさんNGNG
>>768
>があり、Class1〜8には同じ名前のメソッドが定義されている。

設計を見直した方がいいとおもう
0772デフォルトの名無しさんNGNG
命名のセンスはともかくとして、同名メソッドがあるなんて珍しくないだろ。
インタフェース使って、あとは>769の言うようにファクトリ的な事すりゃスマートに書けるかと。
0773デフォルトの名無しさんNGNG
>>771
VB以外の先進的なプログラミング言語の本の多態とかポリモフィズムって言う章を良く読むよろし。
0774デフォルトの名無しさんNGNG
>>769, >>772
う〜ん、やはりファクトリ作るしか解決法はないんですね。
すっきりしました。
どうもありがとうございました。
0775デフォルトの名無しさんNGNG
セル内に入力されたものが数字か文字列か判定する方法ってないですか?

田中
01-480-21
2350
ひらい
01-481-21
2540

これで文字列のとこだけ処理かけたいのですが
0776デフォルトの名無しさんNGNG
自分でやるなら
使われている文字コードの範囲が 30H 〜 39H のみからなる場合
かどうかを調べる。
0777デフォルトの名無しさんNGNG
>>775
日付の場合は数字扱い?文字列扱い?
0778デフォルトの名無しさんNGNG
日付ってなんですか?
0779デフォルトの名無しさんNGNG
>>778
今日なら「2004/11/20」です。
0780デフォルトの名無しさんNGNG
>01-480-21

ここでの場合、これも数字扱いするの?どっち?
0781デフォルトの名無しさんNGNG
>>780
それは日付なんですか?
0782デフォルトの名無しさんNGNG
>>781
文字列だろ。いちいち聞かないと分からないのか?
0783デフォルトの名無しさんNGNG
>>782
Prologにマジレスカコワルイ。
0784780NGNG
俺の質問に答えてくれよ。
「01-480-21」は文字列として省いていんだな?例で挙げている「2350」や「2540」を
抽出するだけでいいんだな?
あと「名前」>「なんかのハイフン入り番号」>「四桁のなんかの番号」のペアは必ず一定で、繰り返し続いて
いるのか?
0785デフォルトの名無しさんNGNG
>>784
誰がそんなこと言った?
0786780NGNG
もうめんどくさ。組んでやろうと思ったが、質問者が要領を得ないので止めることにする。
ISNUMERIC関数を使え。そんだけ。
0787デフォルトの名無しさんNGNG
Debug.Print StrReverse("こんちたびなし")
0788デフォルトの名無しさんNGNG
ユーザーフォームを表示させている状態でワークシートのセルが操作出来ません。
ユーザーフォームを表示させながらセル操作をする方法はあるのでしょうか?
若しくはシート上に作ったボタンが画面をスクロールさせても常に同じ位置にあり続ける方法を
教えて頂けないでしょうか?

初歩的な質問かもしれませんが、検索してもなかなか説明してるページに
たどり着けません。どなたかよろしくお願いします。
0789デフォルトの名無しさんNGNG
>>788
もーだれす。
0790デフォルトの名無しさんNGNG
>>788
Modelessは旧バージョンでつかえないのでその場合はあきらめる

定期的にボタンを移動させるだけなら
Public Sub MoveShapeTop(ByVal UpdateIntervalSec As Integer)
 Dim rng As Range
 Set rng = Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn)
 ActiveSheet.Shapes(1).Top = rng.Top
 ActiveSheet.Shapes(1).Left = rng.Left
 Application.OnTime Now + TimeSerial(0, 0, UpdateIntervalSec), "'MoveShapeTop 1'"
End Sub
こんなことしないでコマンドバー使ったほうがマシ
0791788NGNG
>>789さん>>790さん
ありがとうございます。
当方2000の環境なので無事modelessが使用出来ました。

0792デフォルトの名無しさんNGNG
0793デフォルトの名無しさんNGNG
問、N回コインを投げ、M回「表」が出たときに「表」のでる割合は、
f=M/Nで表されるプログラムを作成してください。
コインの投げる回数はセルA4~A7の中から1つ取り出した後に
Integer型変数に格納して使用し、「表」のでる
割合f=M/Nを対応するセルB4~B7に格納する。
なお、「コイン投げの回数」が格納されているセル位置を毎回修正後に
プログラムを実行すること。
コインを投げる回数Nを大きくすると0.5に収束することを確めてください。
※A4~A7はコイン投げの回数
A4は10,A5は100,A6は1000,A7は10000というコイン投げの回数になってます。
よろしくおねがいします。
0794デフォルトの名無しさんNGNG
>>793
学校の課題ですか?
0795デフォルトの名無しさんNGNG
実務じゃそんな処理、万に一つもやらねー
0796デフォルトの名無しさんNGNG
>>795
うちはそれを生業にしているシンクタンク系S/Wデベロッパですが。
0797デフォルトの名無しさんNGNG
すみません。
スレ違いかもしれませんが
質問していいでしょうか。

VBAを勉強したいのですが
お勧めの本はありますか。
定番の本など。

急にexelでマクロを書かなくてはならなくなり
田舎に住んでいまして、近くに大きい本屋がなく
店頭で立ち読みしてきめることができません。
アマゾンで購入しようと思っています。
プログラムは、C++やPerlがちょっと書けるくらいです。

よろしくお願いします。
0798通りすがりNGNG
「かんたんプログラミング Excel2003 VBA」
・基礎編、・コントロール・関数編、・応用編

定番です

0799デフォルトの名無しさんNGNG
>>798

早々のご回答どうもありがとうございます。
早速アマゾンで注文したいと思います。

あつかましいのですがもうひとつだけ質問していいでしょうか。
現在、使用しているexelのバージョンが2000なのですが
その場合、
1.かんたんプログラミング Exel2000 VBA を買う
2.かんたんプログラミング Exel2003 VBA を買う
3.かんたんプログラミング Exel2003 VBA と Exel2003を買う
のどれがいいでしょうか。
3.が一番良いのでしょうが、2003用の本でも「リスト機能」など
強化されたところをとばせば、2000用の解説書として読めるのでしょうか。
申し訳ありませんが、わかる範囲でご回答いただけたらうれしいです。
0800通りすがりNGNG
そこまではちょっと分からないです。

1番が無難かと。

あと分からないことは、下のサイトで聞けばよいと思います。

「Moug モーグ」
http://www.moug.net/

Q&A掲示板 Excel VBA




0801797,799NGNG
>>800

どうもありがとうございます。
そうですね。1が無難ですね。
では、これを注文したいと思います。
質問に答えていただきどうもありがとうございました。
0802デフォルトの名無しさんNGNG
4.かんたんプログラミング Exel2003 VBA と かんたんプログラミング Exel2000 VBA を買う
0803797NGNG
>>802

そうですね。2000を読んでみて、もっと知りたくなったら
2003を読んで新しく何ができるかを勉強してみます。
0804793NGNG
おしえてください。たのみます。
0805デフォルトの名無しさんNGNG
>>804
宿題は自分でやりましょう。
0806デフォルトの名無しさんNGNG
SQLのテーブルに
TO_DATE('23-11-2004 11:36:44 AM ','dd-Mon-yyyy HH:MI:SS AM')
な感じで保存されてる日付データがあるんだが、
これの年月日だけ取り出すにはどーすればいいのかね

もしくは全部変数に抽出して、
変数の年月日だけ指定できたらいいんだが‥

むぅ
0807デフォルトの名無しさんNGNG
substrで切り出してto_dateにでも突っ込んでやれ
0808デフォルトの名無しさんNGNG
>806
TO_DATE('23-11-2004 11:36:44 AM ','dd-Mon-yyyy HH:MI:SS AM')
という文字列が入ってるって事け?
あとSQLServerをSQLと略すのヤメレ
0809デフォルトの名無しさんNGNG
久々にVBA書かなきゃならないことになったのですが、
多重ループにラベル付けておいて Exit ラベル名 とかで
脱出するようなことってできなかったんでしたっけ?
何かあったような気がするのですが。。。Goto使うしかないのかな。
0810デフォルトの名無しさんNGNG
どっちにしろ構造化無視のジャンプだからどうでも良いような気がした。
0811809NGNG
ああ、まあ、普通のネストしたループの breakですよ。
ある条件でループをそれ以上実行しなくて良くなるので
その関数の終了処理に移りたいという感じ。
Do While ...
 For ...
 Exit Do
 Next
Loop
<<終了処理>>
みたいな感じででとりあえずやってるのですが、
外側のループを Forループにしたいんです。
0812デフォルトの名無しさんNGNG
gotoがいやなら exit sub かな
0813デフォルトの名無しさんNGNG
うーん、Exit Sub使うと
その関数内では終了処理できなくなってしまう気が…
0814811NGNG
On Error で囲んで エラーRaiseでハンドルするのって
この手の処理にはキモイやりかたですよね?
どう思います?
0815デフォルトの名無しさんNGNG
ごちゃごちゃ言わずにgoto
0816デフォルトの名無しさんNGNG
どうしても構造化したいならフラグをネスト毎に作れ
0817デフォルトの名無しさんNGNG
レス沢山サンクスです。
黙ってgotoすることにしました。ありがとうございます。
0818デフォルトの名無しさんNGNG
質問です.
初めてVBAを使います.
Data0001
Data0002
:
:
と,順番にファイルを読み込みたいです.
For i=1 to n
Workbooks.Open Filename:="Data000???.xls"

???のとこのプログラムをどのようにすればいいでしょうか?
0819デフォルトの名無しさんNGNG
>>818
"Data" & Format(i, "0000") & ".xls"
0820デフォルトの名無しさんNGNG
>>819
助かりました.
初めて使うもので,わからないことが多いもので
0821デフォルトの名無しさんNGNG
 条件付き確率のシミュレーションでは、実験回数をセルより取り出す際
に、VBAのプログラムを修正して行わず、自動的に実験回数10が終了すると実験回数
100、1000、10000と進むようにするにはどうすればいいのでしょうか。
0822デフォルトの名無しさんNGNG
>>821
 Dim i As Long, 実験回数 As Long
 For i = 1 To 4
  実験回数 = Range("A1").Value ^ i
  MsgBox 実験回数
 Next
0823デフォルトの名無しさんNGNG
>>822さん
ありがとうございます。
0824デフォルトの名無しさんNGNG
質問、60%は女性で、その内30%は独身女性であった。
女性客からデタラメに1人選んだ時に、その人が独身である確率を求めた時の
条件付のプログラムを作成した場合、For文、 IF文の使い方、
乱数の使用が分かりません。
実験回数10が終了すると実験回数100、1000、10000と進むようにする。
確率が0.5に収束することを確かめる。
どうすればいいでしょうか?
0825デフォルトの名無しさんNGNG
10000回なら100x100のセルですむからワークシート上だけで
試行できるぞ。
0826824NGNG
>>825
エクセルの操作で行うのではなく、全てVBAで行わないといけないんです
0827デフォルトの名無しさんNGNG
宿題丸投げスレになった?
0828デフォルトの名無しさんNGNG
そもそも問題が良くわからん。824の書き方だと
30%ってのは女性客に対する独身女性の割合だと
おもうんだが、答えが0.5に収束するってのは変だよね。
実は30%というのは全体に対する独身女性の割合なんじゃ
ないの? ○投げにしても問題文ちゃんとこぴぺ
してくれよ。
0829824NGNG
>>828
ある旅行ツアーで参加者を調べたところ、60%は女性(40%は男性)で、
その内30%は独身女性であった。女性客からデタラメに1人選んだ時に、
その人が独身である確率を求めよ。
事象A:独身である人
事象B:女性である
条件付き確率の公式によって、0,5(確率が0.5に収束することを確かめる)
0830デフォルトの名無しさんNGNG
条件付き確率の公式って何?
0831デフォルトの名無しさんNGNG
>>830
P(A|B)=P(A∩B)/P(B)
0832デフォルトの名無しさんNGNG
>>829
女性客の内30%が独身で、
女性客からデタラメに1人選んだときに
独身である確率は、当然30%だろ。
0833デフォルトの名無しさんNGNG
そう読めなくもないな
0834デフォルトの名無しさんNGNG
シートにボタンとリストボックスを作っておいて
ボタンクリックイベントでリストボックスを引数にしたプロシージャを呼び出す形で
リストボックスのvisibleをトグルしたいのですが上手くいきません
以下失敗作ですがアドバイスお願いします

'リストボックス名  lbcustomer
'ボタン名      cbToggleCustomerList

     'Aタイプ:
Private Sub cbToggleCustomerList_Click()
 AnyListBoxVisibleTggle (ActiveSheet.OLEObjects("lbCustomer"))
End Sub

Sub AnyListBoxVisibleTggle(AnyListBox As Variant) '型は何?
 AnyListBox.Object.Visible = Not AnyListBox.Object.Visible
End Sub


      'Bタイプ:
Private Sub cbToggleCustomerList_Click()
 AnyListBoxVisibleTggle (lbCustomer)
End Sub

Sub AnyListBoxVisibleTggle(AnyListBox As Variant) '型は何?
 AnyListBox.Visible = Not AnyListBox.Visible
End Sub

0835デフォルトの名無しさんNGNG
>>834
Aタイプ
AnyListBox.Visible

Bタイプ
Activesheet.lbCustomer
0836デフォルトの名無しさんNGNG
>>835
両方で出来ました

色々試したつもりだったんですが
同じ間違いを繰り返し続けてたのかもしれません・・・

有り難うございました
0837デフォルトの名無しさんNGNG
Excel2003を使用してますが
VBAでフォーム上のテキストエリアで右クリックしたときにメニューを表示させたいのですがどうすればいいのでしょうか?
0838デフォルトの名無しさんNGNG

コンボボックスで値を編集できないようにする方法を誰か教えて
listfillrange を a1:a10 とセル範囲を指定するまではいいけど、
その値を編集できて値が変わるのがダメなんですよ。。。
0839デフォルトの名無しさんNGNG
>>838
自分の金は自分で稼げ。
0840デフォルトの名無しさんNGNG
>>838
マルチ君さよなら。
0841デフォルトの名無しさんNGNG
VBAでフォームモジュールとクラスモジュールだけ使ってりゃ
オブジェクト指向と言えますか?
0842デフォルトの名無しさんNGNG
>>841
C言語でかきゃ構造化というわけでもないのと同様でちゃんチャラお菓子い。
0843デフォルトの名無しさんNGNG
コントロールの素早いクリック操作がダブルクリックと判定されて困ってるんですが
ダブルクリックイベントって無効に出来ますか?
それとも何か良い解決方法がありますか?
0844デフォルトの名無しさんNGNG
ハンドルしなきゃ無効なんじゃない?
0845デフォルトの名無しさんNGNG
無効ではないっぽいです
ダブルクリックするとクリックイベントが2回発生して欲しいんですが
2回目は空のダブルクリックイベントプロシージャが回ってる感じがします
ダブルクリックにもクリックと同じコードを書くって手もありますが
美しくない気がしますしそもそもクリックアップダウン時の挙動が違ってきますし・・・
0846デフォルトの名無しさんNGNG
Timer1がないんです。 VBのTimerはどのOCXですか?
0847デフォルトの名無しさんNGNG
0.6以下の乱数を表示させるためにはどうしたらいいでしょうか?
0848デフォルトの名無しさんNGNG
引き算か掛け算でmax0.6になるように汁
0849独学者NGNG
WEB上のデータを入力し、その後、その入力データを
加工しようとするプログラムを作ったのですが、
入力データがあまりにも多すぎるためか、入力が完全にされる
前に次の作業を行ってしまい、エラーが生じます。
誰か、解決策を教えてください。
0850デフォルトの名無しさんNGNG
Application.Wait
0851デフォルトの名無しさんNGNG
今年度の年齢を出す関数はどう作ったらいいのでしょう…。
DateSerialで、今年度の3月31日を出すところまでやったのですが。。。
0852デフォルトの名無しさんNGNG
>>851
足し算と引き算が出来ると作れるよ
つまり算数の教科書を読めば良いということだね
0853デフォルトの名無しさんNGNG
>>852←シリウス歴知らない奴
0854デフォルトの名無しさんNGNG
>851
VBA初心者なのでこの程度まだ思い浮かびませんが・・・

A列:誕生日
B列:今年度の日(3月31日)
C列:今年度の年齢を表示

Dim n, counter As Integer
n = Sheets("Sheet1").Range("A65535").End(xlUp).Row
counter = 0

For i = 1 To n
counter = counter + 1
Sheets("Sheet1").Cells(counter, 3) = _
Application.RoundDown(((Cells(counter, 2) - Cells(counter, 1) - ((Cells(counter, 2) - Cells(counter, 1)) / (365 * 4))) / 365), 0)

Next i


※B列がCells(counter,2)なので、この部分は今年度の日が一定なら定数にしても良いと思います。
もっとすっきり出来るのであればご教授下さい>中上級者の皆様
0855854NGNG
すんません・・↑だとおかしいですね・・

Application.RoundDown(((Cells(counter, 2) - Cells(counter, 1) - ((Cells(counter, 2) - Cells(counter, 1)) / (365 * 4))) / 365), 0)
↓
Application.RoundDown((Application.RoundDown((Cells(counter, 2) - Cells(counter, 1)), 0) - Application.RoundDown(((Cells(counter, 2) - Cells(counter, 1)) / (365 * 4)), 0)) / 365, 0)

に変更してください。
でも汚いですね・・・;;
0856デフォルトの名無しさんNGNG
不良品が2個でるまで品物を検査し、5個以内で2回目が見つかったとき
再点検することにしている。製品が不合格になる確率をp=0.05, p=0.1,
と変えながらそれぞれ製品数500個を検査した場合、
「再点検(再点検回数と再点検率)」する回数とその確率を求める
VBAプログラムをつくりたいと思っています。
*1回目の不合格の製品が見つかると2回目の製品が不合格になるまでに検査
した製品をカウントする。
*1回目の不合格製品と2回目の不合格製品の間の製品カウントが5以上の場合に
再点検回数を1増やす。
乱数、If文、for文を使用しなけ
ればならないことは分かっているんですが・・


0857851NGNG
>854
レスありが�dです。
あれから自分なりに考えて見ました。

Function 年度年齢(生年月日 as Date)
Dim 今月 As Byte
Dim 今年度の日 As Date '←3月31日のこと
Dim 誕生月 As Byte

今月 = Format(Date,"m")
Select case 今月
Case 1,2,3
今年度の日 = DateSerial(Year(Date),3,31)
Case Else
今年度の日 = DateSerial(Year(Date)+1,3,31)
End Select
'↑ここまでこの前考えてた所です

誕生月 = Format(生年月日,"m")
Select Case 誕生月
Case 1,2,3
年度年齢 = DateDiff("yyyy",生年月日,今年度の日)
Case Else
年度年齢 = DateDiff("yyyy",生年月日,今年度の日)-1
End Select
End Function

合ってるかどうか確証がなかったのですが、
デバックすると、なんとなく年齢はあってるようなので、
この形で落ち着きました。
>854さんすいません…また分からないことあったら教えて下さい。
0858デフォルトの名無しさんNGNG
>>857
それを簡潔にするとこうかな?

Function 年度年齢(生年月日 As Date)
Dim 今月 As Byte, 誕生月 As Byte
Dim 今年度の日 As Date '←3月31日のこと

  今年度の日 = DateSerial(Year(Date) + IIf(Format(Date, "m") <= 3, 0, 1), 3, 31)
  年度年齢 = DateDiff("yyyy", 生年月日, 今年度の日) - IIf(Format(生年月日, "m") <= 3, 0, 1)
End Function
0859デフォルトの名無しさんNGNG
名前を付けて保存ダイアログの
最初に表示されているフォルダを指定する方法ってありますか?

苦肉の策で Application.Dialogs(xlDialogSaveAs).Show で
ファイル名にフルパスを指定したんですが
何故かパスが削られてファイル名のみ有効になりますし・・・
0860デフォルトの名無しさんNGNG
VBA Accessでの質問したいのですが
コンボボックスからモジュールへ値を持って取ってきたいのですが出来ません。
本来だったらコンボボックス名.valueで取れると思うのですが私がしたいのは
列数3,列幅0cm;2cm,0cmのところから二つ目の列の値を持ってきたいのです。
従来通りコンボボックス名.valueをすると一列目が取れてしまいます。
どのようにすれば二列目の値を取ることができるでしょうか?
ご教授お願い致します。
0861860NGNG
事故解決いたしました。
コンボボックス名.Column(列番号)でした。
0862デフォルトの名無しさんNGNG
コンボボックス名.column(1)でならんかな?
インデックスは0かららしいです、念のため。
0863862NGNG
しまった!
タッチの差やった…。
0864デフォルトの名無しさんNGNG
サブフォームにテーブルを表示させているのですが
ここにデータを入力したデータをDBに反映させたり出来るのでしょうか?
色々資料を見るとテキストエリアを並べてRDBの様に見せかけてるやつが
多いのですが・・・。
また「検索」ボタンを押すとコンボで選択した値をキーに検索をかけ
サブフォームに反映させたいのですがどのようにすれば可能でしょうか?
2つやり方を思いついたのですがそれで可能なのかが分かりません。

1.コンボの値をモジュールで受け取りSQLを生成してサブフォームに反映。
    (SQLを作るところまで出来たのですがサブフォームに反映の仕方がわかりません。)
2.コンボの値をクエリで受け取り画面を生成

どうかご教授お願い致します。
0865デフォルトの名無しさんNGNG
ご教授願います。

TBL内に任意のアドレスを保持します。
そのアドレスを元に、画像を取得し
コントロールに貼り付けたいと思っているのですが、
画像取得時にWindowsの画面と思うのですが、
「インポート中です」と言うメッセージが出てきてしまいます。

このメッセージを消す方法はないでしょうか?

現在、レジストリ等弄りましたが改善されませんでした。

宜しくお願い致します。
0866デフォルトの名無しさんNGNG
>>865
その質問に答える前に一つ聞くがお前巨乳は好きか?
0867デフォルトの名無しさんNGNG
ExcelのVBAで、applicationのメソッドにEvaluateというのがありますが
これはシェルやPerlのevalのように
文字列でサブルーチン名を渡すとそのサブルーチンを実行してくれるような
機能はないのでしょうか?
組み込み関数だと上手くいくようなのですが、自分で定義したものだとどうも駄目です。
関数のディスパッチなどに使えたら便利だなぁと思うのですが…
0868デフォルトの名無しさんNGNG
VBAでCollectionに入れた要素って
個々の要素を決してRemoveすることがなければ
Addした順序で並んでいると信じちゃって良いんでしょうか?
ちょっと試したところ、そんな感じになっているのですが。。
0869865NGNG
>866
好きですが
0870デフォルトの名無しさんNGNG
>>859
ChDir "C:\Temp"
Application.GetSaveAsFilename
0871デフォルトの名無しさんNGNG
>>867
関数のディスパッチってこういうこと?

Sub Main()
  Dim i As Long
  For i = 1 To 3
   Application.OnTime Now(), "Test" & i
  Next
End Sub

Sub Test1()
 MsgBox "Test1"
End Sub

Sub Test2()
 MsgBox "Test2"
End Sub

Sub Test3()
 MsgBox "Test3"
End Sub
0872デフォルトの名無しさんNGNG
Perlのpush、pop、shift、unshift、split、join
あたりの関数誰か作ってくれないかね?
0873867NGNG
>>871
おお、まさにそれです!
OnTimeというのには面食らいましたが素晴らしい。
お借りします。サンクスです。
0874デフォルトの名無しさんNGNG
Application.Runのほうがいい希ガス
0875871NGNG
>>874
そうですね。
Application.Run は出てこなかった・・・。
0876お助けをNGNG
CSVファイルをエクセルに取り込もうと思ったら
CSVファイルの中身が

・先頭にCRが二つ
・改行がLF
になっていました
毎回、ワードパッドで変換するのも大変なので
エクセルのVBAで改行コードを書き換えようと思いました

CSVファイルをエクセルの#1に取り込んだ後
・先頭のCRを削除
・LFをCRLFに変換
という作業をしたいと思います
0877つづきNGNG
とりあえず
↓こんな感じで構想したんですが
Open FILENAME For Input As #1

<開いた#1を全部 C に突っ込む作業>

C.Replacement What:=Chr(13), Replacement:=""
'LF CRLFへの変換
C.Replace What:=Chr(10), Replacement:=Chr(13) & Chr(10)

<#1に書き戻す作業>
'以下Sheet1に書き込む

という流れを考えたんですが
<開いた#1を全部 C に突っ込む作業>
<#1に書き戻す作業>
この作業がうまくいきません
はたしてChr(13)やChr(10)で変換できるのかも不明・・・

うまくエクセル内部で改行コードを変換したいのですが
達人のみなさん、良い方法ないでしょうか?
0878デフォルトの名無しさんNGNG
perlの方が楽。
0879デフォルトの名無しさんNGNG
>>876-877
置換する前の状態でExcelに取り込むとどういう状態に
なるんですか?
0880デフォルトの名無しさんNGNG
>>879
CSVをダブルクリックで普通に開くと
先頭にCRがくっ付いてるので最初の一行目が「・・」か文字化け、あるいは「・・データ」または
一行目も正常に読まれる

という状況です

2行目以降は、LFはCRLFに置き換えて読み込まれて各セルに格納されるようです

Open FILENAME For Input As #1
をつかっているのは
CSVそのままだと65536行以上になる場合があるので
内部で開いて同じグループは横に伸びるように振り分けて取り込んでいます

ワードパッドで毎度変換するのも大変なので
なんとかできないものかと思考錯誤しております
0881デフォルトの名無しさんNGNG
>>880
参考になれば。
Sub Macro1()
Dim FS, CSVFile
Dim FileName As String, CSVStr As String

  FileName = ActiveWorkbook.Path & "\TEST.CSV"
  Set FS = CreateObject("Scripting.FileSystemObject")
  Set CSVFile = FS.OpenTextFile(FileName)
  Do Until CSVFile.AtEndOfStream
   CSVStr = CSVStr & Replace(CSVFile.ReadLine, vbCr, "") & vbCrLf
  Loop
  CSVFile.Close
  
  Set CSVFile = FS.OpenTextFile(FileName, 2)
  CSVFile.Write CSVStr
  CSVFile.Close
  MsgBox "変換完了"
End Sub
0882デフォルトの名無しさんNGNG
>881
こんな夜更けに有難うございます!!!

とりあえず、今あるマクロに上記のコードを組み込んだら
秀丸で意図的に作ったLF改行のCSVで
うまく動きました

明日・・・というか今日ですが
881さんのを参考に職場の方にある問題のCSVファイルで実行
してみます

これから寝ます
かみさまありがとうございました
0883デフォルトの名無しさんNGNG
エクセルのコマンドバーなんですが
Set Ctrl = Application.CommandBars("Cell").Controls.Add()
With Ctrl
.OnAction = "Sheet1.Hoge"
.Parameter = "12345"
End With
とすると、Sheet1.Hoge が引数 "12345" で呼び出されるようなことが
ヘルプにあるのですが、どうも引数が渡っていないようです。
Public Sub Hoge(Arg as String)
と受け側を定義して実行すると「引数は省略できません!」と怒られてしまいます。
多分、どこか間違っているのでしょうが、コマンドバーから呼び出す関数に引数を渡すのは
どうやったら良いのでしょうか?お助け下さい。
0884デフォルトの名無しさんNGNG
ある集合(標本数は変数)を辞書式配列にして表示するマクロを考えていますが
組み方が思いつきません
何重かのループになりそうなんですが…
0885デフォルトの名無しさんNGNG
>>884
ハッシュとか連想配列を使いたいということですかね?
0886デフォルトの名無しさんNGNG
>ハッシュとか連想配列

違うもんでしたっけ?
0887デフォルトの名無しさんNGNG
>>883
確実に間違った解決法だと思うけど、

With Ctrl
.OnAction = "Sheet1.Hoge"
.Parameter = "12345"
End With
       ↓
With Ctrl
 .OnAction = "'Sheet1.Hoge 12345'"
End With

とすると引数(12345)は渡されてるようです。
0888デフォルトの名無しさんNGNG
>>887
あ、シングルコーテーションするのですね!!
やってみます!!ありがとうございます
0889デフォルトの名無しさんNGNG
>>888
ツラレクマー
0890デフォルトの名無しさんNGNG
>>887
ばっちしでした。ありがとうございます。
0891デフォルトの名無しさんNGNG
>>884
Microsoft Scripting Runtimeに参照設定(or CreateObject)して
Scripting.Dictionary使うなり
Collectionでそれっぽく使うなり...
0892880NGNG
880です
スレの皆さんにはあまり興味ないかもしれませんが事後報告です

問題のCSVファイルを881氏のを参考に試行錯誤してみたんですが
予想していた動きにならずおかしいなぁ・・・と思い、ファイルダンプしたら

FF FE 22 00 30 00 31 00 ・・・0A・・・と、成っており、どうやら

ファイルエンコードタイプ:UTF-18,リトルエンディアン,BOM付
改行コード:LF

というファイル形式になっていました

ファイルタイプの変更はAODというのを使うとうまくいきそうだという事で
あんまり良く分からないんですがファイル変換→保存できるコードを作ってみました
0893880NGNG
Sub Macro()
Dim xlAPP As Application
Dim Stm1 As Object
Dim Stm2 As Object
Dim SourceFilePath As String
Const TITLE = "テキストファイル読み込み"
Const FILTER = "全てのファイル (*.*),*.*"
Const adLF = 10
Const adCRLF = -1
Const adReadLine = -2
Set xlAPP = Application

xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
SourceFilePath = xlAPP.GetOpenFilename(FileFilter:=FILTER, TITLE:=TITLE)
If StrConv(SourceFilePath, vbUpperCase) = "FALSE" Then Exit Sub

'UTF-16 の取込
Set Stm1 = CreateObject("ADODB.Stream")
Stm1.Open
Stm1.Charset = "UTF-16"
Stm1.LineSeparator = adLF
Stm1.LoadFromFile SourceFilePath
0894880NGNG
'shift-jis の書込
Set Stm2 = CreateObject("ADODB.Stream")
Stm2.Open
Stm2.Charset = "shift-jis"
Stm2.LineSeparator = adCRLF
Stm1.CopyTo Stm2
Stm2.SaveToFile SourceFilePath, 2

Stm2.Close
Stm1.Close
Set Stm2 = Nothing
Set Stm1 = Nothing
End Sub

達人なら、直接セルに割り振ったり出来るんでしょうが
当分の間、自分はまず変換保存してから再度読み込んで処理しようかと
0895デフォルトの名無しさんNGNG
表形式のサブフォームがあるのですがその表の内容をAccessDBに更新したいのですが
どのような処理を行えば実現するでしょうか?
表形式のサブフォームをの内容をモジュールの方へ持ってこられればなんとでも出来そう
なのですが・・・。
どなたかお教え願えませんでしょうか?
0896デフォルトの名無しさんNGNG
サブフォームで一番左の列の▲マークがある所のレコードのデータは
『サブフォーム.列名』で習得できました。
しかしこの方法だと▲マークがあるところだけで全部の行を更新するには
手動でレコードを次にしてあげなくてはなりません。
DBのレコードはMoveNextで次の行に行ってくれると思うのですがモジュール上
にてサブフォームのレコードを次に移して上げるにはどのようにすればよいのでしょうか?
0897デフォルトの名無しさんNGNG
VBAってどんなことできるんでしょうか?
VBみたいにウィンドウ表示させたり、API関数使っていろいろできたりするんでしょうか?
0898デフォルトの名無しさんNGNG
>>897
出来ます。
0899865NGNG
>>865は無理なんでしょうか
0900デフォルトの名無しさんNGNG
900
0901デフォルトの名無しさんNGNG
どなたかご教授お願いします。
最近VBAに目覚めたものです。


Sub データ行のあるところまで計算式挿入()
Range("c1", Range("c1").End(xlDown)).Select '3列目のデータ最終行のセルを選択
Selection.Insert Shift:=xlToRight '一列挿入
Range("c2").Formula = "=a2+b2" 'c2に計算式を入れる
Range("c2").Copy 'それをコピー
Range("c3", Range("c3").End(xlDown)).PasteSpecial 'Bのセル(Dのセルでもよい)のデータの最終行まで計算式を入れる

End Sub

としたら、その列の最終行(65536行)まで計算式がコピーされてしまいます。
どなたか、bのセルの最終行(行は任意、ケースバイケースで最終行が変わる)
方法をご教授していただきますよう、お願いします。
0902デフォルトの名無しさんNGNG
>>901
Range("c3", Range("c3").End(xlDown)).PasteSpecial
                      ↓
Range("c3", Range("c65536").End(xlUp))).PasteSpecial

最終行から上に向かって飛ばす癖をつける方がいいよ。
データの入力された範囲を調べるのにもね。

つか、コピーしてから貼り付けんでも、一発でいれりゃぁいいと思うが。 
Range("c2", Range("c65536").End(xlUp))).Formula = "=a2+b2"             
0903902NGNG
>>901
たんま、よくコード見てなかった。
Selection.Insert Shift:=xlToRight '一列挿入
ここでC列がD列になっているんだから
Range("c3").End(xlDown)で最終行まで飛んであたりまえ。
だって、データがないんだもの。
0904901NGNG
>>902,903
さっそくのご回答ありがとうございます。
そうなんです。最終行まで飛んでしまうんです。
列を挿入して、(空白列に)一セルだけデータを入力し(ここまでは出来る
んですが)横のセルにはデータが入ってる最終行までデータを貼り付けする
のは無理なんでしょうか?
0905902NGNG
Range("c1", Range("c65536").End(xlUp)).Insert Shift:=xlToRight
Range("c2", Range("D65536").End(xlUp)).Formula = "=a2+b2"

この2行ですむんじゃない?
0906901NGNG
>>902
丁寧なご回答ありがとうございます。
イメージ的には上の記述でいいのですが、これだと、隣のセル(d列まで)
計算式が入ってしまうんです。大変度あつかましいですが、
cの行だけデータを貼り付けする方法をよろしけれ教えてください。
0907902NGNG
Sub hogehoge()
Dim n As Long
n = Range("C65536").End(xlUp).Row
Range("C1:C" & n).Insert Shift:=xlToRight
Range("C2:C" & n).Formula = "=a2+b2"
End Sub

これでどないでしょ。
0908901NGNG
902>>

バッチリできました!
大変助かります。ありがとうございました。

dim n as long ・・・と nの意味が分かりません。
とりあえず結果オーライとなりましたが、これからまた勉強します。
ホントVBAって面白いですね。
いままでハンドでちまちま入力していたのはなんだったんだろうか・・・・。

ともあれ、ありがとうございました。
0909902NGNG
ヘルプで
変数の宣言
って質問してみましょう。( ̄ー ̄)

0910902NGNG
>>902
ちょうどいま、変数のところを見て、なんとなく意味が分かった
ところです。as long は長整数型の数値型で変数を宣言することなんですね!
(マニュアルをそのまま引用してますが)
0911デフォルトの名無しさんNGNG
これはどう?

Sub データ行のあるところまで計算式挿入()
  Range("C1", Range("C65535").End(xlUp)).Select
  Selection.Insert Shift:=xlToRight '一列挿入
  Selection.Formula = "=a1+b1"   '計算式を入れる
  Range("C1").ClearContents     'C1はいらないので消す
End Sub
0912デフォルトの名無しさんNGNG
>>865,>>899
たぶんこれ。
ttp://www8.pekori.to/~zoma/cgi-ssi/meeting/artview.cgi?id=ac&num=4580&ope=v&page=1&asc=1
0913デフォルトの名無しさんNGNG
エクセルVBAで罫線の位置を調べる(取得する)ことは出来ますか?
無理ならば罫線で囲まれたセルの数でもいいんですが、探しても見当たりませんでした。
知っている方教えてください。
0914デフォルトの名無しさんNGNG
>>913
こんなかんじでいかがでしょうか。セルを適当に選択してから試してみてください。
Sub test()
Dim x As Object, i As Long
For Each x In Selection
If x.Borders(xlBottom).LineStyle <> xlLineStyleNone Then
i = i + 1
End If
Next
MsgBox "罫線で囲まれたセルの数:" & i
End Sub
0915デフォルトの名無しさんNGNG
英語版のAceessで、日本語版で作ったAccessのプログラムは動くものなのでしょうか?
勿論表示は全て英語に置き換えます。
0916デフォルトの名無しさんNGNG
マクロをいじっていたら、エクセルを起動したときに《ファイルが見つかりません》のダイアログが出るようになってしまいました。
何のファイルが見つからないのかさっぱりわからないのですが。。
ちなみにエクセル97です。
0917デフォルトの名無しさんNGNG
97・・・
そんなもん窓から投げ捨てろ
0918デフォルトの名無しさんNGNG
モンテカル法でπの値をシミュレーションする 
プログラムを作りたいんですが・・・
0919デフォルトの名無しさんNGNG
 Dim n As Long
 Dim i As Long
 Dim sum As Long
 Dim c As Long
 Dim cc As Integer

 n = Range("A1").Value
 Randomize
 sum = 0
 c = 100
 cc = 3
 
 For i = 1 To n
  If (Rnd ^ 2 + Rnd ^ 2) < 1 Then
   sum = sum + 1
  End If
  If (i Mod c) = 0 Then
   c = c * 10
   Cells(cc, 1) = i
   Cells(cc, 2) = sum * 4 / i
   cc = cc + 1
  End If
 Next i
 If Cells(cc - 1, 1) <> n Then
  Cells(cc, 1) = n
  Cells(cc, 2) = sum * 4 / n
 End If
0920デフォルトの名無しさんNGNG
エクセル97なのですが Nameオブジェクトの RefersToに
設定できる文字列の長さって制限とかあるのでしょうか?
絶対参照で30セル分くらいのアドレスに名前をつけたいのですが
なにか制限ありそうな気がしてググったのですが見つかりません。
安心しても大丈夫なのかなぁ? 知っている方すみません教えてください
0921デフォルトの名無しさんNGNG
>>920
ごちゃごちゃ抜かさんと試せ。
0922920NGNG
>>921
確かに、おっしゃるとおり。m(__)m
試したところ、260文字前後でアウトでした。(255文字?)
Unionもアドレスがこの文字数超えるとおかしくなっちゃうし、まいった。
みなさん、分散してならんでるセルを名前かなんかでハンドリングしたい場合って
どうされています?
0923920NGNG
コレクションにいれといて
ループで回すとか、そんな感じになっちゃいますかね。。。
0924デフォルトの名無しさんNGNG
ブック名:file1.xls
シート:先頭のシート

このシートに、ラベルやコンボボックスなどを並べた操作画面の
イメージがあります。この中から全てのラベルに書かれた文字列
を抜き出し、別のブックなりに一時的にそれらを書き出すには
どうしたらいいですか?
0925デフォルトの名無しさんNGNG
ワークシートに文字列型で入力してある、"0001"のような値を、
Cells(行,列)で取得しているのですが、数値と判断されてただの1になってしまいます。

どうすれば文字列として扱うことができるでしょうか。
0926デフォルトの名無しさんNGNG
>>924
イメージからは抜くのは非常に難しい
文字認識エンジンを作れるなら別だが

>>925
Cells(行,列).Text
0927デフォルトの名無しさんNGNG
初歩的な質問で申し訳ありません。
本日からExcel2000を使用してVBAを始めたのですが、
複数行選択したとき、値が選択した最初の行しか取ることができません。
どのようにすれば全ての値を取ることができるのでしょうか。

どうかよろしくお願いします。
0928デフォルトの名無しさんNGNG
>>927
Dim rng As Range
For Each rng In Selection
 rng.Value="Hoge"
Next rng
0929927NGNG
>>928
解決することができました。
大変助かりました。ありがとうございます。
0930925NGNG
>>926

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

実は値を再び別のセルに挿入するプログラムだったのですが、
挿入時にも数値型に変換されてしまいました。
こちらは挿入時に"'"と文字列連結してから代入することによって解決しました。
あわせてご報告します。
0931デフォルトの名無しさんNGNG
>>930
そういう場合は下のコード使ったほうがいいんじゃないですか?

A1セルの値をA2セルへ入れる場合。

Range("A1").Copy Destination:=Range("A2") 'コピー
Range("A1").Cut Destination:=Range("A2") '移動
0932918NGNG
Sub Vba()
Set en = Range("C2:C6")
Set hit = Range("B2:B6")
Const z As Double = 3.14159265358
X = 5
For j = 0 To X
hit = 0
For i = 1 To 10 ^ j
If (Sqr((Rnd * 2 - 1) ^ 2 + (Rnd * 2 - 1) ^ 2)) < 1 Then
hit = hit + 1
End If
Next i
en(j) = 10 ^ j
en(j) = hit / 10 ^ j * 4
Next j
End Sub
このプログラムで円周率の値はでるのですが、このプログラムから
ヒット数をRange("B2:B6")につくりたいとおもいます。
どのようなプログラムが必要なのでしょうか?
力をお貸しください。
0933デフォルトの名無しさんNGNG
cells( j + 1, 2 ) = hit
0934918NGNG
>>933
あ、ありがとうございます。
あともう一個質問させてください。
各シミュレーションが終了する度に(10回100回と)、
Msgboxを表示してシュミレーションを続けるかどうかを問い合わせる
ためにはどうすればいいでしょうか?
質問ばっかですいません


0935デフォルトの名無しさんNGNG
>>934
>>919
0936デフォルトの名無しさんNGNG
配列の受け渡しなんですが
Dim X(42) As Variant
Range(Sheet1.Cells(EGYO, 12), Sheet4.Cells(EGYO, 43)).Value = X(11 to 43)

43個の配列変数があって
そのうちの11〜42をセルに入れようと思って
X(11 to 42)
と、書いてみたんだけど無理なようです

やっぱり
Do LoopとかFor Nextで
一個一個入れないといけないんでしょうか?
0937デフォルトの名無しさんNGNG
訂正です
Dim X(42) As Variant
EGYO As Integer

中略

Range(Sheet1.Cells(EGYO, 12), Sheet1.Cells(EGYO, 43)).Value = X(11 to 42)

こんな感じになってます
0938デフォルトの名無しさんNGNG
エクセルのグラフの散布図等で、あるデータラベルが他のデータラベルと
重なっているかどうかを判定するような関数を書くにはどうやったら良いのでしょうか?
大量に値をプロットしてラベルを付けるとラベル同士重なって読めなくなってしまって…
適当に間引きしたいのです。
ラベルの topとleftと文字数で地道に計算する方法しか思いつかないのですが
なんか良いやり方ないでしょうか?
0939デフォルトの名無しさんNGNG
A,B二つのブックがあったとして
BのブックからAに作成してあるUserFormを操作する方法ってあるのでしょうか?
あればヒントだけでもよいので教えていただけないでしょうか。
0940デフォルトの名無しさんNGNG
VBAで変数の型変換(キャスト)ってできますか?
0941デフォルトの名無しさんNGNG
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CVar(expression)
CStr(expression)

0942デフォルトの名無しさんNGNG
ユーザー定義関数の戻り値として配列を返すのはどうやればいいでしょうか?
0943デフォルトの名無しさんNGNG
普通にできるぞ
0944デフォルトの名無しさんNGNG
>>939
Bのブックから、Aのブックを参照設定する。
0945デフォルトの名無しさんNGNG
エクセル97のVBAなんですが、たとえば以下のクラスがあったとして
<<Class Foo>>
Public Field_A as Long
Public Field_B as String
Public Field_C as Date
このインスタンスが詰まったコレクション Foos があったとします。
このコレクションをField_B, Field_C 等の好きなメンバでソートしたいのですが
どうやったらよいのでしょうか?
0946デフォルトの名無しさんNGNG
なんかググってみたら
こういうのはADOとかにリンクさせて処理するもんなんでしょうか?
(確かにそのほうがラクそうだ)
0947デフォルトの名無しさんNGNG
エクセル2000を使っています。
表示しているシートを、VBAを使って
画像として保存することできますか?
0948デフォルトの名無しさんNGNG
>>947
ウインドウハンドルからデバイスコンテキストを取得してそれの中身をビットマップファイルとして保存すればよいですよ。
0949947NGNG
>948
ありがとうございます。早速やってみます。
0950冷や水NGNG
'質問 1 Word VBA
Option Base 1
Sub Q1()
Selection.WholeStory
Selection.Delete
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=4, NumColumns:=6
For K = 1 To 4
For J = 1 To 6
Selection.TypeText Text:="(" & K & "," & J & ")"
Selection.MoveRight Unit:=wdCharacter, Count:=1
Next J
Next K

End Sub
'上記によって4行6列のテーブルを Word2000 の Book1 に作表しました。
'この後、テーブルの2行目と3行目の欄は全て高さを30ミリに、また4列目と5列目の欄は全て横幅を15ミリに変更しようと思います。
'End Subの前に何を追加すべきでしょうか。どなたかご教示いただけると有難いです。

0951デフォルトの名無しさんNGNG
A1とC1のセルを選択していたとして。コードでA1のセルの選択だけを解除したいときはどうやったらいいのでしょうか?
0952デフォルトの名無しさんNGNG
C1を選択で出来ない?
0953デフォルトの名無しさんNGNG
>>952
出来ましたがA1,C1,E1と3つあってA1だけ解除したいときE1も選択解除されてしまいます。
こういった場合はどうすればいいのでしょうか?何度もすいません。。
0954デフォルトの名無しさんNGNG
仕様かわってんじゃん…
0955デフォルトの名無しさんNGNG
>>953
Range("C1,E1").Select
0956デフォルトの名無しさんNGNG
教えてください。
Excel2000でクリップボードのクリアをするVBAがわかりません。
マクロの記録をしても記録されないようです。
よろしくお願いします。
0957デフォルトの名無しさんNGNG
>>956
EmptyClipboard
0958デフォルトの名無しさんNGNG
>>956
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long 'クリップボードをオープン
'クリップボードを空にし、クリップボード内のデータのハンドルを解放
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function CloseClipboard Lib "User32" () As Long 'クリップボードをクローズ
'クリップボードクリア関数呼び出し 別にこれを呼び出さなくても直接CLR_ClipBoard "" でかまいません
Sub ClipCLR()
CLR_ClipBoard ""
End Sub

Function CLR_ClipBoard(myString As String)
Dim ret As Long

'クリップボードオープン
If OpenClipboard(0&) = 0 Then
GoTo ERR1
End If
'クリップボードクリア
ret = EmptyClipboard()
'クリップボードクローズ
If CloseClipboard() = 0 Then
GoTo ERR2
End If
Exit Function
ERR1:
  MsgBox "クリップボードが開けません(エラー)"
  Exit Function
ERR2:
  MsgBox "クリップボードが閉じれません(エラー)"
  Exit Function
End Function
0959デフォルトの名無しさんNGNG
>>956
ひょっとして、VBAでブックを閉じる時に「クリップボードに大きな情報があります」
ってエラーを出さないようにしたいからですか?
0960デフォルトの名無しさんNGNG
変数にセルの情報として条件付書式設定で設定した色を
入れることはできないんですか?
「.Text」だと書式のみになってしまいます。
0961デフォルトの名無しさんNGNG
>>960
このあたりの事?
.Interior.ColorIndex = 6
.Interior.Pattern = xlSolid
0962960NGNG
>>961
それは色をあらかじめ指定しておかないといけない、ということですか?

0963デフォルトの名無しさんNGNG
>>962
明らかに違います。
0964デフォルトの名無しさんNGNG
If Selection = SpecialCells(xlCellTypeBlanks)
といった、もしアクティブセルが空白だったら Exit Sub する
といったのを書きたいのですがどうしてもわからないので教えてくれませんか。
0965vba3週間目NGNG
まだまだ初心者ですが
If Cells(*,*)<>""Then
じゃだめかな?
0966デフォルトの名無しさんNGNG
vba3週間目さん、解答してもらいありがとうございます。
Cells(*,*)といった形ではなく、SelectionかActiveCellを使いたかったんですが
一応、
If Selection.Value = " " Then でできました。
0967デフォルトの名無しさんNGNG
If ActiveCell.Value = "" Then でもいけるし。
0968デフォルトの名無しさんNGNG
>>960
アクティブセルが対象だとして、条件書式の1番の色を拾うには
myColorIndex = ActiveCell.FormatConditions(1).Interior.ColorIndex
0969デフォルトの名無しさんNGNG
VBエディタで、nameNumberという変数を作ったとします。
naまで入力したら、何かキーを押すと補完してくれる、
という機能があったら教えて下さい。
0970デフォルトの名無しさんNGNG
A列の1行目から10行目の中で太字になっている数字を合計しA11に表示したい
のですが、「太字のみ」という処理がうまく出来ません。
教えていただけないでしょうか?
0971デフォルトの名無しさんNGNG
>>970

Public Sub test()
Dim intSUM As Integer
Dim I As Integer
    intSUM = 0
    For I = 1 To 10
        If Range("A" & I).Font.Bold = True Then
        intSUM = intSUM + Int(Range("A" & I).Text)
        End If
    Next I
    Range("A11") = intSUM
End Sub
0972970NGNG
>>971
ありがとうございます。できました。
0973デフォルトの名無しさんNGNG
すみません、馬鹿な質問かもしれません・・・が、教えてください。
JISコードをSJISに変換する関数とかってありますでしょうか?
0974デフォルトの名無しさんNGNG
>>969
Ctrl + Space
0975デフォルトの名無しさんNGNG
           ∧_∧   ┌────────────
       ◯( ´∀` )◯ < あけおめ!
        \    /  └────────────
       _/ __ \_
      (_/   \_)
           lll
0976デフォルトの名無しさんNGNG
VBAのuserform上に線とか四角形など
描くことってできるのでしょうか?
0977デフォルトの名無しさんNGNG
書ける
0978976NGNG
VBAのuserform上に四角形を
書く方法教えてください!!
0979デフォルトの名無しさんNGNG
VBAを覚えてみようと、本を買ったのですけど
なんの役に立つのかわっかていません。
どういうことに使うものなのでしょうか?
0980デフォルトの名無しさんNGNG
>>979
そんな質問ならPC初心者板でよかったやん
0981デフォルトの名無しさんNGNG
>>979
あなたが役に立たない人間だからだよ
0982デフォルトの名無しさんNGNG
>>981
自己紹介乙。
0983デフォルトの名無しさん NGNG
>>980
初心者板の人とは違います。
そこから来たのですけど
0984デフォルトの名無しさんNGNG
>>983
PC初心者板のくだ質の909、919に書いてあることを試してみるといいかもね
0985デフォルトの名無しさんNGNG
>>984
エクセルがとんでもないことになった。
VBAで嫌がらせができるという事がわかった
0986デフォルトの名無しさんNGNG
>978
Lineを使え。ヘルプを使え。
0987デフォルトの名無しさんNGNG
>>985
マクロウイルスなんてのも要る時代だ。
0988デフォルトの名無しさんNGNG
通報
0989デフォルトの名無しさんNGNG
厚い本を読み終えたとき何に使うのかわかるのかな?
0990超初心者NGNG
ボタンをクリックしたときにhtmlファイルをフォームとは
別に表示させるにはどうすればよいですか?
0991デフォルトの名無しさんNGNG
>>989
鈍器
0992デフォルトの名無しさんNGNG
984の削除依頼
0993デフォルトの名無しさん NGNG
>>991
厚い本の使い道ではなく、VBAの使い道です。
0994デフォルトの名無しさんNGNG
>>992をこの世から削除したほうがいい
0995デフォルトの名無しさんNGNG
>>994
ほげほげ!
0996デフォルトの名無しさんNGNG
>>995
ほげほげ!
0997デフォルトの名無しさんNGNG
>>993
ほげほげ!!
0998デフォルトの名無しさんNGNG
10000!!!!!!!!
0999デフォルトの名無しさんNGNG
次スレは?
1000デフォルトの名無しさんNGNG
ほげほげ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。