●EXCEL・VBAの教えてスレ Part2●at TECH
●EXCEL・VBAの教えてスレ Part2● - 暇つぶし2ch262:デフォルトの名無しさん
07/02/15 01:18:30
>>261
普通にできてしまったのですが…。

Function test()
ActiveCell.Interior.ColorIndex = 36
End Function

同じですよね、多分?

263:デフォルトの名無しさん
07/02/15 01:25:42
>>262
たびたびすみません。同じだと思うのですが・・・。

やろうとしていることは、
・ユーザー定義関数を作ろうとしていて(ここでいうcolorという関数)
・計算結果がある値をとればセルの色を変える
というもので、上述のcolorという関数はそれをおもいっきり簡略化したものです。

やっぱり上手くいかないです・・・
もしかして根本的にわたしが勘違いしているのかもしれません。ユーザー定義関数とマクロは別物ということでしょうか?

264:デフォルトの名無しさん
07/02/15 01:27:47
263補足

>>262さんのを登録後、エクセル上で=test()と任意のセルに入力しても
ゼロと表示されるだけで色は変わりませんでした・・・

265:デフォルトの名無しさん
07/02/15 01:29:16
引数のworkには何が入る予定なの?

266:デフォルトの名無しさん
07/02/15 01:30:49
あー、分かった。
セルでセル関数のようにはマクロのユーザー関数は使えないよ。
ツールメニュー→マクロ→color(自分で作ったユーザ関数)を選らんで、
その時点で使うわけ。

267:デフォルトの名無しさん
07/02/15 01:30:54
>>265
ただの文字列です。

268:デフォルトの名無しさん
07/02/15 01:34:30
「セルの計算結果」って言ってるのは、
=SUM(R[-3]C:R[-1]C) ←こういう奴の話を言ってるんだよね?
で、このイコールのところに自分で作った関数を入れたいってことよね?
結論から言えば、できないんじゃないかなあ。

269:268
07/02/15 01:37:15
ごめん!
ウソ言ってた。
できたよ。


270:デフォルトの名無しさん
07/02/15 01:37:24
>>261
> ユーザー定義関数内でやろうとしていて
先に書けよ。

ユーザー定義関数ってのは引数を計算して、式を入れたセルに値を返す物で
書式設定だのなんだのというシート上の操作を行うものじゃないぞ。
だからアクティブセルを取得することは出来るが操作は出来ない。それがユーザー定義関数ってものだ。
指定がおかしいんじゃなくて、やろうとしている事に対してユーザー定義関数を使おうとしているのがおかしい。
取得が出来てることはDebug.Print ActiveCell.Address(0, 0)を入れればわかるだろう。
操作がしたいならイベントを使え。

271:デフォルトの名無しさん
07/02/15 01:38:10
URLリンク(www.relief.jp)

272:デフォルトの名無しさん
07/02/15 01:48:01
>>268
そういうやつですね。
文字列の長さからいろいろと計算させる予定でした。
結果的にダメっぽいですね。
いろいろとありがとうございました。

>>270
イベントでやるしかないのですね。
>それがユーザー定義関数ってものだ。
名言の匂いがしますね。使わせて頂きます。

>>271
参考になりました。


273:デフォルトの名無しさん
07/02/15 01:48:02
265+266+268+269
あとはがんばって~。寝るわ。

274:デフォルトの名無しさん
07/02/15 03:47:04
Const a = 1
Const b = 2
Const c = 3
Sub main()
a1 = 1
b1 = 1
c1 = 1
cells_a = 0
cells_b = 0
cells_c = 0
Do While cells(a1, a).Text <> ""
a1 = a1 + 1
cells_a = cells_a + 1
Loop
Do While cells(b1, b).Text <> ""
b1 = b1 + 1
cells_b = cells_b + 1
Loop
Do While cells(c1, c).Text <> ""
c1 = c1 + 1
cells_c = cells_c + 1
Loop
cells(1, 5).Value = cells_a
cells(2, 5).Value = cells_b
cells(3, 5).Value = cells_c
End Sub

このプログラムを短くできませんか?

275:デフォルトの名無しさん
07/02/15 04:39:47
配列使うと1/3近くには出来るかも知れないが
速度は落ちるんじゃないかな

276:デフォルトの名無しさん
07/02/15 10:09:42
>>274
Const a = 1
Const b = 2
Const c = 3
Sub main()
a1 = 1:b1 = 1:c1 = 1

With Application.WorksheetFunction
cells(1, 5).Value = .Count(Range(Cells(a1,a),Cells(a1,a).End(xlDown)))
cells(2, 5).Value = .count(Range(Cells(b1,b),Cells(b1,b).End(xlDown)))
cells(3, 5).Value = .count(Range(Cells(c1,c),Cells(c1,c).End(xlDown)))
End With
End Sub

試してないけど、とかじゃダメなのか?



277:256
07/02/15 10:51:13
>>257
お答えありがとうございます。説明不足ですみませんでした。
御推察のとおり、1つ目のセルは表示されずに2つ目が表示されてしまっていました。
で、>>257様の誤解を参考にして色々試したのですが、どうにもうまくいきません。
もう少しだけヒント頂けないでしょうか?

278:sage
07/02/15 13:13:37
>>277
何を試してどうだめだったのか書かないと…

とりあえず自分の環境では普通に動く

フォームを表示したときに表示したければ
UserForm_Activaue()内で
Callしてみれば?

とりあえず、F8でステップインしながら
動きを確認してみることをお勧めするよ
後はDebug.Printするとか。

ローカルウィンドウで
変数に期待通りの値が
はいってるか確認する方法もあるし。

なんにしても情報が少なすぎだと思いますよ

279:デフォルトの名無しさん
07/02/15 13:18:21
うはぁ
あげちった…

携帯からレスするもんじゃないな…

280:デフォルトの名無しさん
07/02/15 14:18:22
他人事ながら

×UserForm_Activaue()
○UserForm_Activate()

横レス失礼

281:256
07/02/15 16:06:37
>>278,>>280
またまた説明足らずで申し訳ありませんでした。
で、ご指摘の方法でちゃんと出来ました!
自分の持ってるVBAの本が初心者用のものだったため、
UserForm_Active()とか全然載ってなくて方法が分かりませんでした。
今回はどうもありがとうございました!


282:デフォルトの名無しさん
07/02/15 16:27:59
VBに高階関数とかってないの?関数に関数を引数として渡したいだけなんだけど。

283:デフォルトの名無しさん
07/02/15 16:49:21
>>282
AddressOf

284:デフォルトの名無しさん
07/02/15 19:07:28
>>283
おお、サンクス

285:デフォルトの名無しさん
07/02/15 19:31:06
ダイアログボックスで入力された年・月にしたがってカレンダーを表示するマクロを作っています。
年・月は文字列として取得、それを日付型にデータ変換して日付型の変数に代入しているのですが、
そこで「実行時エラー'11': 0で除算しました。」とのエラーが出ます。
DateValue関数を使う、日付型の変数を Variant型に変える、を試してみましたが、
結果は同じでした。
文字型の変数を Variant型に変えると、最初に1回エラーが出たあとその後は出なくなりましたが、
カレンダー表示の処理のところで日付を誤認してしまいます。
現在は On Error Resume Next でエラーを抑制して動かしており、
本来の目的であるカレンダー表示はそれで問題なくできておりますが、
可能であればエラー自体出ないようにしたいと思っています。
どこが悪いのかアドバイスをお願いします。

テストコード
Sub test()
Dim strInput As String
Dim datDay As Date
strInput = InputBox("年と月を入力してください。(例)「2007 2」")
datDay = CDate(strInput)
MsgBox datDay
End Sub

環境
Mac OS X 10.4.8
Excel 2004 for Mac ver. 11.3(060914)

以上よろしくお願いします。

286:デフォルトの名無しさん
07/02/15 20:46:35
VBAのソースで右側に長くなって見づら苦なってきたのでソースの内容はそのままで改行することってできませんか?
普通に改行するとエラーが出てしまいます。

287:デフォルトの名無しさん
07/02/15 21:01:35
MsgBox _
 "VBAのソースで右側に長くなって" & vbCrLf & _
 "見づら苦なってきたので" & vbCrLf & _
 "ソースの内容はそのままで" & vbCrLf & _
 "改行することってできませんか?" & vbCrLf & _
 vbCrLf & _
 "普通に改行するとエラーが出てしまいます。"

288:デフォルトの名無しさん
07/02/15 21:30:38
>>287
Chr(10)じゃだめ?

289:デフォルトの名無しさん
07/02/15 21:51:40
>>285
テストコードが問題なく実行できてしまったのですが…。
カレンダーに変換してるところのエラーでは?

290:デフォルトの名無しさん
07/02/15 22:43:59
たぶんロケール絡みだろう。
同じバージョンのWindows&Excelだって、ロケールが違うとCDateやIsDateの動作が変わってくるからな。
とりあえずInputBoxとCDateの間に
If strInput = "" Then MsgBox "空文字 or キャンセル": Exit Sub
If Not IsDate(strInput) Then MsgBox "日付変換不可": Exit Sub
って入れてみな。「2007 2」で"日付変換不可"が出るようなら、ロケールの問題でビンゴだ。
その場合は文字列切り出しで年と月を取得しよう。
"日付変換不可"が出ないにしても、文字列切り出しで解決出来るならそれでいいし。

291:286
07/02/16 00:53:59
_←これだけで改行できた思い出させてくれてありがとう

292:デフォルトの名無しさん
07/02/16 01:11:48
ListBoxに値をいれるとClickやChangeが発生しますが、
クリック中に値を変更したい場合とかどうしてますか?

フラグもって立ってたら処理しないというやり方で回避してるんだけど
なにかほかにいい方法がありますでしょうかね。

293:285
07/02/16 01:38:32
>>289, 290
レスをいただきありがとうございます。
テストコードのほうですが、>>290さんのコードを加えて実行してみたところ、
1回目は「実行が終了しました」とのエラーメッセージが表示され、
2回目は「オーバーフローしました」とのエラーメッセージが表示され、
3回目以降は「2007.2.1」と普通に表示されました。
念のため本来のマクロを On Error Resume Next をコメントアウトして再度実行してみたところ、
1回目は「オーバーフローしました」とのエラーメッセージが表示され、
2回目も「オーバーフローしました」とのエラーメッセージが表示され、
3回目は正常にマクロが実行され、
4回目で「0で除算しました」とのエラーメッセージが表示されました…
こちらに書き込む前に何回もテストし、そのときは「0で除算しました」というエラーメッセージのみ
繰り返し出ていたのですが、実行のタイミングによってまるで結果が違ってきているようでもあり、
とまどっています。
>>290さんのおっしゃっている「文字列切り出し」という方法は、文字列から年と月をそれぞれ別々に取得する
ということですね?
がんばってコードを書いて試してみます。
どうもありがとうございました。

294:デフォルトの名無しさん
07/02/16 10:37:50
a = Int(9 * Rnd + 1)
b = Int(9 * Rnd + 1)
c = a + b

これでcの中にaの中に7 bの中に8 が入ってるとして 15じゃなく 78と表示することはできますか?

295:デフォルトの名無しさん
07/02/16 11:59:19
>>294
つなげたいなら、&


296:デフォルトの名無しさん
07/02/16 12:20:14
ちょwwVB以前の問題だろw
a*10+bも思いつかんのか

297:デフォルトの名無しさん
07/02/16 22:23:14
初歩的な質問でホントにすいません;

エクセルのシート上にファイル等から画像を挿入したとします。

その画像を文字列の背面に持っていく方法がわかりません;

背景に設定する等とは違います;
(ちなみに背景も小さい画像で設定すると
ビッチリ並んで出てきますが、好きな場所に1個だけ、
とかは出来るんでしょうか?)

よろしくお願いします;

298:デフォルトの名無しさん
07/02/16 22:25:14
すいません;スレ違いでした;

299:デフォルトの名無しさん
07/02/18 12:04:32
100行まで三行間隔で文字列が入っていて間違って打ってないか確認したいです。

B列、100行までの間の3の倍数のセルに"もげ"って入っていたら次の3の倍数のセルへ
間違っているか、空欄だったらセルを選択した状態で終えてください。
という処理をしたいのですが
相対セルと三の倍数選択する部分の表現でつまづいてしまいました。

一つずつチェックしてこなすにも5000行以上で当て上げ状態です
どなたかヒントかVBAのソースを教えていただけないでしょうか
よろしくおねがいします


300:デフォルトの名無しさん
07/02/18 12:13:16
当て上げ?
で、そのチェックはVBAでやるようなことなのか?

301:デフォルトの名無しさん
07/02/18 12:54:44
B列を削除して割り振りなおした方が簡単じゃないの?

302:デフォルトの名無しさん
07/02/18 12:55:01
> ソースを教えていただけないでしょうか
ソースが欲しいならそういうところに頼めよ
ここは丸投げ依頼所じゃないぜ
自分で書こうって気がある奴がヒントを貰いに来る場だ

303:デフォルトの名無しさん
07/02/18 12:57:28
step 3 じゃだめ?

304:デフォルトの名無しさん
07/02/18 13:19:21
>>299
100行まで?

Sub moge()
  Dim i As Integer
  For i = 3 To 100 Step 3
    If Cells(i, 2).Value = "" Then
      MsgBox "B" & i & "は空白ですよ。"
    ElseIf Cells(i, 2).Value <> "もげ" Then
      MsgBox "B" & i & "に「もげ」でない文字が入っています。"
    End If
  Next i
End Sub

305:デフォルトの名無しさん
07/02/18 13:41:13
dim giy as integer

a=4937870
b=1.05
s=387
u=100

giy = WorksheetFunction.RoundDown(((a * b) / (s*u)), -1)


上のを実行するとなんでかオーバーフローするんですけど。

306:デフォルトの名無しさん
07/02/18 13:47:01
しませんでしたけど…
念のためLongにしといたらどーですか?

307:299
07/02/18 13:51:43
>>304
まさにこれです
変数とかCellsとかforとかすごい勉強なります。
ありがとうございます

>>303 
最初なんのことだろうと思いましたが、304みてわかりました。step 3。
ありがとうございます。


308:デフォルトの名無しさん
07/02/18 13:56:43
デバッグしてa*bのところにマウスをもってくると、5184763.26454401
という数字が出ます。小数点以下の数字が原因かと思うんですけど。

309:デフォルトの名無しさん
07/02/18 14:11:26
>>308
それのどこがオーバフロー?

310:デフォルトの名無しさん
07/02/18 14:14:16
もしかして:
単精度で計算していて精度がでていないという落ち?

311:デフォルトの名無しさん
07/02/18 14:25:55
aとbがVariantならdoubleと同じ精度で扱えると思うんだが…

312:デフォルトの名無しさん
07/02/18 21:49:04
フォームのテキストボックスを全部いっぺんに空白にする方法はありますか?

313:デフォルトの名無しさん
07/02/18 22:40:09
>>312
順番に空白にすればよい

314:312
07/02/18 22:44:54
いや、そりゃもちろんそうなんですが、
一行で一気に全部いっぺんに空白にしてしまうような命令とかはないかなぁと思いまして・・・

315:デフォルトの名無しさん
07/02/18 22:55:43
>>314
そんなことしてどーするの?
見た目には変わらないのに?

316:デフォルトの名無しさん
07/02/18 23:10:11
Me.Controlsに対してFor Eachループ回して
If TypeName(objControl) = "TextBox" Then objControl.Text = ""
とか

317:デフォルトの名無しさん
07/02/18 23:29:42
そういう処理をするプロシージャを用意しておいて、そいつを呼べばいい。

318:312
07/02/19 10:43:01
>>315
自分の作成したフォームのテキストボックスが20個くらいありまして、
それをクリアするのにプログラムが長くなってしまうので
短く簡単にすませる方法はないかなぁと思いまして。
>>316、317
ありがとうございます。それで試してみます!

319:デフォルトの名無しさん
07/02/20 00:41:14
EXCELで

コマンドボタンをクリックすると、Sheet3のA1:A10の内容を、Sheet1のA1:A10にコピーする

こんなモノを作りたいのですが


Private Sub CommandButton1_Click()
Range("A1:A10").Select
Selection.Copy
Sheets("Sheet1").Select
Range("A1:A10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

こうすると、「Range クラスの Select メソッドが失敗しました」となってしまいます
どうすればいいか教えて下さい

「マクロの記録」を使ってしか、マクロ扱った事無いのに
調子に乗って仕事請けてしまって困ってます・・・

320:デフォルトの名無しさん
07/02/20 00:58:33
>>319
これだけでいいんでない?

Private Sub CommandButton1_Click()
  Worksheets("Sheet3").Range("A1:A10").Copy
  Worksheets("Sheet1").Range("A1:A10").PasteSpecial Paste:=xlPasteValues
End Sub

最後に
Worksheets("Sheet1").Activate
にしてもいいと思うけど…

321:319
07/02/20 01:15:25
解決しました有難うございます

範囲指定の時は

Worksheets("Sheet3").Range("A1:A10")

としなければいけないのですね


322:デフォルトの名無しさん
07/02/20 01:18:36
>>321
シート名を指定していないのでSelectが失敗したのではないでしょうか?
範囲指定とは関係ないです。
そういや
Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
でOKでもOKでした。

323:デフォルトの名無しさん
07/02/20 01:40:09
どうでもいいけど、
シート名変更されると危なっかしいから、
シートのオブジェクト名でやった方が無難。
Sheet1.Range~以下略
意味が分からんならVBA画面でシートを選択してF4押せ。

324:デフォルトの名無しさん
07/02/20 01:50:00
ユーザーがSHIFT+クリックで複数のセルを選択するように
プログラム上で選択中のセルをさらに動的に増やしたいのですが
どうすればいいでしょうか。

325:デフォルトの名無しさん
07/02/20 01:51:53
どういう風に増やしたいのか詳しく。
Offsetとかでいいならそれで。

326:デフォルトの名無しさん
07/02/20 02:12:18
OffsetではなくResizeの方が良いのでは?

327:デフォルトの名無しさん
07/02/20 03:12:28
飛び地で選択できるじゃないですか?
あんな感じで。

2点間を選択してもらって、その間の特定キーワードを含む
セルを自動的に選択する機能を作りたいのですよ。



328:デフォルトの名無しさん
07/02/20 07:49:42
>>327
マクロの記録でctrlキーを押しながら
A1とA3を選択。
これで、離れたセルの指定方法は分かるだろ?

後は、定範囲内をFor Eachとかでまわして
該当セルのaddressとるなりして
同じように選択するだけ。

329:デフォルトの名無しさん
07/02/20 11:06:07
Type MyTestType
ID As Integer
Name As String
End Type

Sub test()
Dim a(3) As MyTestType
'中略
i = TypeTest(a)
End Sub

Function TypeTest(a As Variant) As Integer
'省略
End Function

とコードを組むと、コンパイルエラーが出ます。
Functionの引数の型宣言で、配列を使うこともできませんが、
どのようにしたら、aをFunctionに渡すことができるでしょうか?

よろしくお願いします。

330:デフォルトの名無しさん
07/02/20 11:24:55
VBAでどうやってコンパイルエラーを出したのか知りたいのだが。

331:デフォルトの名無しさん
07/02/20 11:39:42
>>329
クラスを使え


>>330
メニュー > デバッグ > VBAProjectのコンパイル
も知らんのか?

>>329なら普通に実行したってコンパイルエラー出るし。
もしかしてexe吐くことがコンパイルだと思ってるのかな?

332:デフォルトの名無しさん
07/02/20 12:08:03
>>331
クラスってどうつかえばいいのですか?
プロジェクトで挿入からクラスモジュールを挿入して、
Type文を打ち込めばよろしいのでしょうか?

それと、ここはsage推奨ですか?

333:デフォルトの名無しさん
07/02/20 12:16:50
>>332
===== MyTestClass As クラスモジュール =====
Public ID As Integer
Public Name As String
===== EOM =====

===== Module1 As 標準モジュール =====
Sub test()
  Dim a(3) As New MyTestClass
  a(0).Name = "hoge"
  a(0).ID = 10
  i = TypeTest(a)
End Sub

Function TypeTest(a() As MyTestClass) As Integer
  Debug.Print a(0).Name
  Debug.Print a(0).ID
End Function
===== EOM =====

こんな感じで。
クラスモジュールの名前がAs ~で使う宣言型になる点に注意。

> それと、ここはsage推奨ですか?
別に。回答者はageる必要が無いから慣例的にsageてるだけ。

334:デフォルトの名無しさん
07/02/20 13:40:38
>>333
どうもです。

335:327
07/02/21 02:04:24
マクロで記録したら文字列で指定してたからどうしたもんかと
思いましたが、addressでセル位置の座標を取れるからこれ使えばいいのかな。

問題は解決したけども、なんかほかにスマートな方法があるなら教えてくだされ。

336:デフォルトの名無しさん
07/02/21 15:31:21
GetOpenFilename で「ファイルを開く」 ダイアログ
で左側のデスクトップやマイドキュメントが選べません。どうしてでしょうか?
参照設定で、Microsoft Runtime Scriptingは選択しています。
Office2003, XP Proです。

337:デフォルトの名無しさん
07/02/21 15:49:59
> どうしてでしょうか?
環境が壊れてるからじゃねーの?
とりあえずOSとOfficeを再インストールしてみな。

それとGetOpenFilenameはApplicationオブジェクトのメンバなんで参照設定は不要だし、
Microsoft Runtime Scriptingではなく
Microsoft Scripting Runtimeだろ。これはFSOやDictionaryだからな。

338:デフォルトの名無しさん
07/02/22 15:30:03
  row = 1
For Each a In IEobj.Document.body.getElementsByTagName("A")
If InStr(a.href, "URLリンク(xxx.com)) <> 0 Then
x = a.href
Worksheets(1).Cells(row, 1).Value = x
row = row + 1
End If
Next a
こんな感じのURLなのですが、同じアドレスは二度書き込まない風にできますか?

339:338
07/02/22 18:01:47
処理重くなるだけかな
少しぐらい重なってもいいか・・・・

340:デフォルトの名無しさん
07/02/22 19:58:29
>>338
普通に重複チェックして条件分岐すれば良いだけでしょ。
重複チェックにはいろんな手法があるのでお好きなもので。

341:デフォルトの名無しさん
07/02/23 22:15:30
Dim myValue As Single
myValue = 1.0
Charts(1).Name = "Ver. " & myValue

としてエクセルのグラフのタイトルに、 Ver. 1.0 と入力したいのですが、Ver. 1 となります。
こういう場合は、どうすれば "1" を "1.0" と少数点付きにできますか?

342:デフォルトの名無しさん
07/02/23 22:27:30
As String にするか
"Ver." & Format(MyValue, "0.0")で

343:デフォルトの名無しさん
07/02/23 22:52:10
>>342
ありがとう!!!
できた~!!!!!

ちなみにStringはダメでした。

ほんとにありがとう。

344:デフォルトの名無しさん
07/02/23 23:15:34
ああ、"1.0"にしないと駄目だろうねw


345:デフォルトの名無しさん
07/02/24 01:29:23
Win2000 SP4ではちゃんと動いていたのにXP SP2に持っていったらエラーにはならないんですけどまともに動いてくれません
主に使っている機能はActiveXのInetです。WEBを取り込んで検索して加工した文字列をエクセルに貼り付けてるだけです。

参照設定は正規表現というやつを使いたくて、MSVBScriptRegulerExpresion1.0と5.5を二つ入れました。
1.0と5.5は両方チェック入れたらまずいんでしょうか?本にはMSVBScriptを参照設定しろと書いてあっただけなので不明です。

あとMS Internet Transfer Control 6.0とMS Internet Controls も参照設定してあります。

Win2000 SP4はVB6.0、WinXP SP2はVB6.0ランタイムが入ってます。

最初から2行あったOption Explicit ?ともう一行は文の意味がわからなかったので消しました。

XPのファイアーウォールははずしてあります。

なぜXPだけで不安定になるのか原因わかりますでしょうか?

346:デフォルトの名無しさん
07/02/24 01:33:32
うん、わかる

347:デフォルトの名無しさん
07/02/24 01:37:51
ありがとうございます。試してみます。

348:デフォルトの名無しさん
07/02/24 14:27:41
エラーの時にデバッグを選んだ後停止ボタンを押すと、フォームがひらくのですが、コード画面のままで維持できないのでしょうか?
その度にいちいちコード画面を選び編集したいコードの行を探さないといけないのはつらいです。

349:デフォルトの名無しさん
07/02/24 15:09:31
'初心者です。


Sub なんでだろう①()
Dim あ As Long
あ = Worksheets("Sheet1").Cells(1, 1)
If あ > 3 Then
Worksheets("Sheet1").Rows("1:5").Select
End If
End Sub

'だと動くのに

Sub なんでだろう②()
Dim あ As Long
あ = Worksheets("Sheet1").Cells(1, 1)
If あ > 3 Then
Worksheets("Sheet1").Rows("1:あ").Select
End If
End Sub

'だと動きません。なんでだろう。。。
'親切な方教えてください。


350:デフォルトの名無しさん
07/02/24 15:37:02
range("1:" & あ)では?

351:デフォルトの名無しさん
07/02/24 15:48:27
>>349
×Worksheets("Sheet1").Rows("1:あ").Select
○Worksheets("Sheet1").Rows("1:" & あ).Select
○Worksheets("Sheet1").Range("1:" & あ).Select
○Worksheets("Sheet1").Rows(1).Resize(あ).Select

>>350
このコードを書いているモジュールによってはシートを省略しちゃうと正しく動作しないよ。
「Worksheets("Sheet1")」も書くか、「Rows以降を」と添えよう。

352:349
07/02/24 15:49:50
>>350
ほえ~。動きました。
なぜだか分からないけど、とにかくこれでやってみます!
ありがとうございました!

353:デフォルトの名無しさん
07/02/24 16:05:06
>>351
あ、RowsのつもりがRangeって打っちゃったよ

354:349
07/02/24 16:09:47
>>351
とにかくいろいろやり方があるんですね!
どうもでした。m( )m

モジュールって何?っていう段階なので、すべてがサッパリ妖精なのですが、
とにかく理解もせずに突き進んでみることにして見ます。。。

355:デフォルトの名無しさん
07/02/24 19:58:05
エクセルのグラフの軸の書式設定にある
Y/数値軸目盛の最大値のところに初期入力してある値を取得する方法ってありませんか?

356:デフォルトの名無しさん
07/02/24 20:22:45
初期値は自動じゃないのか?
まぁ、マクロ記録で変更してみりゃプロパティの名前がわかるだろ。

357:デフォルトの名無しさん
07/02/24 20:35:27
>>356
自動です。
自動で入る初期値がほしいんですが、これに関しては
マクロ記録でいろいろ試してみましがはわかりませんでした。

358:デフォルトの名無しさん
07/02/24 20:53:07
>>357
初期値変更するの記録すればわかると思うけど
ActiveChart.Axes(xlValue).MaximumScale
じゃない?

359:デフォルトの名無しさん
07/02/24 21:14:35
>>358
ありがとうございます。
値の取得ができました。
初期値変更するの記録したつもりだったけど、わからなかったw

360:デフォルトの名無しさん
07/02/25 14:25:00
あぁ~ん、ユーザーフォームがうまく作れないよぉ~~~ん!!

参考書ばかりが増えていく…

361:デフォルトの名無しさん
07/02/25 14:29:14
わざわざユーザーフォーム作る香具師って馬鹿じゃね?
プログラミング能力の無さをさらけ出してるだけだよ。

362:デフォルトの名無しさん
07/02/25 16:08:29
馬鹿が馬鹿を笑う、ここはそんなスレでつw

363:デフォルトの名無しさん
07/02/25 17:30:50
>>361
kwsk

364:デフォルトの名無しさん
07/02/25 22:30:07
ユーザーフォームを×ボタンをクリックして閉じるときに、
それと同時に上書き保存をしたいのですが
何か良い方法はありますか?

365:デフォルトの名無しさん
07/02/25 22:33:26
>>364
UserForm_QueryCloseイベントに上書き保存のコードを書く


366:デフォルトの名無しさん
07/02/26 02:57:29
動作しないユーザーフォームなら1分もかからずにちゃんと作れるよな。
これすらできないのは才能ないというかなんか根本的におかしい。

367:デフォルトの名無しさん
07/02/26 04:05:54
>>361
の言ってる意味は全然変わらんが

>>366
なら分かる

368:デフォルトの名無しさん
07/02/26 04:55:40
じゃ、>361はこう訂正してみよう。
>わざわざユーザーフォーム作る香具師って馬鹿じゃね?
→ユーザーフォーム作るのに苦労する香具師って馬鹿じゃね?

369:デフォルトの名無しさん
07/02/26 05:03:58
>>368
納得した
ユーザーフォーム使う使わないは用途によるからな

370:364
07/02/26 10:09:54
>>365
ありがとうございます!できました!
>>361
仕入・納品・在庫調べ等々、自分の仕事では
ユーザーフォームないと非常に入力がめんどくさいです。
なので自力で作成しました。
まあ、「市販のソフト買えよ!」と言われればそれまでですが。

371:デフォルトの名無しさん
07/02/26 10:34:35
>>360がやろうとしてることと、>>361,>>366,>>368が指摘してることに遥かなる距離感を感じるのはなぜだろう。

>動作しないユーザーフォームなら

わざわざ動作しないフォームを作る暇人っているんだな。

372:デフォルトの名無しさん
07/02/26 11:47:50
>>370
まさかそれをアクセスでなくエクセルでやってるとか・・・

373:デフォルトの名無しさん
07/02/26 11:58:21
Excelが伝票というケースもあるだろ。Accessの仕事しかやったことないのか

374:デフォルトの名無しさん
07/02/26 20:15:30
Cellの中に文字列があって、その文字列の長さを取得するにはどうすればいいか教えてください。
文字変数の長さの取得方法がわかりません。

375:デフォルトの名無しさん
07/02/26 20:27:35
>>374
Len

文字変数の長さって何?

376:デフォルトの名無しさん
07/02/26 20:40:36
>>375
説明がまずかったですね
たとえば、
a As String
b As Integer

a = "ABC" または a = Range("A1").Valueとして、このA1セルに"ABC"が入っているとします。
それで、 b をこの a の中に入っている文字列の長さの値を入れたいわけです。この場合は3になるわけですが
どうすれば b = 3 とすることが出来るかがわかりません。


377:デフォルトの名無しさん
07/02/26 20:46:05
>>376
答え書いてあるやん

378:デフォルトの名無しさん
07/02/26 20:55:51
b = Len( a )

まあいろいろ期待どおりに動作しない場合も多いがね。
b = LenB(a )

内部がEUCなのでバイトカウントでも(ry

379:デフォルトの名無しさん
07/02/26 20:55:59
>>377
すいません。見落としていました。
>>375
ありがとう
はぁ、なんか疲れてるみたい・・・

380:デフォルトの名無しさん
07/02/26 21:02:18
「文字列の長さ」を「文字変数の長さ」と言い換えたのは
意味があるのかと…思ったわけです。
深く考えすぎたか_| ̄|○

381:デフォルトの名無しさん
07/02/28 15:39:38
マルチすみません。
情報が少ないですが以下の現象で困っております。
環境 WindowsXP Excel2003

エクセルのVisual Basic Editorで社内作成のコントロール(VB6にて)
をはりつけ、その後エクセルを終了すると必ずメモリがReadに・・・
のエラーがでてしまい困っています。あと2時間ほどで調べないといけない
のですが。。。誰かご教授お願いします。

382:デフォルトの名無しさん
07/02/28 15:49:07
> 社内作成のコントロール
の問題を聞かれても、どうにもならんわな。

聞きたいなら最低限そのコントロールのソースを晒せ。
それが出来ないなら自社内で解決しろ。

383:デフォルトの名無しさん
07/02/28 16:00:10
社内掲示板で2ちゃんねる使ってるなんてユニークな会社ですねー

384:デフォルトの名無しさん
07/02/28 17:21:49
dim page as long
URL="http:xxx.com/&page="+cells(x,x)+"&main=
だとエラーは出ないんですが
URL="http:xxx.com/&page="+1+"&main=

URL="http:xxx.com/&page="+page+"&main=
だと型が一致しません13Errorとでるのですが、なぜでしょうか


385:デフォルトの名無しさん
07/02/28 17:27:54
URL="http:xxx.com/&page=" & 1 & "&main="
URL="http:xxx.com/&page=" & page & "&main="


386:デフォルトの名無しさん
07/03/02 02:08:55
objIE.document.forms.Item(0).ID.Value = "ID"
objIE.document.forms.Item(0).PASS.Value = "PASS"
objIE.document.forms.Item(0).submit().Click
これで自動ログインさせたいのですが、ログインするこそはするんですが、
objIE.document.forms.Item(0).submit().Click
の行をデバックで過ぎると

オブジェクトが必要です。(Error 424)
と言うエラーが出てしまうのですが、なにか解決方法はありませんか

387:デフォルトの名無しさん
07/03/02 02:12:50
すみません、書き込んでから気づきました。().Clickが不要だったんですね('A`)
スレ汚しすみませんでした

388:デフォルトの名無しさん
07/03/02 06:55:43
毎日入力するデータを別シートに自動保存して
何日か溜まったら分析したいのですが

例)

3月2日に "Sheet1" の A10 ~ A20 に整数のデータを入力する

コマンドボタンをクリックすると
そのデータが "Sheet3" の 3月2日の列 ( AH10 ~ AH20 ) にコピーされる

翌日、3月3日に "Sheet1" の A10 ~ A20 に整数のデータを入力する

コマンドボタンをクリックすると
そのデータが "Sheet3" の 3月3日の列 ( AI10 ~ AI20 ) にコピーされる

また翌日・・・

という感じに、Sheet1の同じ範囲のデータをSheet3に、日にちごとにずらしてコピーしたいのですが
どうすれば良いのでしょうか?教えて下さい


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