Excel VBA 質問スレ Part19
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/05/19(木) 06:35:55.8202 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
14 http://pc12.2ch.net/test/read.cgi/tech/1262748898/
15 http://pc12.2ch.net/test/read.cgi/tech/1271261239/
16 http://hibari.2ch.net/test/read.cgi/tech/1280045912/
17 http://hibari.2ch.net/test/read.cgi/tech/1289182437/
前スレ:
Excel VBA 質問スレ Part18
http://hibari.2ch.net/test/read.cgi/tech/1298240666/
0002デフォルトの名無しさん
2011/05/19(木) 06:37:40.54★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
0003デフォルトの名無しさん
2011/05/19(木) 09:09:18.280004デフォルトの名無しさん
2011/05/19(木) 10:09:31.250005デフォルトの名無しさん
2011/05/19(木) 16:40:20.76のような形でfor文で回して各行の合計をそれぞれ表示させたいのですが
B1:H1の部分を足していく(B2:H2、B3:H3…)
のようにするにはどうすればいいのでしょうか?
0006デフォルトの名無しさん
2011/05/19(木) 17:20:01.870007デフォルトの名無しさん
2011/05/19(木) 17:35:11.400008デフォルトの名無しさん
2011/05/19(木) 18:39:40.63MS XPS Document Writerを使っても白黒にしかならないんだけど。
VB2008ならMS XPS Document Writerでカラー印刷できるのに、
VBAはなんでカラー印刷にならないんだろうか?
0009初心者です
2011/05/19(木) 20:32:24.73A5からH1000程度のデータ表があります。
このプログラムを実行すると、構文エラーがでてきます。
Loop Until Cells(gyou, retu) = "" にカーソル位置が来て。LOOPに対応するDoがありませんと表示されます。
Sub サイコロ()
Dim ymaru As Integer, imaru As Integer
Dim gyou As Integer, retu As Integer
ymaru = 0
imaru = 0
gyou = 6
retu = 8
0010初心者です
2011/05/19(木) 20:33:40.06Do
If Cells(gyou, retu) = "○" Then
ymaru = ymaru + 1
imaru = 0
If ymaru >= 3 Then
Call 連同初買引売
Else
ymaru = 0
imaru = imaru + 1
If imaru >= 3 Then
Call 連同初売引買
End If
gyou = gyou + 1
Loop Until Cells(gyou, retu) = ""
End Sub
0011初心者です
2011/05/19(木) 20:34:00.92'サイコロ 連日同一サイコロ 初値買い〜当日引値売り
Sub 連同初買引売()
Cells(gyou, retu).Offset(0, -6).Copy
Cells(gyou, retu).Offset(0, 7).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Sub 連同初売引買()
Cells(gyou, retu).Offset(0, -6).Copy
Cells(gyou, retu).Offset(0, 8).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
一体、Donosysoriのどこが間違っているのでしょうか?
あと、サブルーチンのcellsの使用法は間違っていませんか?
0012デフォルトの名無しさん
2011/05/19(木) 20:44:12.790013デフォルトの名無しさん
2011/05/19(木) 20:54:29.560014デフォルトの名無しさん
2011/05/19(木) 20:58:45.19実は俺もコードをカラー印刷する方法を知りたい。
誰か教えて。
0015デフォルトの名無しさん
2011/05/20(金) 00:04:30.610016デフォルトの名無しさん
2011/05/20(金) 03:56:03.690017デフォルトの名無しさん
2011/05/20(金) 04:00:23.88Ifが3つあるのにEnd Ifが1つしかない
変数gyouとretuの内容が下のSubに伝わっていない
00188=14 実は同一人物ですw
2011/05/20(金) 09:59:30.88うまくいきました。ありがとうございます。
16さんもやってますか?
しかし、XPS Document Writerは
いちいち上にパス名が表示されてうざいのですが、
これを全く表示しない方法ってある?
16さんのような使い手ならご存知かと。。。
0019デフォルトの名無しさん
2011/05/20(金) 10:52:03.99ありがとうございます、うまくいきました!
0020デフォルトの名無しさん
2011/05/20(金) 14:17:20.63Private Sub CommandButto1_Click()
Dim myLeft1 as long
Dim myTop1 as Long
Dim myWidth1 as Long
Dim Target1 as Range
�@
myLeft1 = Target1.Left
myTop1 =Target1.Top + Target1.Height / 2
myWidth1 = Target1.Width + Target1.Left
Set MyLine1 = �A
End Sub
0021デフォルトの名無しさん
2011/05/20(金) 14:56:37.69�A〜addline〜
0022デフォルトの名無しさん
2011/05/20(金) 16:17:49.65もう少し解いて面白い問題出してくれよ。
0023デフォルトの名無しさん
2011/05/20(金) 19:02:36.23お前のためのスレです
0024デフォルトの名無しさん
2011/05/21(土) 12:11:23.03よろしくお願いします。
0025デフォルトの名無しさん
2011/05/21(土) 12:31:21.42VB6と同じやり方で
0026デフォルトの名無しさん
2011/05/21(土) 12:33:40.94やってみろや
0027デフォルトの名無しさん
2011/05/21(土) 13:58:52.29Excelの機能でボタンの形を変えるのは無理
丸とか矢印の画像をボタンかイメージか何かのコントロールに貼り付ける
0028デフォルトの名無しさん
2011/05/21(土) 17:40:04.28区切り文字がないセルになるとエラーが出てそこで止まってしまう。解決方法あったら教えて下さい
例
A
1 1/2
2 1/3
3 1/4
4 5
5 1/6
Sub split()
Dim i As Integer, tmp As Variant
For i = 1 To 5
tmp = Split(Cells(i, 1), "/")
Cells(i, 1) = hp(1)
Next i
End Sub
この場合、i=4のところで処理が止まってしまいます。
0029デフォルトの名無しさん
2011/05/21(土) 17:46:27.32文字列内部に/があり、かつ前後に文字列が少なくとも1つあることを判定
条件達成で処理
0030デフォルトの名無しさん
2011/05/21(土) 17:55:26.00ありがとう
ちなみに内部に"/"の判定だけでよくて、前後の文字は関係なかったです
0031修行の身
2011/05/21(土) 20:31:24.67・シート1の『〔○曜日〕』から『 /他』まで、といった感じで各曜日の文章を1セルにまとめ、シート2に出力したい。ただし各週文章数はランダムのためそれに対応できるのが良いです。
・A1の文字列から日付を抽出してシート2に出力したい。
-----シート1-----
A
1 5月9日(月)〜5月13日(金)
2 "〔月曜日〕"
3 "●文章1"
4 "●文章2"
5 "●文章3"
6 " /他"
・・・
----------
シート1の情報をシート2に以下のように出力したいです。
-----シート2(別シート)-----
A B
1 5/9 "〔月曜日〕●文章1●文章2●文章3 /他"
2 5/10 "〔火曜日〕●文章1●文章2 /他"
・・・
5 5/13 "〔金曜日〕●文章1 /他"
----------
0032デフォルトの名無しさん
2011/05/21(土) 20:48:13.19>>2のテンプレ★5を読んでこい
やってみたなら
できたとこまででいいからコード晒しとけ
0033デフォルトの名無しさん
2011/05/21(土) 20:54:58.230034デフォルトの名無しさん
2011/05/21(土) 21:20:34.80スレルールを述べよ
0035デフォルトの名無しさん
2011/05/21(土) 21:24:45.12複数の単語の意味を並べたHTMLを作ろうとしています。
ほぼできたのですが、ファイル出力すると発音記号が
「?」に変わってしまいます。
一旦単語ごとにセルに出力していますが、たとえばassureでは、
セルではきちん「əˈʃʊə」「əʃɔː」となっており、
そこからメモ帳に手動コピペしても「əˈʃʊə」「əʃɔː」となります。
しかしVBAで出力すると「????」です。
なにか対策はありますでしょうか。
0036デフォルトの名無しさん
2011/05/21(土) 21:35:57.45unicode
0037デフォルトの名無しさん
2011/05/21(土) 22:21:39.12ありがとうございます。できました。
発音記号に気づく前に改行が文字化けすることに気づいて、
削除したりいろいろしてましたが無駄でしたorz
今日はじめてVBA(というか組み込みC以外)のプログラムを触りましたが、
やれることも手段も多すぎて疲れました…面白いですがw
0038デフォルトの名無しさん
2011/05/21(土) 22:30:49.330039デフォルトの名無しさん
2011/05/21(土) 22:37:40.72★1 OSとExcelのバージョンくらい書け
★2 VBA使わないExcelの質問禁止
★3 VBAでExcel本体を操作する用途以外はスレ違い
★4 同上
★5 丸投げお断り
★6 わからなければマクロの記録試せ
0040デフォルトの名無しさん
2011/05/21(土) 22:54:05.46Private Sub CommandButto1_Click()
Dim myLeft1 as long
Dim myTop1 as Long
Dim myWidth1 as Long
Dim Target1 as Range
【 �@ 】
myLeft1 = Target1.Left
myTop1 =Target1.Top + Target1.Height / 2
myWidth1 = Target1.Width + Target1.Left
Set MyLine1 =【 �A 】
End Sub
0041デフォルトの名無しさん
2011/05/21(土) 22:55:32.13�A〜addline〜
0042デフォルトの名無しさん
2011/05/21(土) 23:41:02.650043デフォルトの名無しさん
2011/05/22(日) 00:02:24.90�A前略 addline 以下略
0044デフォルトの名無しさん
2011/05/22(日) 00:08:18.480045デフォルトの名無しさん
2011/05/22(日) 00:21:42.79Set MyLine1
する必要無いよなw
MyLine1の変数宣言がこのプロシージャ内に無いのを見ると
モジュールレベルで宣言されていて別の処理で使うのだろうが
問題として適切じゃないねw
0046デフォルトの名無しさん
2011/05/22(日) 01:20:57.00それともやっぱり早さよりも正確さの方が重要かな?
0047デフォルトの名無しさん
2011/05/22(日) 04:03:36.57Sub en(tx, ty, hankei) '中心X 中心Y 半径
Dim a, b, c, d, e, f, g, z
a = hankei ^ 2
b = hankei
c = 0
Do
If b > 0 Then
d = -1
Else
d = 1
End If
If c > 0 Then
e = 1
Else
e = -1
End If
f = Abs(b ^ 2 + (c + d) ^ 2 - a)
g = ???
If f > g Then
b = b + e
Else
c = c + d
End If
Cells(c + ty, b + tx).Interior.Color = 0
If c = 0 And e = 1 Then Exit Sub
Loop
End Sub
0048デフォルトの名無しさん
2011/05/22(日) 05:02:07.07あえて答えるとbとc入れ替えてdをeに
因みに、正しくは「セルの塗りつぶしで円を表現する」な
0049デフォルトの名無しさん
2011/05/22(日) 09:03:41.762010で動かしてみようとしたのですが、最初の立ち上がった時にいろいろ仕込んだメッセージが出た後に、
画面が灰色になり強制終了されているようです。
理由が分かりません。誰か分かりませんか?
0050デフォルトの名無しさん
2011/05/22(日) 09:13:39.590051デフォルトの名無しさん
2011/05/22(日) 09:15:54.870052デフォルトの名無しさん
2011/05/22(日) 09:40:00.26うpしたくないとか、うpできないとか言うなら、さようなら
0053デフォルトの名無しさん
2011/05/22(日) 09:42:09.8326行以内 時間無制限
0054デフォルトの名無しさん
2011/05/22(日) 09:42:19.660055デフォルトの名無しさん
2011/05/22(日) 12:30:57.350056デフォルトの名無しさん
2011/05/22(日) 13:05:23.59問題がおかしいけど、たぶん出題者の意図としては
g = Abs(c ^ 2 + (b + e) ^ 2 - a)
>>53 そもそも提示されたソースだけでは>>47が楕円になるし、いくらなんでも26行は長杉
0057デフォルトの名無しさん
2011/05/22(日) 16:06:27.34> g = Abs(c ^ 2 + (b + e) ^ 2 - a)
その解答は、既に>>48が書いてるじゃん
f = Abs(b ^ 2 + (c + d) ^ 2 - a)
g = Abs(c ^ 2 + (b + e) ^ 2 - a)
> bとc入れ替えてdをeに
0058デフォルトの名無しさん
2011/05/22(日) 17:07:10.83お前は早く作ると不正確なコードになるのか?
だとしたら意味ねー。
0059デフォルトの名無しさん
2011/05/22(日) 22:02:28.94残念ながらちょっと複雑なコードになってくると
雑になるんだな。
やっぱ正確さは前提だよな。
じっくりすることにするわ
0060デフォルトの名無しさん
2011/05/23(月) 00:06:34.87動作の精査が取れた使い回しの効く部分は、
部品化しておいて、機能やカテゴリごとに標準モジュールやクラスに纏めておくと、
その部分は速く正確に作れるよ。
特に同じ様なものを複数作る時はフォーマットになるスケルトンを先に作ってからやると最終的には速く作れるわさ。
006116才♀
2011/05/23(月) 07:41:28.04問題:
セルに「さやか」と入力すると
・新規シート作成
・そのシート以外の全てのシート削除
・ブック保存
・ブック閉じる
以上を警告メッセージなしで行うプロシージャを絶対作成しなさい><
0062デフォルトの名無しさん
2011/05/23(月) 08:14:31.840063デフォルトの名無しさん
2011/05/23(月) 08:17:32.290064デフォルトの名無しさん
2011/05/23(月) 08:34:40.33髪型がツインテールなら考える
0065デフォルトの名無しさん
2011/05/23(月) 08:41:01.31なんか悪意的仕様にしか見えない。
0066デフォルトの名無しさん
2011/05/23(月) 08:50:32.670067デフォルトの名無しさん
2011/05/23(月) 14:34:40.30・新規シート作成
・ry
0068デフォルトの名無しさん
2011/05/23(月) 16:11:01.63Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If (Target.Cells = "さやか") Then
Application.DisplayAlerts = False
Worksheets.Add after:=Worksheets(Worksheets.Count)
For i = 1 To Worksheets.Count - 1
Worksheets(1).Delete
Next
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub
0069デフォルトの名無しさん
2011/05/23(月) 18:00:10.05シェアウェアの期限が切れたら自動的に消滅しますみたいなコードだよな
0070デフォルトの名無しさん
2011/05/23(月) 21:00:16.51まあ簡単に破れるけどね
0071デフォルトの名無しさん
2011/05/23(月) 21:59:18.05おk
つまりは今までのコードを見直して整理して
使いまわしできそうなものはガンガン使いまわしていくのが
早道ってことだな
がんばるぜぃ!!
0072デフォルトの名無しさん
2011/05/23(月) 22:18:04.33エクスポートして管理してる人って少なそう
VB6始め、一般の言語では超基本的なことなのにな
この間、VBEのプロジェクトエクスプローラに、D&Dでモジュールインポートしたら
VBA10年以上使ってるっていう上司に驚かれて、それ知らないことにこっちが驚いた
エクスポートだってD&Dで出来るのに、コピペでの使いまわしはしても
D&Dどころか、メニューからのインポート、エクスポートすらしたこと無いとか言われたよ
0073デフォルトの名無しさん
2011/05/23(月) 22:28:09.38知らない人なんていないだろ10年もやってんなら
0074デフォルトの名無しさん
2011/05/23(月) 22:38:10.580075デフォルトの名無しさん
2011/05/23(月) 23:04:06.39VBA10年の彼がエクスポートを知らなかったとは書いてないよ
彼が『知らなかった』のはD&Dでのエクスポート、インポート
普通のエクスポート、インポートは『やったこと無い』だけで知ってはいたよ
0076デフォルトの名無しさん
2011/05/23(月) 23:43:31.08エクスポート/インポートしたことないんなら D&D でできること知らなくても
当たり前だと思うが。
> VB6始め、一般の言語では超基本的なことなのにな
そもそも VBA 以外の言語は大抵わざわざエクスポート/インポートせずに普通
に管理できる。もちろん VB6 も。
0077デフォルトの名無しさん
2011/05/23(月) 23:44:24.39何を持って一般的な言語と定義するか分からないから何とも言えないけど、
VisualStudio系のは標準モジュールやクラスモジュールは作成した時にすでにファイルとして存在するから、
取り込む時には「新しい項目の追加」で「既存の項目」を選択して取り込むので、
インポート、エクスポート機能はむしろVBA特有の機能だと思ったけど。
JAVAとかは知らない。何か言語の問題って言うよりフレームワークの問題って気もするし。
0078デフォルトの名無しさん
2011/05/24(火) 00:00:53.530079デフォルトの名無しさん
2011/05/24(火) 00:26:41.37伝わらない。
しかしすでに二人エクスポートするもんだと思って書いたと判断した人が出たのは確か。
0080デフォルトの名無しさん
2011/05/24(火) 00:31:55.57> エクスポートして管理してる人って少なそう
0081デフォルトの名無しさん
2011/05/24(火) 00:39:21.870082デフォルトの名無しさん
2011/05/24(火) 01:02:41.91その通りです。
>>79
確かに書き方に不備があったかもしれませんね。
多くの言語で、逐一エクスポート的な操作をしなくてもファイルとして存在するのは周知の事実で
インポート的な操作手順や機能・項目名などの多少の違いくらい補完してくれるだろうと思って
端折りすぎてしまいました。
0083デフォルトの名無しさん
2011/05/24(火) 06:08:38.91Function irekae(a)
Dim b(), c, d, e
c = UBound(a, 1)
d = UBound(a, 2)
???
For e = 0 To c
For f = 0 To d
b(f, e) = a(e, f)
Next
Next
irekae = b
End Function
0084デフォルトの名無しさん
2011/05/24(火) 06:42:27.950085デフォルトの名無しさん
2011/05/24(火) 06:49:37.16ちなみにExcel VBAじゃ1オリジンの配列もよく使う
Transposeを使わないのは正解ではある
0086デフォルトの名無しさん
2011/05/24(火) 07:04:15.58Dim f
だろ?
0087デフォルトの名無しさん
2011/05/24(火) 07:34:19.69不正解
0088デフォルトの名無しさん
2011/05/24(火) 07:48:40.98出題のレベルも低すぎな上に穴ありすぎだし
0089デフォルトの名無しさん
2011/05/24(火) 07:58:13.32出題者の意図は察して埋めろと言う事だから動く動かないより
こんなしょぼいコードで偉そうに出題してすみません的なコメントが入るのが
一番しっくり来るだろ?
0090デフォルトの名無しさん
2011/05/24(火) 08:07:52.20ちなみに>>87は>>83じゃない。
0091デフォルトの名無しさん
2011/05/24(火) 21:57:51.81つまり、低劣なコードに見えてこれを破綻のない至上なるコードへと書き換えなければならないのだ
0092デフォルトの名無しさん
2011/05/24(火) 21:59:57.690093デフォルトの名無しさん
2011/05/24(火) 22:02:23.66だろJK
0094デフォルトの名無しさん
2011/05/25(水) 00:12:20.44でA列の一番の下の文字列の位置を取得しますが、
本当にそれより下の列には最後まで何も入力されていないかどうかをチェックするにはどうすればいいのでしょうか?
if(maxCell == Range("A10000").End(xlUp).Row)
という方法が思いつきますが、これがベターと言えるのでしょうか?
0095デフォルトの名無しさん
2011/05/25(水) 00:18:42.570096デフォルトの名無しさん
2011/05/25(水) 02:03:37.501行目の式と比較すればベターだけどベストじゃない
最大行数はExcelのバージョンによって違うから、最終行はいちいち求めた方が汎用性が高い
maxCell = Range("A" & Rows.Count).End(xlUp).Row
ただしこれでも完璧じゃない
0097デフォルトの名無しさん
2011/05/25(水) 02:53:11.75傾いた楕円 じゃね
これのレーンのとこで使ってるぜ
http://xlsg.net/cgi-bin/updown2/updown2.cgi?mode=download&id=339
0098デフォルトの名無しさん
2011/05/25(水) 04:05:11.00○ maxCell = Cells(Rows.Count, 1).End(xlUp).Row
0099デフォルトの名無しさん
2011/05/25(水) 06:51:36.01アホかまったく。
前者はピリオド打った時入力候補が出るメリットがある。
0100デフォルトの名無しさん
2011/05/25(水) 07:11:45.12たぶん
0101デフォルトの名無しさん
2011/05/25(水) 07:44:09.700102デフォルトの名無しさん
2011/05/25(水) 07:58:15.490103デフォルトの名無しさん
2011/05/25(水) 09:05:21.45irekae = WorksheetFunction.Transpose(a):ExitFunctionとでも引っかけたつもりが、>>85にTransposeに言及されて黙ってしまったのか?
0104デフォルトの名無しさん
2011/05/25(水) 10:37:26.02それもあるけど、それでもまだ完璧じゃない
0105デフォルトの名無しさん
2011/05/25(水) 10:58:25.13完璧じゃない
なんで口先だけで、コードを示さないの?
0106デフォルトの名無しさん
2011/05/25(水) 11:01:53.87●█▀█▄
0107デフォルトの名無しさん
2011/05/25(水) 11:06:42.99フィルタリングされてるとすっ飛ばすからな。
いずれにしても完璧なコーディングできるやつなんて滅多にいねーよ。
掲示板の回答で細々と書くやつはアホだ。
0108デフォルトの名無しさん
2011/05/25(水) 11:09:53.50xlUpの結果が1行目だった場合、先頭行にデータが入ってるかどうかも確認しないと
0109デフォルトの名無しさん
2011/05/25(水) 11:12:10.910110デフォルトの名無しさん
2011/05/25(水) 11:16:41.91先頭行にはタイトルがあるのが常識だからそれは考えなくていいだろ?
Findメソッドでもできるけど、一般的じゃねーな。
0111デフォルトの名無しさん
2011/05/25(水) 11:23:12.15オートフィルター対策でFindメソッドなんて、もともとフィルターがかかってるなら仕方がない部分もあるが
VBAでオートフィルターはかけてはいかん。
0112デフォルトの名無しさん
2011/05/25(水) 11:28:40.56常識?なんだそりゃ
0113デフォルトの名無しさん
2011/05/25(水) 11:29:55.19馬鹿じゃね?
0114デフォルトの名無しさん
2011/05/25(水) 11:37:38.47VBAで読み書きするだけのデータシートにはタイトル書かないことも多い
VBA側にタイトルに相当するもの(定数、列挙体)があれば完全に事足りるからな
0115デフォルトの名無しさん
2011/05/25(水) 11:46:17.72For i = 2 To 最終行なんて下手な書き方なら偶々対策はされてるが。
0116デフォルトの名無しさん
2011/05/25(水) 12:03:21.080117デフォルトの名無しさん
2011/05/25(水) 12:05:17.320118デフォルトの名無しさん
2011/05/25(水) 12:08:52.33学校行け餓鬼
0119デフォルトの名無しさん
2011/05/25(水) 12:11:15.61彼女にふられたの?
0120デフォルトの名無しさん
2011/05/25(水) 12:15:31.940121デフォルトの名無しさん
2011/05/25(水) 12:19:58.86http://www.sonoworld.com/images/FetusItemImages/article-images/multiple_gestations/dupl-incompl_zouiten_files/siamois5.jpg
http://sonoworld.com/images/FetusItemImages/article-images/Multiple_gestations/conj_twins_rios/ima7.jpg
http://www.sonoworld.com/images/FetusItemImages/article-images/Syndromes/OEIS_Contarin/9.jpg
http://www.sonoworld.com/images/FetusItemImages/article-images/Syndromes/OEIS_Contarin/10.jpg
0122デフォルトの名無しさん
2011/05/25(水) 12:23:24.220123デフォルトの名無しさん
2011/05/25(水) 12:49:09.87煽りが足りない
0124デフォルトの名無しさん
2011/05/25(水) 13:35:43.08>>115はxlUpの話だよなぁ。
0125デフォルトの名無しさん
2011/05/25(水) 15:54:12.02●█▀█▄
0126デフォルトの名無しさん
2011/05/25(水) 16:27:26.54ここで回答するのは無理
自分で作り分けるしかない
0127デフォルトの名無しさん
2011/05/25(水) 16:51:28.98do until cells(i,1)〈〉゙゙
i=i-1
loop
みたいなのもう出た?
0128デフォルトの名無しさん
2011/05/25(水) 20:52:35.47そういう話じゃないと思うなぁ。
A2以下にデータがないとき、Range("A65536")End(xlUp).Rowは1になるが
行番号1のA1が空白か空白じゃないかって話だろ?
0129デフォルトの名無しさん
2011/05/25(水) 22:06:41.51有ったとしても1行だけとは限らない。
どっちにしてもデータの最上部に対して何らかの仕組みを作っておかないと、
最上部に1件データが有ったとしても0件と見なしてみたり、
データ開始行より上の行をデータ最終行と見なしたりする。
だから考慮しなくていいと言うもんでもないと思う。
0130デフォルトの名無しさん
2011/05/25(水) 23:15:44.60この仕組みが何年たっても「大和の吊るし柿」でへたなりに固まってるやつ見るけどw
0131デフォルトの名無しさん
2011/05/26(木) 00:51:04.54>最上部に1件データが有ったとしても0件と見なしてみたり、
>データ開始行より上の行をデータ最終行と見なしたりする。
下は俺もやっとわかったが、上がどうも想像がつかない。
たとえばどういうとき?
0132じゃが山さん
2011/05/26(木) 02:50:51.29いろいろとエスパーして???を埋めなさい(15点)
Sub tyokusen(sx, sy, ex, ey)
Dim a, b, c, d, e, f, g, z
f = 1
If sx > ex Then f = -1
g = 1
If sy > ey Then g = -1
a = sx
b = sy
If Abs(ex - sx) < Abs(ey - sy) Then
c = Abs((ex - sx) / (ey - sy))
d = 0.5
Do
d = d + c
If d > 1 Then
d = d - 1
a = a + f
End If
b = b + g
Cells(b, a).Interior.Color = 0
If b = ey Then Exit Sub
Loop
Else
???
End If
End Sub
0133デフォルトの名無しさん
2011/05/26(木) 07:55:18.331行目からデータ部として使っている場合。
1行目にしかデータがない時、.End(xlUp).Rowで1が取得出来るけど、
全ての行に対してデータがなかった場合も1が取得される。
だからこのままではデータが0件なのか1件なのか見分けが付かない。
て言うか、散々前にそれ言ってる人がいるから今更こんな事言うと「だからそう言ってるじゃん!!」って
心の叫びが聞こえてくる様な気がするよ。
0134131
2011/05/26(木) 08:43:26.93そういうことなら
「最上部に1件データが有ったとしても0件と見なしてみたり」って言うより
「最上部にデータが無くても1件と見なしてみたり」じゃないの?
これなら俺でも分ったよ。
0135デフォルトの名無しさん
2011/05/26(木) 10:10:31.61それは作りによりけり。
同じこと。
0136デフォルトの名無しさん
2011/05/26(木) 10:53:36.21どうも想像力が弱いのか俺には思いつかん。
0137デフォルトの名無しさん
2011/05/26(木) 11:31:32.04シートをワーク用に使用した場合とか。ワーク用にシートを使う場合はどの項目に何が入っているのかは使用書に記述しておけばいいし、
それを見られたくないならVerryHiddenとかで非表示にしておけばいい。
0138デフォルトの名無しさん
2011/05/26(木) 11:50:49.240139デフォルトの名無しさん
2011/05/26(木) 16:45:46.47タイトルってのは「人間がシートを直接見る」時に必要な物だから、
データの入出力をフォームやVBAだけでやる場合はタイトルなんか必要ない
実際、そういうアプリは世の中にたくさんある
ここはVBAスレだから、そういうデータ置き場としての使い方は普通に良くあることとして話を進める
0140デフォルトの名無しさん
2011/05/26(木) 16:58:38.23だからそう言ってるじゃん!!
0141デフォルトの名無しさん
2011/05/26(木) 19:19:07.52俺ならデータ置き場としてしか使わないならExcelなんか使わないな。
Excelでやる人はExcelに備わった機能を使いたいんだろうけど、大概のものは自作できるし。
0142デフォルトの名無しさん
2011/05/26(木) 19:29:01.57Excelの機能を使うにはほとんどタイトルいるぞ?
むしろExcelの機能を使わない人がタイトルをつけないんだと思う。
0143デフォルトの名無しさん
2011/05/26(木) 19:39:36.25そう言われればそうだけど、ソートとかWorksheetFunctionならタイトル要らないな。
でもソートとかWorksheetFunctionレベルならほとんど自作できるよなぁ。
データ置き場にする人がExcelの何を使いたいのか分らなくなったわ。
0144デフォルトの名無しさん
2011/05/26(木) 19:41:28.760145デフォルトの名無しさん
2011/05/26(木) 19:49:37.88ピボットとかオートフィルターとかフィルタオプションとか統合とかいろいろあるんじゃね?
0146デフォルトの名無しさん
2011/05/26(木) 19:51:51.920147デフォルトの名無しさん
2011/05/26(木) 19:56:45.96わざわざDBに接続しなくても、ブックを閉じて開いても値を残せる一番手っ取り早い場所だからな。
ファイルを複数にする必要もないし。
0148デフォルトの名無しさん
2011/05/26(木) 19:56:48.85やってみたらたしかにそうみたいだけど、先頭行を空白にするくらいなら普通タイトルを入れるんじゃない?
0149デフォルトの名無しさん
2011/05/26(木) 20:06:17.26え?
オートフィルター設定する時に項目から設定するかデータから設定するか選べない?
バージョンによって違うのだろうか・・・
0150デフォルトの名無しさん
2011/05/26(木) 20:33:09.23Excel2007にはそういうのはないみたいだな。
もしかしてソートと勘違いしてない?
0151デフォルトの名無しさん
2011/05/26(木) 22:38:10.340152デフォルトの名無しさん
2011/05/26(木) 22:41:10.810153デフォルトの名無しさん
2011/05/26(木) 23:55:15.21あるエクセルファイルに、別ブックからシートをコピーしたいのですが、
実行時エラー9と怒られてしまい、コピー出来ません。
Workbooks(OpenFileName).Worksheets("Sheet1").Copy
のような形にしているのですが、何がいけないのがご教示いただけますでしょうか。
0154デフォルトの名無しさん
2011/05/27(金) 00:47:09.05ブック名とシート名を確認
一番多いのがシート名の間違い
0155デフォルトの名無しさん
2011/05/27(金) 01:48:06.59ご指摘ありがとうございます。
たびたび申し訳ありませんが、
マクロ起動ファイルとは、別のブック内のデータをソートしたいのですが、
どうやっても起動元が並び変わってしまいます。
別ブックをActivateにしても、Withを使ってもうまく動きません・・・
一時間以上悩んでいるのですが、さっぱりです。。
0156155
2011/05/27(金) 02:26:02.460157デフォルトの名無しさん
2011/05/27(金) 06:22:50.57???を察して埋めなさい
Sub チンチロリン(s1, s2, s3)
If ??? Then MsgBox "シゴロ"
End Sub
0158デフォルトの名無しさん
2011/05/27(金) 09:53:19.54m = "iはインデックス"
mes = i & m
MsgBox "mes", vbOKOnly, "Err"
ではエラーになります
0159デフォルトの名無しさん
2011/05/27(金) 09:58:36.32str1 = i & "月シート"
Set ws1 = Worksheets(str1)
のように変数str1をセットすると""を付けてもエラーになります
文字列+数値の変数を式の中に入れて処理させるにはどのようにすればいいのでしょうか?
0160デフォルトの名無しさん
2011/05/27(金) 10:05:54.50IF s1 * s2 * s3 = 120 Then
'3つの出目をかけ合わせて120になるのは、4,5,6の組合せしか無い
0161デフォルトの名無しさん
2011/05/27(金) 10:11:59.62それをそのままコピペして使ってみたが別にエラーにならなかったよ。
何かほかの部分でエラーが出てるのでは?
ちなみに、 MsgBox "mes", のダブルクォーテーションはいらんだろう。
0162デフォルトの名無しさん
2011/05/27(金) 10:17:31.93こっちも別にエラーの起こる要素が無い。
別の理由でエラーが起こってるはずだ。
0163デフォルトの名無しさん
2011/05/27(金) 10:25:35.35ごめんなさい、今までmesの部分でエラーが出ていたのですが、もしかしたらExcelのバージョン問題だったかもしれません
家のは95でして(苦笑)
ただ、シート部は出来ませんでした
shi = "月"
str = i & shi
Set ws1 = Worksheets(str)
ではインデックスが有効範囲にありませんと出てしまいます
0164163
2011/05/27(金) 10:29:16.50ごめんなさい、出来ました
インデックスがおかしかったようです
皆さん、ごめいわくをおかけ致しました
0165デフォルトの名無しさん
2011/05/27(金) 15:09:06.01エクセルに入力したテストの点数を
80以上を優
70-79を良
60-69を可
と表示したいのですが上手くいきません
おかしいところがどこか教えてください
Function 成績評価1(ten As Variant)
Dim score As String
Dim seiseki As Variant
score(1) = "優": score(2) = "良": score(3) = "可": score(4) = "不可"
ten = Left(ten, 4)
If ten >= 80 Then seiseki: i = (1)
If 70 <= ten And ten >= 79 Then seiseki: i = (2)
If 60 <= ten And ten >= 69 Then seiseki: i (3)
If 59 <= ten Then seiseki: i = (4)
成績評価1 = score(i)
End Function
0166デフォルトの名無しさん
2011/05/27(金) 15:20:41.39配列宣言
引数チェック
引数加工
入力値
0167デフォルトの名無しさん
2011/05/27(金) 15:26:53.53俺宛でいいのかな
つまり基礎すら出来てないってことですか?
0168デフォルトの名無しさん
2011/05/27(金) 16:03:19.00俺が似たようなコード書くならconstとかemumとか使うかも試煉
0169デフォルトの名無しさん
2011/05/27(金) 16:59:02.40ハッキリ言ってやれよ
おかしいのは>>165の知能だと!!
0170デフォルトの名無しさん
2011/05/27(金) 17:14:48.73最初からそう教えてくれればいいのに!の2冊は読みました。
知識はあるけど、プログラムの作り方がいまいちわからない初級者です。
0171デフォルトの名無しさん
2011/05/27(金) 17:20:48.19そういうのじゃないんだよね
0172デフォルトの名無しさん
2011/05/27(金) 17:50:07.880173デフォルトの名無しさん
2011/05/27(金) 19:49:19.160174デフォルトの名無しさん
2011/05/27(金) 20:20:01.17おー、こんな本あったのか。
VBAはExcelについてるヘルプとMSDNくらいしか見たことなかったが
読んでみるかな
0175デフォルトの名無しさん
2011/05/27(金) 20:21:03.98実際にプログラムを作成しはじめれば、いいんじゃないか。
そうすれば、どういう勉強をすればいいか見えてくると思う。
とくに仕事で他の人が使うプログラムを作ると
ユーザーインターフェイスとか
いろいろな柔軟性とか
が大事だとよく分かる。
0176デフォルトの名無しさん
2011/05/27(金) 22:08:41.54× If 70 <= ten And ten >= 79 Then seiseki: i = (2)
× If 60 <= ten And ten >= 69 Then seiseki: i (3)
○ If 70 <= ten And ten <= 79 Then seiseki: i = (2)
○ If 60 <= ten And ten <= 69 Then seiseki: i = (3)
0177デフォルトの名無しさん
2011/05/28(土) 02:58:50.94その行全体の色が変わるようにしたいんですが
やり方がわかりません
マクロを使わずにできるならその方法も教えてください
よろしくお願いします
0178デフォルトの名無しさん
2011/05/28(土) 03:29:59.68A1〜Z1の色を変えたいなら
条件付き書式
=COUNTA(A1:Z1)>0
をA1〜Z1に設定すれば、どこかにデータを入れると書式が反映される
0179デフォルトの名無しさん
2011/05/28(土) 04:06:11.82Private Sub Worksheet_Change(ByVal Target As Range)
Target.EntireRow.Interior.ColorIndex = 7
End Sub
とか
0180デフォルトの名無しさん
2011/05/28(土) 06:15:42.13配列と数字Nを渡すとランダムにN個の要素を配列で返す関数を作りなさい
0181デフォルトの名無しさん
2011/05/28(土) 07:28:41.81何で引数もランダムで作成する数もNなんだ?
引数意味ねーじゃん。
0182デフォルトの名無しさん
2011/05/28(土) 08:01:53.760183デフォルトの名無しさん
2011/05/28(土) 09:10:55.74データ消しても色がつくじゃん。
0184デフォルトの名無しさん
2011/05/28(土) 09:12:11.50頭悪すぎ
0185デフォルトの名無しさん
2011/05/28(土) 09:18:06.36お前がな
0186デフォルトの名無しさん
2011/05/28(土) 10:02:48.56読めカス
0187デフォルトの名無しさん
2011/05/28(土) 10:12:46.54死ねゴミ
0188デフォルトの名無しさん
2011/05/28(土) 10:13:57.830189デフォルトの名無しさん
2011/05/28(土) 10:26:48.98空気読め
0190デフォルトの名無しさん
2011/05/28(土) 10:37:00.71俺は意味は分ったけど>>180も「重複なしで」を追加すればもう少し分り易かったかもね。
ようするに配列から重複なしでランダムにN個取り出せって話だな。
検索すれば玉石混淆でそこらへんにいっぱい転がってるけど。
0191デフォルトの名無しさん
2011/05/28(土) 13:00:23.64質問に明記されてないのに、「重複なし」と決めつけるのはいかがなものか
0192デフォルトの名無しさん
2011/05/28(土) 13:18:12.39SEならしらん
0193デフォルトの名無しさん
2011/05/28(土) 13:32:21.57A1に文字列
A2は空白
A3に文字列
〜
と歯抜けになっている
もう一つは
A1に文字列
A2は文字列
A3に文字列
〜
とすべてのセルに文字列が入力
とあった場合上から文字列のあるセル「だけ」を順番に見て行く方法とかって
どうすればいいのでしょうか?
当然両方とも同じプログラムを使用する想定です。
たとえば
上から一行一行見て行って
文字列がある最後の列まで見て
空白行じゃなければ処理をする、空白行は無視するってやり方もあるのですが
どうしてもパフォーマンスが悪くなるので
0194デフォルトの名無しさん
2011/05/28(土) 13:32:25.61仕様書を作る側の立場の人は誰が見ても分かるものを作るのが基本。
それが出来ないとSEにはなれない。
0195デフォルトの名無しさん
2011/05/28(土) 13:39:26.26どうせ上から順番に見なければいけない処理ならデータの最終行までループしてやって空白の時だけ処理飛ばせばいいんじゃないの?
0196デフォルトの名無しさん
2011/05/28(土) 13:45:01.69重複なしなら簡単すぎて問題にもならんよ。
0197デフォルトの名無しさん
2011/05/28(土) 14:03:22.010198デフォルトの名無しさん
2011/05/28(土) 14:18:00.86コーディングや現場ドキュメント作成しかしない奴は底辺プログラマ
規模的に全部する(せざるを得ない)のが広義のプログラマ
部署も島も違うが、近くで見る限りはこんな感じだな
0199デフォルトの名無しさん
2011/05/28(土) 15:50:12.31色をつけるマクロを組みたいのですが
If Range("A1:AR100").Value >= 1 Then
Range("A1:AR100").Interior.ColorIndex = 37
End If
これで実行したら「型が一致しません」とエラーが出ました。
手直しをお願いします。
0200デフォルトの名無しさん
2011/05/28(土) 15:53:46.390201デフォルトの名無しさん
2011/05/28(土) 16:01:23.67For Each c In Range("A1:AR100")
If c > 1 Then c.Interior.ColorIndex = 37
Next
0202デフォルトの名無しさん
2011/05/28(土) 16:02:00.89答える気がないんなら
いちいちつまらん茶々を入れるな
0203デフォルトの名無しさん
2011/05/28(土) 16:09:09.99答える気がないんなら
いちいちつまらん茶々を入れるな
0204デフォルトの名無しさん
2011/05/28(土) 16:12:40.89できました!
ありがとうございます
0205デフォルトの名無しさん
2011/05/28(土) 22:04:29.40それがベストですか?
0206デフォルトの名無しさん
2011/05/28(土) 22:09:05.40大阪にて北朝鮮系ヤクザが在特会に襲撃!!!!!!
http://www.nicovideo.jp/watch/sm14536643
パチンコを死守する北朝鮮系ヤクザ!!!
0207デフォルトの名無しさん
2011/05/29(日) 00:59:58.67ベスト?俺はベストなんて常にないと考えて作っているけど。
例えば今回のケースだと、ひょっとしたら配列数式とかを使えば空白を除いた表を
数式で隣に配置出来るかも知れないし、
それを使った方が効率いいかも知れない。そういった調べたり考えたりしてモアベターな方法を使って行くもんだと思ってるし、
どんな方法を使ってもそれよりいい方法がないとは言い切れない。
この方法がベストですなんておこがましい事は今までも言った事がないし、
これからも言うつもりもないよ。
0208デフォルトの名無しさん
2011/05/29(日) 13:50:54.06文字列置換ダイアログの「検索する文字列」と「置換後の文字列」のリストに任意のリストを設定したいと思っています。
普段は過去に検索or置換した文字列がリストに入っていると思うのですが、そのリスト内容をvba側で操作したいのです。
技術的に可能であれば教えていただけないでしょうか。よろしくお願いします。
0209デフォルトの名無しさん
2011/05/29(日) 14:06:01.52ユーザーフォームで検索ダイアログ作りましょう
そうすれば自由自在です
0210デフォルトの名無しさん
2011/05/29(日) 14:36:00.85返答ありがとうございます。
やはりフォーム作成が一番手っ取り早いですか。。
後出しになってしまいますが、制約があり可能であればフォームを作成せずに行いたいのです。
0211デフォルトの名無しさん
2011/05/29(日) 15:01:01.77やっぱりこう言った場合はAPIでダイアログからコールバックでセンドメッセージだなと
適当な文字の羅列を書いてみるが気にするな。
0212デフォルトの名無しさん
2011/05/29(日) 15:21:37.65最初に画面が多少チカチカしてもいいんなら、
SendKeysで検索ダイアログを必要な回数だけ開いてやるって手がある
ただしこの方法だと項目の追加はできるけど削除はできない
0213問題マン
2011/05/29(日) 16:09:00.99???に入るベストな式を答えなさい(135点)
Sub bezier2d(x1, y1, x2, y2, x3, y3)
Dim a, b, c, d, e, f, g, h, i
a = 2 ^ 10
b = a * a
c = x1 * b
d = y1 * b
e = ???
f = ???
g = 2 * x3 - 4 * x2 + 2 * x1
h = 2 * y3 - 4 * y2 + 2 * y1
For i = 0 To a
Cells(d / b, c / b).Interior.Color = 0
c = c + e
d = d + f
e = e + g
f = f + h
Next
End Sub
0214デフォルトの名無しさん
2011/05/29(日) 16:50:18.590215デフォルトの名無しさん
2011/05/29(日) 18:11:08.35あのね、問題ってのは
「何を読ませるか」「何を考えさせるか」「どう解かせるか」
ってのを考察出来ない人には作れないものなのよ
君が毎度出してるのは、問題でもなんでもない
そもそも、自分より上手、目上の奴に問題出そうてのが間違いだ
0216デフォルトの名無しさん
2011/05/29(日) 20:34:53.68まったくだ。>>213のはいつも面白くない。
見たくもないオナニーを無理矢理見せ付けられてる感じだ。
0217デフォルトの名無しさん
2011/05/29(日) 21:21:41.26VBAの宿題スレでも立てて一人で問題だしてろ
0218デフォルトの名無しさん
2011/05/29(日) 21:43:16.97皆、そんな煽りに乗せられて答えるなよ。
答えたらつけ上がって、いつまでもくだらない問題もどきを投下してくる。
ここでまともな質問に回答している奴らが、このくらい難なく解けるのは皆解ってるから
一人くらい「おまえら解らないんだろ」とか勘違いして言ってくる奴が居ても放っておけってことで。
0219208
2011/05/29(日) 21:51:45.68sendmessageでそんな使い方もいけるんですね、ちょっと調べてみます。
>>212
後だしばかりになってしまいすみません、
リストは何パターンかあるのでリフレッシュできるのが望ましかったです。
お手数掛けました、ありがとうございます!
0220問題さん
2011/05/30(月) 02:33:09.84悪意はないんで少し弁解させてください・・・><
>>215
>何を読ませるか どういう計算で二次ペジェ曲線を表現するプログラムか
>何を考えさせるか 曲線間を1024等分した時のx,yの最初の増減値
>どう解かせるか すでに分かっているg,hの式の形から
いや別に俺は下手で構わないんだが・・
なんでそんなに上手アピールしてんぢょwwぴょwww
>>216
1レスで済むようなプロシージャがオナニーに見えるのかい?
>>218
そんなに答えないことに布石打たなくても大丈夫だぜww
数学知らなくてもプレゼンハムでググればお前でも分かるよ
くだらない問題に上のほうで嬉々として反応してたように見えるが・・
そんなに嫌なら誰か答えたら終わりにするぜ!
ってかこれはいろんな人に知ってほしい
俺は先週これ知った時感動したぜ
0221デフォルトの名無しさん
2011/05/30(月) 07:42:03.34>ってかこれはいろんな人に知ってほしい
チェーンメールならぬチェーン書き込み乙
ブログでも立てて独りでやれ
掲示板でやるな
0222デフォルトの名無しさん
2011/05/30(月) 07:52:52.92悪意が無くて弁解も終わったならとっとと消えるべきだな。
ここは質問スレであって出された問題に答えるスレではない。
自分で問題スレ作ってそこでやれば興味のある奴は来てくれるだろう。
もっともそんなオナニー問題出してる様ではすぐに過疎スレになってDat落ちするだろうけどな。
0223デフォルトの名無しさん
2011/05/30(月) 08:04:55.47この子、なんでこんな風になっちゃったんだろう?
余程ストレスやコンプレックスが強いのかな?
つーか215にも見当違いなこと答えてるし
単純に頭が悪いのかな?
0224デフォルトの名無しさん
2011/05/30(月) 08:18:24.75知能じゃなくて知性に欠けているな
0225デフォルトの名無しさん
2011/05/30(月) 08:23:02.29そもそも答えても返事がなかったもんな。
0226デフォルトの名無しさん
2011/05/30(月) 09:18:38.45「問題マン」って、、、、、問題抱えた男ですかw
それはそれで本質的には間違ってないんだが、それは周りが呼称する場合で
自ら名乗るなら、普通は「出題マン」とかだよな
0227デフォルトの名無しさん
2011/05/30(月) 10:22:18.68VBAというのはAuto_Open()ではなく、A1とA2の値が違った場合とか、
C1の値が変更された瞬間にマクロが作動して「値が変わりました」とかのダイアログが
表示されたりは出来ないのでしょうか?
自分でマクロを「実行」しなければいけないのでしょうか?
0228デフォルトの名無しさん
2011/05/30(月) 10:28:15.18ユーザー定義関数
イベント
好きな方を使って下さい
0229デフォルトの名無しさん
2011/05/30(月) 10:31:27.20A1、あるいはA2の値が変更された上でA1とA2の値が違う場合なら
Worksheet_Changeイベントで可能
変更された上ではなく、ブックを開いた時点で違いが有ればということなら
Auto_OpenやWorkbook_Openで確認すれば良い
> C1の値が変更された瞬間
Worksheet_Change
0230デフォルトの名無しさん
2011/05/30(月) 20:45:16.21てめえのスレじゃねーんだよカス
0231デフォルトの名無しさん
2011/05/30(月) 22:27:24.38『ファイル名を指定して実行』ダイアログを開き
PostMessage または SendMessageでフルパスを入力して
プログラムを実行しようとしていますが、
キーが送られません。(名前の欄に文字が送られません)
SendKeyではうまくいくのですが、
スクリーンロックを考えているので使えません。
何かいい方法があれば教えてください
0232デフォルトの名無しさん
2011/05/30(月) 23:24:21.95shell でやれば?
0233デフォルトの名無しさん
2011/05/31(火) 00:49:22.73.Cells(n, 2) = sh.Cells(i, "B")
.Cells(n, 3) = sh.Cells(i, "C")
.......AX欄まで続く
これをRangeでシンプルに書くとどうなるか、エスパーの方教えてください。
こんな風↓に考えたのですが、どうしても範囲が合わずエラーになってしまいます。
.Range("A" & n - x, "CQ" & n) = sh.Range("A2", "CQ" & x)
0234233
2011/05/31(火) 00:54:20.85正 ".......CQ欄まで続く"
0235問題マン
2011/05/31(火) 01:02:14.54あれ?おまいらあからさまな間違いにつっこまないとかあれ?
>>222
消えてほしい理由がわからんな〜
答えて楽しめばいいじゃない^^
それとわかる範囲の問題に嬉々として反応してくれる人がいるみたいだぜ〜?
あと俺スレ立てできない><
>>223
予想通りレスが予想通りwwwイライラすんなよww
ただベジェ曲線レベルの段階でこうなったのは実は想定外だったぜ><
>>226
つっこむとこそこかよww
>>230
遅いぜー 今言っても説得力が・・
〜おまいらでもすぐわかるサービス問題〜
???に入るできるだけ短い式を答えなさい
sub チンチロリン(s1,s2,s3)
if ??? then Msgbox "5です(ゾロ目じゃないぞ)"
End sub
0236デフォルトの名無しさん
2011/05/31(火) 01:16:21.60sh.Range("A" & i & ":CQ" & i).Copy (.Cells(n, 1))
0237デフォルトの名無しさん
2011/05/31(火) 06:29:38.20>消えてほしい理由がわからんな〜
スレチな上にいつも問題が面白くない。
そっちこそVB6スレでもコマンドボックスとか_clicとかわけ分からない事かいて
フルボッコにされて追い出されたからって、
このスレに必死にしがみ付いている理由が分からないんだけども。
0238233
2011/05/31(火) 06:59:54.24ありがとうございます!
0239デフォルトの名無しさん
2011/05/31(火) 07:55:10.810240デフォルトの名無しさん
2011/05/31(火) 23:53:03.85ほらよ。
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hParent As Long, ByVal hChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Sub hoge() 'Win7
Dim h As Long, i As Long, com As String
com = "c:\hoge\hogehoge"
Shell "rundll32 shell32.dll,#61"
h = FindWindowEx(0&, 0&, "#32770", "ファイル名を指定して実行")
h = FindWindowEx(h, 0&, "ComboBox", vbNullString)
h = FindWindowEx(h, 0&, "Edit", vbNullString)
For i = 1 To Len(com): SendMessage h, &H286, Asc(Mid$(com, i&, 1&)), 0&: Next
End Sub
でも何でShellとかShellExecuteでやらないの?
0241大門さん
2011/06/02(木) 00:30:18.23判定できるマクロを作りたいのですが
どうしたらいいでしょうか?
0242233
2011/06/02(木) 00:49:18.50ブックの"password"をマクロで入力し開くにはどうしたらよいか教えてください。
Dim fn, wb, myPath
myPath = ThisWorkbook.Path & "\"
fn = Dir(myPath & "*.xls")
Set wb = Workbooks.Open(myPath & fn)
' ↓こんな感じかと考えながらもうまく動作しないです。。
Workbooks.Open Filename:=wb, Password:="password"
0243問題マン
2011/06/02(木) 03:21:24.09>>237
その人をよく知らないんだがたぶん
引数がランダムになるとか重複なし抽出のほうが速いとか言ってる人じゃね?
>>239
ありがとうございます^^
>>242
これはここの人は厳しいから教えてもらえないんじゃね?
答え見た悪意ある人がマクロから虱潰しでパス突破しようとするかも
0244デフォルトの名無しさん
2011/06/02(木) 08:00:04.64Dim fn as String, myPath as String
Dim wb as Workbook
myPath = ThisWorkbook.Path & "\"
fn = Dir(myPath & "*.xls")
Set wb = Workbooks.Open(FileName:=myPath & fn, Password:="password")
0245233
2011/06/02(木) 18:30:37.98ありがとうございます!
m(_ _)m
0246デフォルトの名無しさん
2011/06/02(木) 21:10:25.53検索する文字列が1行の場合
http://www.moug.net/tech/exvba/0090008.htm
ここに書いてある内容でできたのですが、例えば2行
犬
猫
のように入力して2種類検索したい場合どのようにすればよいでしょうか?
よろしくお願いします。
0247デフォルトの名無しさん
2011/06/02(木) 21:41:54.032種類の文字列での検索がしたければ、既存の検索機能を2回まわすか
自前で検索機能を作るかだな
俺は正規表現で検索できるものを自作して使ってる
「2つの文字列」ではなく「2つの文字」なら、正規表現ではなくLike演算子でも可能
0248デフォルトの名無しさん
2011/06/02(木) 22:40:01.750249デフォルトの名無しさん
2011/06/02(木) 22:40:34.68スキルの低い回答者お断り
0250デフォルトの名無しさん
2011/06/03(金) 00:19:50.690251デフォルトの名無しさん
2011/06/03(金) 00:56:21.850252問題マン
2011/06/03(金) 09:10:26.52ググったらパスつきマクロの破り方まで簡単に出てきたわ・・
>>249
煽ってる暇あったらスキルの高い回答を書くんだチンカス!
0253デフォルトの名無しさん
2011/06/03(金) 09:29:25.550254246
2011/06/03(金) 13:33:56.75しかし、どの本もそうですがやりたいと思った事が書いてない
ということがほとんどな気がします。
ネットが便利すぎるだけかもしれませんが
皆さんの書いたコード見てると凄いなーと感心しっきりです。
0255 忍法帖【Lv=1,xxxP】
2011/06/03(金) 20:00:22.46Selection.Replace What:="1", Replacement:="99"
"99"の部分を別シートのA1の値にすることはできますか?
環境はエクセル2000です
0256デフォルトの名無しさん
2011/06/03(金) 21:28:55.20Replacement:=Worksheets("Sheet2").Range("A1").Value
0257ninja
2011/06/03(金) 22:26:17.24ありがとうございます
0258デフォルトの名無しさん
2011/06/04(土) 10:28:39.89VBAでは可能でしょうか?
0259デフォルトの名無しさん
2011/06/04(土) 11:43:05.15VBAでもWin32API使えば周波数は変えられる
0260デフォルトの名無しさん
2011/06/04(土) 22:26:44.82そのような関数orマクロはないでしょうか?
例えば、A1セルの値が
100→130→180→150→120
と変化した場合、180の値をどこかのセルで表示させたいのです。
宜しくお願い致します。
0261デフォルトの名無しさん
2011/06/04(土) 22:30:45.08比較して大きければそれを保存しておくとか
0262デフォルトの名無しさん
2011/06/05(日) 08:23:13.97第一引数にこの数式の入ったセル位置を、第二引数に対象のセル位置を設定して、
標準モジュールに以下の関数を書いて、ユーザー定義関数として使うわさ。
Option Explicit
Function hoge(IN_KeepValueCell As Range, IN_vValue As Variant) As Variant
Static vMaxValue As Variant
Static bFirstFlg As Boolean
つづく
0263デフォルトの名無しさん
2011/06/05(日) 08:33:49.82If IN_KeepValueCell.Count <> 1 Then
hoge = "複数セルは選んで欲しくないべさ"
Exit Function
End If
If Not bFirstFlg Then
vMaxValue = IN_KeepValueCell.Value
bFirstFlg = True
End If
If IN_vValue <> vbNullString Then
If IsNumeric(IN_vValue) And IN_vValue > vMaxValue Then vMaxValue = IN_vValue
Else
vMaxValue = 0
End If
hoge = vMaxValue
End Function
だれか循環参照対応コテ入れして・・・orz
0264デフォルトの名無しさん
2011/06/05(日) 16:38:47.560265デフォルトの名無しさん
2011/06/05(日) 16:46:44.84FileLenかFileSystemObjectの.Sizeプロパティでブックのサイズ取得してループで回す
指定のサイズ以下なら削除
0266デフォルトの名無しさん
2011/06/05(日) 17:22:18.47ありがとうございました
0267デフォルトの名無しさん
2011/06/06(月) 18:12:23.01というマクロですが、以下で良いでしょうか?
一応自分の環境では動いていますが…時々矢印の表示が残ることがあります
Sub Comment_Add_Clear()
If ActiveCell.Comment Is Nothing Then
ActiveCell.AddComment ""
ActiveCell.Comment.Visible = True
Else
ActiveCell.ClearComments
End If
End Sub
0268デフォルトの名無しさん
2011/06/06(月) 20:00:11.35配列(300,2)に格納して別シートにコピーしたりなどで
扱おうと思ってるのですが
これって配列の使い方としてまちがってますか?
なんとなく大量のデータを記憶させておくのってよろしく
ないのかな?と思ってしまいます。
0269デフォルトの名無しさん
2011/06/06(月) 20:32:56.17「など」じゃわからんよ
もっと具体的に、何と何をやりたいのか
シートから別のシートにコピーするだけならCopyメソッドの方が簡単だし
0270デフォルトの名無しさん
2011/06/06(月) 22:18:12.38値だけのコピーなら、配列を介さず
コピー先範囲.Value = コピー元範囲.Value
で事足りる
0271デフォルトの名無しさん
2011/06/06(月) 22:57:16.01フォーマットの違う他シート2、シート3に
それぞれシート1からコピーしようとしたときに
配列使った方が便利なのかな?と思いました。
300行2列程度なら>>269さんのやり方がベストなのでしょうか?
いまいち配列のいきる使い方がわからないです。
0272デフォルトの名無しさん
2011/06/06(月) 23:04:45.88コピー先範囲.Value = コピー元範囲.Value
この方式でした。
0273デフォルトの名無しさん
2011/06/06(月) 23:10:36.43言ってることがよくわかんない。
何で無理して配列使わなきゃならんかな。
配列の使い方を勉強したくてその過程で出て来た問題なのか、
その問題に当たったから配列使えば解決出来そうと思ったのか、どっちなんだ?
0274デフォルトの名無しさん
2011/06/06(月) 23:31:04.50まあ小学校卒業してから
また質問すればいいんじゃないか?
実際に使うわけじゃないだろ?
暇があるっていっても、
みんなお前よりは忙しいんだからさ
自重しろハゲ
0275デフォルトの名無しさん
2011/06/06(月) 23:56:40.27基本思考はあってる。
でもそれ実装した奴はそんなもん当たり前のレベルで知ってる。
なので好きにしろ。
0276デフォルトの名無しさん
2011/06/07(火) 05:47:24.61それって配列を介してるじゃん。
コピー元範囲.Valueは2次元配列だ。
0277デフォルトの名無しさん
2011/06/07(火) 06:46:40.320278デフォルトの名無しさん
2011/06/07(火) 07:09:28.89とんでもなく遅いとかとんでもなく速いとかでなければ中身がどうだろうと関係ないわけ
で、なんで配列に拘るのか?
0279問題マン
2011/06/07(火) 08:11:30.110280デフォルトの名無しさん
2011/06/07(火) 08:14:15.84輪にならないようになるべく少なく○を置いて全ての●と繋げるにはどうすればいいでしょうか?
あと試す度に違う結果になるようにしたいです。><
0281デフォルトの名無しさん
2011/06/07(火) 08:43:18.19嘘書くんじゃねーよ。
まさしく問題マンだなw
0282デフォルトの名無しさん
2011/06/07(火) 09:15:23.380283デフォルトの名無しさん
2011/06/07(火) 09:47:15.68手作業で
0284デフォルトの名無しさん
2011/06/07(火) 11:00:11.15スレ違い
0285デフォルトの名無しさん
2011/06/07(火) 12:24:21.340286デフォルトの名無しさん
2011/06/07(火) 14:40:08.93無駄なコードがないって意味では?
俺なら
配列 = 元範囲
配列を回して書式やデータちぇっく
新範囲=配列
ってするけど
0287デフォルトの名無しさん
2011/06/07(火) 15:02:14.43Sub 色によって判別()
Dim 行 As Long
For 行 = 27 To 120
If Cells(行, 122).Interior.ColorIndex = 47 Then'これが赤色のとき
Cells(行, 247).Value = 5
If Cells(行, 122).Interior.ColorIndex = 44 Then'これが黄緑色のとき
Cells(行, 247).Value = 1
Else
Cells(行, 247).Value = 0
End If
End If
Next 行
End Sub
列DR27〜120の色によって、それぞれの行IMの数字を変えたく、
上記のマクロを製作したのですが、最初のIFの条件(赤色の時)は上手く良くのですが、
2番目のIFの条件(黄緑色の時)が反映されず困っています。修正点等宜しくお願いします。
OS=windowsXP EXCEL=2000 です。
0288デフォルトの名無しさん
2011/06/07(火) 15:10:27.21Sub 色によって判別()
Dim 行 As Long
For 行 = 27 To 120
If Cells(行, "DR").Interior.ColorIndex = 47 Then 'これが赤色のとき
Cells(行, "IM").Value = 5
Else
If Cells(行, "DR").Interior.ColorIndex = 44 Then 'これが黄緑色のとき
Cells(行, "IM").Value = 1
Else
Cells(行, "IM").Value = 0
End If
End If
Next 行
End Sub
0289デフォルトの名無しさん
2011/06/07(火) 15:18:58.78いくつも場合分けする時はSelectを使った方がいいよ
Sub 色によって判別()
For 行 = 27 To 120
Select Case Cells(行, "DR").Interior.ColorIndex
Case 47 'これが赤色のとき
Cells(行, "IM").Value = 5
Case 44 'これが黄緑色のとき
Cells(行, "IM").Value = 1
Case Else 'その他
Cells(行, "IM").Value = 0
End Select
Next 行
End Sub
0290デフォルトの名無しさん
2011/06/07(火) 15:27:34.37冗談はやめましょう。
0291デフォルトの名無しさん
2011/06/07(火) 17:03:10.27>>288
>>289
お二人とも本当に有難うございます!
問題解決しました!
わざわざコードまで教えていただき感激です。
]>>289
そんなやり方があったとは知りませんでした。
重ねて有難うございます!活用します!
0292デフォルトの名無しさん
2011/06/07(火) 20:07:11.590293デフォルトの名無しさん
2011/06/07(火) 21:29:11.78call 処理
end sub
というプロシージャが
txtbox2、txtbox3・・・・
と10個程度続く場合、ひとつの
プロシージャにまとめることはできませんか?
txtbox1から10のいずれかがChangeで
call 処理
というような。
0294デフォルトの名無しさん
2011/06/07(火) 22:11:53.16WithEventsでぐぐれ
0295問題マン
2011/06/07(火) 22:47:35.04>>287
IfでやるならInterior.ColorIndexを何度も参照しないように
いったん変数に入れたほうが無駄がないぜ!
>>293
新しくClass1を挿入
Public WithEvents mytx As MSForms.TextBox
Public Sub init(a)
Set mytx = a
End Sub
Private Sub mytx_Change()
処理
End Sub
グローバルにインスタンス作成
Dim myclass(10) As New Class1
以下を作動させる(名前違ったら適当に変えてね)
For a = 1 To 10
Call myclass(a).init(Sheet1.OLEObjects("TextBox" & a).Object)
Next
で試したら最初はうまくいったけどいじってたら効かなくなったぜ!
変数myclassを保持してる間だけ有効
テキストボックスごとに処理を変えるならMe.mytx.Nameを処理に渡して分岐させれ
0296デフォルトの名無しさん
2011/06/07(火) 22:51:16.71やはりクラスモジュールを使用するのですか。
検索して勉強しても
いまいちクラスが理解できないんですよね。
0297デフォルトの名無しさん
2011/06/08(水) 00:51:32.59定義エラーでまくり
0298デフォルトの名無しさん
2011/06/08(水) 14:11:51.75ヒントが出れば、答え探してきて、コピペ回答するくらいはできるんだな
0299デフォルトの名無しさん
2011/06/08(水) 16:41:04.83ボタン押す→図出現→適当なセルに文字入力→図に反映
って難易度的にはどのぐらい?
0300デフォルトの名無しさん
2011/06/08(水) 18:51:41.240301デフォルトの名無しさん
2011/06/08(水) 18:52:39.541は変数が理解できるレベル
0302デフォルトの名無しさん
2011/06/08(水) 19:51:41.905はどれくらいのレベルなのさ?
0303デフォルトの名無しさん
2011/06/08(水) 20:36:44.94タッチタイピングできる
0304デフォルトの名無しさん
2011/06/08(水) 20:55:39.250305デフォルトの名無しさん
2011/06/08(水) 22:32:33.140306デフォルトの名無しさん
2011/06/08(水) 22:37:13.37"2011/06/08"のようにダブルクォーテーション付きとなってしまいます。
2011/06/08のようにダブルクォーテーション無しで出力するには
どうすればよいのでしょうか?
0307デフォルトの名無しさん
2011/06/09(木) 00:53:06.24直接CSV形式でやる方法はない
VBAでコンマ区切りの文字列を自分で作ってテキストファイルに出力するしかない
0308デフォルトの名無しさん
2011/06/09(木) 01:16:45.19フォーム入力とか、抽出、転記はかけるようになってきた。
発展というか、入門書より、実用的な本でおすすめありますか?
経験上、やはり、ネット検索より、本のほうが理解しやすいみたいです。
0309問題マン
2011/06/09(木) 04:11:04.42>>280
これのマップ生成で使ってるぜ
ttp://www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=236&file=ttt.zip
>>296
エクセル2030ごろには同コントロール共用イベント→個別イベント
って流れになってるから大丈夫だぜ!
>>297
昔このスレの人がVBAのクラスは糞だから使わないほうがいいって言ってたぜ!
>>298
そうかwwwコピペに見えたかwwwww
>>299
ノンマクロでもけっこうなもん作れるから中級だぜ!
>>306
>>307だな
フォーマットを理解すればどんなファイルでもOPENステートメント使って自力で出力可能だぜ!
>>308
これに答えると宣伝乙っていわれるぜ!
Excel VBA アクションゲーム作成入門
0310デフォルトの名無しさん
2011/06/09(木) 17:53:05.76Public Function myFunc()
If 秒数セルが0 Then
Application.OnTime Now + TimeValue("00:00:01"), myFunc, False
Else
秒数セル -1
処理
→ Application.OnTime Now + TimeValue("00:00:01"), myFunc
End If
End Function
エラー発生個所は矢印のところです。
OS=windowsVista EXCEL=2007です。
0311デフォルトの名無しさん
2011/06/09(木) 17:59:50.020312デフォルトの名無しさん
2011/06/10(金) 07:42:52.290313デフォルトの名無しさん
2011/06/10(金) 23:02:03.02コードが長くて書けないのですが、EXCELのバグではないか?
という局面に直面しています。次の手順をVBAで踏むと
�@シートAで複数のセルをセレクトコピーして、別のシートBへ貼り付けます。
�A次に、シートBで複数のセルをセレクトコピーして、シートAへ貼り付けます。
�@は問題ないのですが�Aの際、どういうわけか�@でコピーされた内容
(シートAのセルデータ)が貼り付けられてしまうのです。
Application.CutCopyMode = False Copy も使用しています。
EXCE2000でです。宜しくお願いします。
0314デフォルトの名無しさん
2011/06/10(金) 23:05:22.310315313
2011/06/10(金) 23:09:21.10すいません。
全然違う単純ミスでした。
すいません!
0316デフォルトの名無しさん
2011/06/10(金) 23:13:24.220317デフォルトの名無しさん
2011/06/10(金) 23:34:26.53疑いたくなることあるけどw
0318問題マン
2011/06/11(土) 02:50:56.99>>310
他サイトだとどう解決したか書いてけ!って怒られたりするぜ
2chだからどーでもいいけど
>>312
後付けで問題禁止とかファビョり出した人のことかい?
触れないであげようぜ・・忘れたい過去みたいだからさ・・
>>317
俺なんか自動保存をバグだと思ってたぜ!
0319デフォルトの名無しさん
2011/06/11(土) 05:59:50.15Dim v (1 to 10, 1 to 10) As Variant
v の後の(1 to 10, 1 to 10)の意味がわかりません。
詳しい方教えてください。お願いします。
0320デフォルトの名無しさん
2011/06/11(土) 06:29:32.78(1 to 10) なら以下のような入れ物を用意するということ
□□□□□□□□□□
(1 to 10, 1 to 10)ならこんな感じ
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
0321デフォルトの名無しさん
2011/06/11(土) 10:30:57.94配列か何かにジャンプテーブルを作って、それでテーブルジャンプをしたいんだけどって言う質問で、
スレチだからダメって言われたけど、何かVBAで普通に簡単に出来たわさ。
標準モジュール側
Sub hoge()
Dim sJmpTbl(2) As String
Dim ocls1 As New cls1
Dim vMtdNm As Variant
sJmpTbl(0) = "hoge1"
sJmpTbl(1) = "hoge2"
sJmpTbl(2) = "hoge3"
For Each vMtdNm In sJmpTbl
Call CallByName(ocls1, vMtdNm, VbMethod)
Next
End Sub
クラスモジュール側(クラス名:cls1)
Sub hoge1()
Call MsgBox("hoge1が呼ばれました")
End Sub
Sub hoge2()
Call MsgBox("hoge2が呼ばれました")
End Sub
Sub hoge3()
Call MsgBox("hoge3が呼ばれました")
End Sub
かなり端折って書いたけど、こんな感じで片付いたわさ。
0322デフォルトの名無しさん
2011/06/11(土) 10:32:06.55メモリ上にその値を確保すんだよ
0323デフォルトの名無しさん
2011/06/11(土) 10:38:07.350324デフォルトの名無しさん
2011/06/11(土) 10:40:11.65それに値を確保するってどういう事?
俺には領域を確保している様にしか見えないんだけど。
0325デフォルトの名無しさん
2011/06/11(土) 10:41:39.40>メモリ上にその値を確保すんだよ
その値ってどの値なんだよ (w
0326デフォルトの名無しさん
2011/06/11(土) 11:01:18.66その値って言えばほら、そこにあるその値の事だろ
w
0327デフォルトの名無しさん
2011/06/11(土) 11:42:59.08>>320
ありがとうございます。すごくわかりやすかったです。
ちなみに >>321 の
Dim sJmpTbl(2) As String
(2)はどのようなことをさすのでしょうか?
stringが文字列型なので2文字分の入れ物を確保?ってことでいいのでしょうか。
0329デフォルトの名無しさん
2011/06/11(土) 12:06:14.85http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1036835140
0330デフォルトの名無しさん
2011/06/11(土) 12:15:56.07>>328
ありがとうございます。
327 での2文字分の表示は As string * 2 と何か違う点がありますか?
0331デフォルトの名無しさん
2011/06/11(土) 13:52:38.700332デフォルトの名無しさん
2011/06/11(土) 17:53:45.250333デフォルトの名無しさん
2011/06/11(土) 21:07:39.82頼みますだれか 327 の(2)について教えてください。
お願いします。
0334 忍法帖【Lv=1,xxxP】
2011/06/11(土) 21:20:36.35Dim Move As Chart
For Each Move In Charts
Move.IncrementTop 50#
Next Move
メソッドまたはデータメンバが見つかりません。とエラーが出ます。
0335デフォルトの名無しさん
2011/06/11(土) 21:28:24.070336デフォルトの名無しさん
2011/06/11(土) 21:28:30.56>頼みますだれか 327 の(2)について教えてください。
>>319-320 見てもわからないってこと?
あと option base でぐぐっておけば幸せになれるかもしれない。
0337デフォルトの名無しさん
2011/06/11(土) 21:29:55.18まさか釣りや煽りの類じゃないだろうな?
_______ __
// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
______________ __
|vba 配列 .| |検索|←をクリック!!
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄
◎ウェブ全体 〇日本語のページ
0339デフォルトの名無しさん
2011/06/12(日) 16:50:56.280340デフォルトの名無しさん
2011/06/12(日) 17:52:54.53ボタンを押したときテキストをexcelで読み込み、
線を引いて2箇所ソートを掛けて保存をするものを作りました。
ここで問題なのですが、テキストを読み込んで線を引いて、ソートもOK
で保存もちゃんとできたものは作れました。
ですが、ソートをするときに
ActiveSheet.Range("A2:W500")
.sort key1:O列昇順
key2:G列昇順
この記述を入れているせいで、保存が終了した際にexcelがプロセスに残ってしまっており
2回目の処理を行う際にエラーがおきてしまいます。
プロセスを終了しないとどんどん溜まっていきます。。。
シートにはいくつかデータがあるので、2箇所だけソートを掛けるとほかの
データはソートがかからないので、データがある範囲を指定しています。
何かほかの記述方法はありますか?
宜しくお願いいたします。
0341デフォルトの名無しさん
2011/06/12(日) 19:37:25.23プロセスに残るって言うことは他の何らかしらからEXCELを操作してるんだよね。
そこで使ってるObjectの設定にもよるだろうから何とも言えないけど、
とりあえずこんなページ見付けたんで参考に。
http://homepage1.nifty.com/rucio/main/technique/teq_15.htm
0342デフォルトの名無しさん
2011/06/12(日) 19:39:46.56ありがとうございます。
明日会社で試したいと思います。
もしわからなかったら、コードを記述させて頂きますので
どなたか宜しくお願いします・・・
0343デフォルトの名無しさん
2011/06/12(日) 21:35:20.56setステートメントでワークブックを掴んだら、参照をきちんと解放しろ
どのオブジェクトでも同じだ
set myWorkbook As Workbook
(略)
set myWorkbook = Nothing
0344デフォルトの名無しさん
2011/06/12(日) 22:03:48.19>set myWorkbook As Workbook
Dim じゃねーのか?
0345デフォルトの名無しさん
2011/06/12(日) 22:15:40.44すまんCreateObjectのから消したからミスった
0346デフォルトの名無しさん
2011/06/12(日) 23:21:25.50これは、どのオブジェクトでも同じだ
もちろん「変数スコープが外れた時点で」なので、モジュールレベルでオブジェクト変数を宣言している場合は
処理を終えても(プロシージャを抜けても)参照は保持されたままなので、解放したければNothing代入する必要があるが
プロシージャレベルでの宣言なら処理を終えたら(プロシージャを抜けたら)、Nothing代入を記述しなくても、
自動的にNothing代入と同じ処理が入る
問題なのは「参照」ではなく「プロセス」の方で、主にActiveX.dllではなくActiveX.exeの場合に起こる
これらはQuit、Exit、Close、Terminateなどの終了や閉じる系のメソッドを実行してやらないと
参照は解放されているのにプロセスが残るという事態が起きる
この問題は、Nothing代入して参照をきちんと解放したところで解決しないどころか
Nothing代入しちゃうと、当然ながらQuitもCloseも出来なくなっちゃうので、そんな無駄な解放処理やるまえに
きちんと終了処理を行わないとダメだ
0347デフォルトの名無しさん
2011/06/12(日) 23:41:57.11Excelに限定される話じゃないけど、暗黙で生成されたオブジェクトを掴んだ場合、
明示的に解放する手段なくない?
0348デフォルトの名無しさん
2011/06/13(月) 04:11:44.87言ってるじゃないですかァーッ
0349デフォルトの名無しさん
2011/06/13(月) 05:21:59.770350デフォルトの名無しさん
2011/06/13(月) 07:37:47.000351リアル問題マソ
2011/06/13(月) 08:17:04.290352デフォルトの名無しさん
2011/06/13(月) 09:19:31.440353デフォルトの名無しさん
2011/06/13(月) 13:39:31.81Shapes.Characters.Text
>>350
2007だとオートシェイプ関係は記録できないことがある
0354デフォルトの名無しさん
2011/06/13(月) 15:02:10.11それが正解。
基本的にスコープが切れた所で開放されるけど、
場合によってゴミが残ってメモリリークが発生する事がある。
0355デフォルトの名無しさん
2011/06/13(月) 15:04:35.60終了
0356デフォルトの名無しさん
2011/06/13(月) 16:02:26.180357デフォルトの名無しさん
2011/06/13(月) 16:04:51.82ねーよ
0358デフォルトの名無しさん
2011/06/13(月) 16:25:19.59プロはわざと冗長に書くことがある。
アマチュアは無駄なことは書かずに最短距離でいきましょう。
ExcelのVBEのプロシージャレベルのRange型とかWorksheet型なんて100%書く必要はない。
0359デフォルトの名無しさん
2011/06/13(月) 18:24:59.12セレクトセルが移動していっても、
元をたどれると便利なので、
セルアドレス = Selection.Address()
Range("セルアドレス").Select
とよくやって元を辿るのですが、
Range("セルアドレス").Select
の部分で理由は分からないのですがエラー(デバック)になって、
これを使えない時があります。
何かルールがあるのでしょうか?
EXCE2000 WindowXPです。
0360359です。例えば・・・
2011/06/13(月) 18:32:53.35If ActiveCell.Offset(0, -1).Range("A1").Value = "250" Then
セルアドレスA = Selection.Address()
ActiveCell.Offset(0, -23).Range("CX1").Select 'ActiveCell.Offset(0, -23)で一番左端の列Aに移動。CXは両建判別列
Select Case Selection.Value
Case 1
Range(セルアドレスA).Select
ActiveCell.Offset(0, -23).Range("W3:DH3").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Range(セルアドレスA).Select
Application.Run "売りに買いで両建2回トレードに変更"
↓が選択され次のマクロに移り================
Sub 売りに買いで両建2回トレードに変更()
セルアドレス = Selection.Address()
Worksheets("倉庫").Select
Range("DT33:DW53").Value = ""
Worksheets("損益").Select
Range("セルアドレス").Select ←ここでエラーになってしまいます!
0361デフォルトの名無しさん
2011/06/13(月) 19:04:14.02セルアドレスの中身見てみ
原因がわかるよ
0362デフォルトの名無しさん
2011/06/13(月) 19:06:14.89なにか問題起こされると困るし
かといっていちいち細かく説明するのも面倒だから
とりあえずやっとけって言うやつが諸悪の根源
0363359です。例えば・・・
2011/06/13(月) 19:14:57.33分かりました!有難うございます!
元々選択されているのに再度選択していました!
0364デフォルトの名無しさん
2011/06/13(月) 19:27:36.15とりあえずNothingは付けておいた方がいい。
開放されるのが分かってて付けないなら構わないが。
0365デフォルトの名無しさん
2011/06/13(月) 19:34:14.17お前がもっと勉強しろ
0366デフォルトの名無しさん
2011/06/13(月) 19:40:50.830367デフォルトの名無しさん
2011/06/13(月) 19:42:00.95本当にそれが問題か?
0368359です。例えば・・・
2011/06/13(月) 19:47:15.68すいません。考えたのですが分からないのです。
教えてください。
0369デフォルトの名無しさん
2011/06/13(月) 19:57:52.07Range("セルアドレス").Select
Range("セルアドレス).Select
0370デフォルトの名無しさん
2011/06/13(月) 19:59:00.15Range("セルアドレス).Select
Range(セルアドレス).Select
0371デフォルトの名無しさん
2011/06/13(月) 20:19:34.02まだ分からないのか。
開放されない事象が有るから言ってるんだ。
人に勉強とやかく言う前に本当にそういう事象が無いのか確認してから言ってくれ。
それが出来ないなら迂闊にないなんて言わない方がいいし、
人に勉強しろなんて言うのはもっての他だ。
0372デフォルトの名無しさん
2011/06/13(月) 20:34:56.40まあまあ、そんなに怒ることでもないわさ。
私も一つ知ってるけど、言うと荒れそうだから黙ってるわさ。
0373デフォルトの名無しさん
2011/06/13(月) 20:49:42.27これって不可能じゃないかな?
発生する事象をだしてもらえれば話が早いのに…
0374デフォルトの名無しさん
2011/06/13(月) 20:50:31.43>>372
だからないって
0375デフォルトの名無しさん
2011/06/13(月) 20:51:24.10悪魔の証明
0376デフォルトの名無しさん
2011/06/13(月) 20:56:18.90別にしらねぇならそれでいいじゃないの。死ぬわけでもなし
0377デフォルトの名無しさん
2011/06/13(月) 21:01:37.770378デフォルトの名無しさん
2011/06/13(月) 21:04:04.74再現可能なら荒れないよ
今は「ある」「ない」の水掛け論だから荒れてんの
0379デフォルトの名無しさん
2011/06/13(月) 21:07:47.840380デフォルトの名無しさん
2011/06/13(月) 21:10:04.44常識でも何でもないと思うが。
ならばNotingを付けるのも常識だろう。
0381デフォルトの名無しさん
2011/06/13(月) 21:11:58.65Nothingつけただけじゃメモリリークする
馬鹿は黙ってろ
0382デフォルトの名無しさん
2011/06/13(月) 21:13:58.87> 場合によってゴミが残ってメモリリークが発生する事がある。
> 基本的にスコープが切れた所で開放されるけど、
> 場合によってゴミが残ってメモリリークが発生する事がある。
> 基本的にスコープが切れた所で開放されるけど、
> 場合によってゴミが残ってメモリリークが発生する事がある。
0383デフォルトの名無しさん
2011/06/13(月) 21:14:11.42'エクセル起動
Set a_xls = New Excel.Application
With a_xls.Application
.Workbooks.OpenText _
〜省略〜
FieldInfo:=Array( _
Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2))
ActiveSheet.Range("A2:W500") _
.Sort Key1:=Range("O2"), order1:=xlAscending, _
Key2:=Range("G2"), order2:=xlAscending
End With
.ActiveWorkbook.SaveAs FileName:= _
Replace(strFileNm, ".txt", ".xls"), FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End With
a_xls.Quit
Set a_xls = Nothing
こう書いているのですが、ソートを掛けるところを記述すると
excelが終了せずプロセスに残ったままになってしまいます。
何か書き方などアドバイスいただけませんか。お願いします
0384デフォルトの名無しさん
2011/06/13(月) 21:21:45.38なら俺が説明しても理解出来ないかも知れないな。
0385デフォルトの名無しさん
2011/06/13(月) 21:27:44.33厳しい世界…なんだ、な
0386デフォルトの名無しさん
2011/06/13(月) 21:31:38.96> ならばNotingを付けるのも常識だろう。
> 常識でも何でもないと思うが。
> ならばNotingを付けるのも常識だろう。
> 常識でも何でもないと思うが。
> ならばNotingを付けるのも常識だろう。
0388デフォルトの名無しさん
2011/06/13(月) 21:39:07.64はずかしい><
0389デフォルトの名無しさん
2011/06/13(月) 21:43:46.71オブジェクトは変数に参照を設定することで使用できるようになる。
変数のメモリアドレスにオブジェクトへ参照アドレスが確保され、
処理の際に変数→メモリ→オブジェクトの呼び出しが行われる。
呼び出されたオブジェクトの実体は、利用しなくなったらシステム側が回収
(おかしな挙動しないようにしまっちゃう)する。
変数にNothingをセットすると、変数の持つメモリアドレスが無しに書き換える。
これにより、変数へのアクセスにより、不要なオブジェクトの呼び出しが無くなる。
つまり、変数の持つメモリアドレスをクリアし、オブジェクト召還を変数から出来なくするが、
実体の回収を保証するものではない。
0390デフォルトの名無しさん
2011/06/13(月) 21:44:59.10初心者なのだけど、
Excel VBA で書いたプログラムの拡張子は、どんな文字なのかオセーテ!
0391デフォルトの名無しさん
2011/06/13(月) 21:44:59.80>Set a_xls = New Excel.Application
新しいブックオープンするんじゃダメなん?
0392デフォルトの名無しさん
2011/06/13(月) 21:47:29.79えくすぽーとしてみたまえ
0393デフォルトの名無しさん
2011/06/13(月) 21:48:41.52.vba
0395デフォルトの名無しさん
2011/06/13(月) 21:51:37.82IDも見れないのと思ったがここ出ないんだった
とりあえず内容みような、言ってること違うから、多分
0396デフォルトの名無しさん
2011/06/13(月) 21:54:17.6015分待ってやるよ
0397デフォルトの名無しさん
2011/06/13(月) 21:55:30.550398デフォルトの名無しさん
2011/06/13(月) 21:58:28.51ここまで>>386-388みたいに煮えくり返っている奴に説明するのも馬鹿馬鹿しいな。
人の話を聞かないで決めつける時点でプログラマとしての素質が無いと分かってる奴に説明するのも何だしな。
こう言う奴は結局自分で適当に調べて間違った事をずっとそのまま覚えているんだろうな。
お前みたいに失礼な奴に教えるとでも思っているのか?土下座して出直せ。
0399デフォルトの名無しさん
2011/06/13(月) 21:58:52.31Thanks a lot!
0400デフォルトの名無しさん
2011/06/13(月) 22:00:36.88Nothingつけただけじゃメモリリークする
馬鹿は黙ってろ
0401デフォルトの名無しさん
2011/06/13(月) 22:04:09.61前に質問していてその内容が340にあるんですが、
ブックだけを開いてテキストの読み込みは可能ですか。
どうもソートかけるてるところをコメントアウトすると
正常に終了するので、どうしたもんかと試行錯誤しているんですが
よくわからない状態です・・・
0402デフォルトの名無しさん
2011/06/13(月) 22:06:54.83これでお前はまたひとつ勉強する機会を失った訳だ。
そうやって底辺PGとしてそのまま這いつくばっていればいいさw
0403デフォルトの名無しさん
2011/06/13(月) 22:08:31.69Nothingつけただけじゃメモリリークする
馬鹿は黙ってろ
0404デフォルトの名無しさん
2011/06/13(月) 22:11:04.46>ブックだけを開いてテキストの読み込みは可能ですか。
vbaだから、基本的になんでもありだと
ただ、この一文だけじゃなんのことだか?
0405デフォルトの名無しさん
2011/06/13(月) 22:13:13.300406デフォルトの名無しさん
2011/06/13(月) 22:16:10.22そうだとすると、私が知ってるのと同じかも知れないわさ。
0407デフォルトの名無しさん
2011/06/13(月) 22:19:32.110408デフォルトの名無しさん
2011/06/13(月) 22:20:35.94自分のWorkbooksのOpenTextを使えば済む話じゃないのか?
何か妙な勘違いをしている気がする。
0409デフォルトの名無しさん
2011/06/13(月) 22:21:03.60でNothingしないとメモリリークする例は出たか?
0410デフォルトの名無しさん
2011/06/13(月) 22:22:16.09ですね、すいません。
と言うか、なんで
ActiveSheet.Range("A2:W500") _
.Sort Key1:=Range("O2"), order1:=xlAscending, _
Key2:=Range("G2"), order2:=xlAscending
End With
ここだけで、プロセスが残ってしまうのが良くわからないんですよね・・・
0411デフォルトの名無しさん
2011/06/13(月) 22:47:16.97sortは環境によっては、おかしくなることがあるみたい
知らないで書くけど、
最後のquitはcloseじゃダメなん。
0412デフォルトの名無しさん
2011/06/13(月) 22:57:25.980413デフォルトの名無しさん
2011/06/13(月) 23:02:21.95長年の経験と勘
単に外部プロセスやOSがキャッシュとして保持している場合があるから難しい
0414デフォルトの名無しさん
2011/06/13(月) 23:12:31.570415デフォルトの名無しさん
2011/06/13(月) 23:17:34.070416デフォルトの名無しさん
2011/06/13(月) 23:26:17.84なるほど、どうなんだろう
今は家だからできないんだけど試してみるかな・・・
0417デフォルトの名無しさん
2011/06/13(月) 23:38:44.33面白い回答をどうぞ
0418デフォルトの名無しさん
2011/06/13(月) 23:39:20.29このコードみると
With は1個なのに
End With は2個あるけど
コピペミス?
0419デフォルトの名無しさん
2011/06/13(月) 23:42:33.24はい、すいませんコピペミスと言うか
今日色々やっててその残骸です。無視してください
0420デフォルトの名無しさん
2011/06/13(月) 23:42:37.200421デフォルトの名無しさん
2011/06/13(月) 23:43:46.93えぇ?!俺?
0422デフォルトの名無しさん
2011/06/13(月) 23:59:20.64うむ
おもろー
0423デフォルトの名無しさん
2011/06/14(火) 00:26:23.25過去レス読んでろノロマ
0424デフォルトの名無しさん
2011/06/14(火) 02:13:19.89マゾなの?
気持ちいいの?
0425デフォルトの名無しさん
2011/06/14(火) 02:31:02.290426デフォルトの名無しさん
2011/06/14(火) 03:26:07.70Set *** = Nohingを書かないとメモリリークして、書くとメモリリークしない例は俺は知らない。
0427スーパー問題マン
2011/06/14(火) 03:52:05.88逆にnothingで参照が切れることでガベージなんとかのリストから外れて残る可能性がある
ってことでFA?
0428デフォルトの名無しさん
2011/06/14(火) 03:56:49.71中の細かな動作までわかる奴いないと思うけど
0429デフォルトの名無しさん
2011/06/14(火) 04:24:14.86VBAでオブジェクトをシリアライズし文字列をセルに保存することはできますでしょうか?
0430デフォルトの名無しさん
2011/06/14(火) 09:45:15.39起死回生でみんなを黙らせる書き込みはないんかな?
0431デフォルトの名無しさん
2011/06/14(火) 10:21:45.74Nothing代入しても同じように起こる
Nothing代入によって発生しない問題は
Nothing代入しなくても起こらない
プロシージャレベルの参照変数にプロシージャの最後でNothing代入するのは
完全に無意味で、これの有無によって何かが変わることは無い
0432デフォルトの名無しさん
2011/06/14(火) 10:24:42.70条件処理で空else書くのと同じ扱いだな
実際俺が無知なだけで、notingにすばらしい効果があるのかも知れないし
0433デフォルトの名無しさん
2011/06/14(火) 10:30:22.49文字列型変数 = CStr(整数型変数)
とかやるのは無駄じゃないけど、Nothingは無駄以外の何ものでもない
0434デフォルトの名無しさん
2011/06/14(火) 12:21:58.97とかもその類いだな
でも空elseはNotingと同じじゃんシステム上のメモリリークのリスク回避でなく、コーディングでのリスク回避だと思うんだが
つまりシステム上要請されるコードではなく、規約の上に従う一種のルール
であれば完全否定もするものじゃないな
Notingが明示的な解放ではないと言うスタンスならば
0435デフォルトの名無しさん
2011/06/14(火) 12:23:46.95何も例を挙げていないのに人の話を聞けとか言うやつしかいないよ
0436デフォルトの名無しさん
2011/06/14(火) 12:28:27.190437デフォルトの名無しさん
2011/06/14(火) 12:56:07.51もしかしてこれも無意味だったりする?
教えてエロい人
0438デフォルトの名無しさん
2011/06/14(火) 13:16:38.110439デフォルトの名無しさん
2011/06/14(火) 13:28:31.63まとめるとこんなかな
宣言する派
│
├宣言したら解放される説
├宣言しても解放されないが、メモリリークリスクが減る説
│├GCが自動的に回収するけど想定外エラーとか困る分派
│└回収されるとは限らないから可能な限り明示する分派
├メモリリークリスクは変わらないけど、コードの明示になる説└みんなしてるじゃん説
宣言しないよ派
│
├┬dirpose実装しろ説
│└参照先が変更されるだけで破棄が保証されないから宣言が無意味じゃん説
├GCにまかせろー(バリバリ)説
├気にするようなシステム作ってないだろ説
├面倒くさい説
├参照先が変更されるだけで破棄が保証されないじゃん説
└ソースよこせ説
0440デフォルトの名無しさん
2011/06/14(火) 14:31:20.39タスクマネージャで大体分るんじゃない?
0441デフォルトの名無しさん
2011/06/14(火) 14:41:09.790442デフォルトの名無しさん
2011/06/14(火) 23:43:08.95対象はシートが"対象者"、"コピー元"と人名のシートが複数枚あるブックです
人名のシートは"対象者"シートに書かれている人名でシート名が付けられています
対象者のシートには1〜3列目まで人名を含んだ文字列、それ以降の列がデータとなっており、
1列目から3列目までを順にチェックして、一致する人名のシートにその列をコピーしたいです。
そこで処理を記述してみたのですが、コピーを繰り返すうちに
「リソース不足のため、このタスクを完了することができません。
選択するデータを少なくするか、ほかのアプリケーションを終了して再度試してください。
元に戻さずに続けますか?」と出てしまい、処理が終了してしまいます。
検索して同様の事象の対処法として、クリップボードをクリアするために必要なコピー処理の
直後に1つのセルのみコピーする処理やCutCopyMode=Falseにする処理を入れてみましたが
状況は変わりませんでした。
なんらか対処法ご存知の方教えていただけないでしょうか?
0443442
2011/06/14(火) 23:46:50.21Private Sub CreatePersonalSheet()
nCheckColumn= 1
nPersonCnt = ThisWorkbook.Worksheets("対象者").UsedRange.Rows.count - 1
Do While nCheckColumn < 3
nRow = 2
Do While nRow <= nPersonCnt + 1
sPersonSheet= ThisWorkbook.Sheets("対象者").Cells(nRow , 1)
nPersonEndline= ThisWorkbook.Worksheets(sPersonSheet).UsedRange.Rows.count
With ThisWorkbook.Worksheets("コピー元")
.Range("A1").AutoFilter Field:=nCheckColumn, Criteria1:="*" & sPersonSheet& "*"
0444442
2011/06/14(火) 23:52:56.15If (.AutoFilter.Range.nCheckColumns(1).SpecialCells(xlCellTypeVisible).count > 1) Then
.Rows(1).Hidden = True
.Range("A1").SpecialCells(xlCellTypeVisible).Copy _
ThisWorkbook.Worksheets(sPersonSheet).Rows(nPersonEndline+ 1)
.Cells(1, 1).Copy
Application.CutCopyMode = False
' 作業シートよりコピー完了した行を削除
.Range("A1").SpecialCells(xlCellTypeVisible).delete
.Rows(1).Hidden = False
End If
.AutoFilterMode = False
End With
nRow = nRow + 1
Loop
nCheckColumn = nCheckColumn - 1
Loop
End Sub
前レスでなぜかインデントが消えてしまいました、すみません
どなたか分かる方見えたらお願いします。
0445デフォルトの名無しさん
2011/06/15(水) 01:15:41.49Do While nCheckColumn < 3
...
nCheckColumn = nCheckColumn - 1
Loop
無限ループしてないか?
0446442
2011/06/15(水) 01:26:49.22そこは実際のソースだと分かりづらい部分があったんで何箇所か修正したときに直し忘れてました
nCheckColumn = nCheckColumn +1ですね
ご指摘ありがとうございます
あと>>442の4行目「対象者のシートには〜」は「コピー元のシートには〜」でした。
間違いが多くてすみません
0447問題マソ
2011/06/15(水) 07:44:30.67>>446
ちょっとブックうpしてみて
0448デフォルトの名無しさん
2011/06/15(水) 07:49:25.77ただ、悪魔の証明で、Nothing無しでも全てのケースに置いて絶対に問題が「無いという証明」は不可能なので
悪魔の証明ってのを理解してない奴だけが結論出てないと勘違いしているだけ
0449デフォルトの名無しさん
2011/06/15(水) 08:12:49.670450デフォルトの名無しさん
2011/06/15(水) 18:11:04.35何度か実行していると、突然
指定されたオブジェクトが見つかりません
みたいなエラーがでて、フォームが開けなくなることがあるんですが、
フォームに問題があるのでしょうか?
上書き保存時にもエラーがでることもあります。
コードを新規BOOKに移植しても同じでした。
0451デフォルトの名無しさん
2011/06/15(水) 18:41:06.55話はそれからだ
0452デフォルトの名無しさん
2011/06/15(水) 18:54:35.56特定のBOOKではなく、いくつかのファイルで発生します。
エクセル、OSともに再インストールしたけど、再発しました。
内容は複雑なものではなく、
with構文
Application.ScreenUpdating
txt1.Value = Val(txt2.Value) - Val(txt3.Value)
if Else構文
を使い、
フォームのコンボボックスや
テキストボックスに入力したものを
シートに転記する、といったようなものです。
エクセル2007
Celeron 2.53
MEM 1024M です。
0453デフォルトの名無しさん
2011/06/15(水) 19:11:06.50ユーザーフォーム上でなんらかの処理を何度か実行すると問題が起きるのか解らんが
前者なら何のコントロールもコードも乗せてない空のユーザーフォームでも再現するか
後者なら、空のユーザーフォームにボタンを1つ配置して、コードは書かずにそれを
何度か押すだけでも再現するか確認しろ
これで問題が再現するなら、MSにバグ報告しな
これで問題が再現しないなら、コードに問題があるわけだから
問題が再現する最小のコードをきちんと探って
変に略したりせずに書くように
0454デフォルトの名無しさん
2011/06/15(水) 19:13:40.51Nohitng付けとけ派は
事実と推論できるものが証明できるかどうかを問題にしてるんじゃない
事実として良いかを問題にしてるんだ
VBAの実行環境に対する信頼性の問題だよ
0455デフォルトの名無しさん
2011/06/15(水) 20:10:51.67汎用性はありそうだけど、
繰り返し処理に弱そうなイメージなんだがどう思う?
0456デフォルトの名無しさん
2011/06/15(水) 20:11:46.31余裕
0457デフォルトの名無しさん
2011/06/15(水) 21:50:41.90似たような症状になったことある。
どういう基準でなるかわからなかったけど、
ユーザーフォームをデバッグしてると、急に
パスが見つかりません、みたいなエラーがでる。
ツリーでひらいても、同じでひらけない。
ぐぐっても、ユーザーフォームがなにか悪さしてる、
程度しかわからなかった。
0458デフォルトの名無しさん
2011/06/15(水) 22:43:34.39「A1に 23:00:00と入力し B2からB11に 101から110までの数字を入力しています
右隣(C2)に数字をコピーするマクロですが下記のようにマクロ記録終了いたしました」
Sub 時間ですコピーです()
'
' 時間ですコピーです Macro
'
'
Range("B2:B11").Select
Selection.Copy
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Select
End Sub
「毎日A1表示時刻に実行するマクロを下記の通りやってみましたが指定時間に実行できません」
Sub 時間ですコピーです()
'
' 時間ですコピーです Macro
間省略
Application.CutCopyMode = False
Application.OnTime TimeValue("A1"), "時間ですコピーです"
End Sub
「ご指導の程お願いします」
0459デフォルトの名無しさん
2011/06/15(水) 22:53:09.77タスクを使う
0460デフォルトの名無しさん
2011/06/15(水) 23:07:19.71Application.OnTime TimeValue(Range("A1")), "時間ですコピーです"
じゃね?
0461デフォルトの名無しさん
2011/06/15(水) 23:11:29.150462デフォルトの名無しさん
2011/06/16(木) 00:23:51.75>>459の人が言ってる様にタスクで立ち上げて
Workbook_Openに処理を書き込む様にすれば大丈夫。
最後にブックを保存して閉じることを忘れずに。
0463デフォルトの名無しさん
2011/06/16(木) 08:30:13.09ありがとうございます タスクの意味があまり分かっていませんで
一度くぐってやってみます
0464デフォルトの名無しさん
2011/06/16(木) 10:04:59.11マクロでシートの中の「"」を一度に消したいのですが、文字列として認識してくれないため行き詰まっています。
手動の置換でなら出来るのですが、マクロで処理する方法があればご教授ください。
よろしくお願いします。
0465デフォルトの名無しさん
2011/06/16(木) 10:26:14.91コントロールパネル開いてごらん
0466デフォルトの名無しさん
2011/06/16(木) 10:27:33.42エスケープシーケンス
文字コード
おすきにどうぞ
0467デフォルトの名無しさん
2011/06/16(木) 10:51:40.71はい やってみました
タスクと言うところクリックして タスクの追加とか・・・ありますね
初めて開きました お昼休みに一度やってみます
何度もありがとう
0468デフォルトの名無しさん
2011/06/16(木) 10:53:31.08testしてないけど
Replace(Cells(n, n), Chr(34), "")とかは?
Chr(34)は半角 "
0469デフォルトの名無しさん
2011/06/16(木) 12:57:54.54Cells.Replace What:="""", Replacement:=""
0470デフォルトの名無しさん
2011/06/16(木) 15:33:22.65一括で変更するにはどうしたらいいでしょうか?
cbo内容1 〜 cbo内容10
と連番にしたです。
0471デフォルトの名無しさん
2011/06/16(木) 15:49:59.610472デフォルトの名無しさん
2011/06/16(木) 15:53:24.87返信ありがとうございます。
しかし、何度やってもダメでした。
VBのバージョンが6.5なのですが、古くてダメなのでしょうか。
0473デフォルトの名無しさん
2011/06/16(木) 16:08:42.34バージョンに限らず駄目でしょう。
あれの扱いは文字列ではありません。
0474デフォルトの名無しさん
2011/06/16(木) 16:14:54.760475デフォルトの名無しさん
2011/06/16(木) 16:15:29.56フォームツールなのか、ユーザーフォームなのかで
話は変わってくるわけだが
0476デフォルトの名無しさん
2011/06/16(木) 16:16:15.85ユーザーフォームです
0477デフォルトの名無しさん
2011/06/16(木) 16:32:47.17でも駄目?>>469の人の書き方ちょっと変えただけだけど。
0478デフォルトの名無しさん
2011/06/16(木) 16:47:21.020479デフォルトの名無しさん
2011/06/16(木) 17:00:19.20表みたいに配置したテキストボックスが
40個とかあったら、大変。
D&Dとかソートでできたら楽なのに。
みんなは一個ずつちまちま移動しているのですか?
0480デフォルトの名無しさん
2011/06/16(木) 17:14:45.75やはりダメなようです。
他の文字ではちゃんと処理してくれるのでプログラムは合っているのですが
ダブルクォーテーションだけが処理してもらえません。
0481デフォルトの名無しさん
2011/06/16(木) 17:33:33.40どのようにコーディングしてどのようにダメなのか実例を示してくれ
0482デフォルトの名無しさん
2011/06/16(木) 17:52:33.77この状況によくなるんだけど、解決方法はないんですか?
0483デフォルトの名無しさん
2011/06/16(木) 19:04:28.87例えばIf〜文の条件式で(必ずしもifでなくてもOKです)、
真であれば
次の行のプログラムをEnd subまで読み込まない。
または、
指定した行のプログラムまで読み込まずにジャンプする。
というようなことは出来ないでしょうか?
宜しくお願いします。
Windows XP EXCEL2000です。
0484デフォルトの名無しさん
2011/06/16(木) 19:13:09.45なんたら
endif
0485デフォルトの名無しさん
2011/06/16(木) 19:24:21.23>次の行のプログラムをEnd subまで読み込まない。
どう使いたいのかがよく分からないけど、フラグ設けて再帰するとか?
>指定した行のプログラムまで読み込まずにジャンプする。
GOTO文があるけど、これの多用はお勧め出来ない。
If文のネスト加減で難しいならこれもやっぱりフラグ設けてその分岐で目的の行に
飛ばした方がいいと思うよ。
0486デフォルトの名無しさん
2011/06/16(木) 20:07:38.82すみません、言葉が足りないようでした。
例えば、>>477さんのプログラムを実行すると、何も変更されないままプログラムが終了するのです。
ダブルクォーテーション以外の文字を指定するとちゃんと置換されてプログラムが終了します。
0487デフォルトの名無しさん
2011/06/16(木) 20:35:40.610488デフォルトの名無しさん
2011/06/16(木) 20:36:54.82chr(34)
0489デフォルトの名無しさん
2011/06/16(木) 20:57:24.02最上位にあるプロパティがコード側から
うまく操作できないぽい。既出でしょうか? orz
ウォッチウィンドウでSelection.FormatConditionsを見ると
Item1とItem4のFormula1が同じ値になってる。
Item1の方の.font.colorとか.font.colorindexを変化させても
反映されない。Item4側が変化したりする。
0490デフォルトの名無しさん
2011/06/16(木) 21:03:28.53それ、>>477と何が違うの?
0491デフォルトの名無しさん
2011/06/16(木) 21:06:35.78老眼がきてんのか?おっさん
0492デフォルトの名無しさん
2011/06/16(木) 21:14:18.66Call Cells.Replace(""","")
なるほど、ダブルクォートが3つか。
ドヤ顏のとこ悪いけど、それじゃ走りもしないよん。
0493デフォルトの名無しさん
2011/06/16(木) 21:21:37.32俺はちゃんと置換されるが?
0494デフォルトの名無しさん
2011/06/16(木) 22:30:48.07>>486の書き方に間違いがあるんでしょ。
ごちゃごちゃ言わずにさ、その部分どういうふうに書いているのかサンプルのデータと一緒にここに書いてみたら?
あれこれ言ってるよりその方がよっぽど早いでしょ。
0495デフォルトの名無しさん
2011/06/17(金) 00:04:44.82失礼しました。
以下のデータになります。
エクセルのシートは「”あ”」のようにダブルコーテーションでくくってある文字の集合です
試しにシートのダブルコーテーションを全角から半角に書き直し、
Macro2の「Chr(&H8168)」を""とすると、消すことが出来ました。
しかし全角の”を消すことができません。
Sub Macro1()
'
' Macro1 Macro
'
'
Cells.Select
Call Cells.Replace("chr$(&H8168)", "")
End Sub
Sub Macro2()
'
' Macro2 Macro
'
'
Cells.Select
Selection.Replace What:="Chr(&H8168)", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
0496デフォルトの名無しさん
2011/06/17(金) 00:07:05.35"”"
0497デフォルトの名無しさん
2011/06/17(金) 00:30:23.090498デフォルトの名無しさん
2011/06/17(金) 00:31:14.20ありがとうございます
0499デフォルトの名無しさん
2011/06/17(金) 00:41:12.66書かなきゃいいじゃんww
0500デフォルトの名無しさん
2011/06/17(金) 01:01:08.59質問で全角とは予想GUY
0501デフォルトの名無しさん
2011/06/17(金) 01:03:05.83> マクロでシートの中の「"」を一度に消したいのですが
0502デフォルトの名無しさん
2011/06/17(金) 01:34:17.770503442
2011/06/17(金) 03:41:09.22事象の再現するようにテストデータとブックを作りました。
下記のURLから取得してみていただけないでしょうか?
ttp://www1.axfc.net/uploader/Sc/so/245613
DLキーは[VBA442]です
どなたか力を貸していただけると助かります。
0504デフォルトの名無しさん
2011/06/17(金) 04:45:19.74Value = Valueによる代入にしたらエラー出なかったし
Copyの場合の「実行〜エラー」までより遙かに短い時間で全処理終わったよ
0505エスパーマン
2011/06/17(金) 04:49:53.920506デフォルトの名無しさん
2011/06/17(金) 15:32:49.48例えばA1の中身が「あ」なら終了して、それ意外なら実行するという様なコードを教えてください
0507デフォルトの名無しさん
2011/06/17(金) 17:09:59.170508デフォルトの名無しさん
2011/06/17(金) 18:54:18.09分からないならそう言えよ
0509デフォルトの名無しさん
2011/06/17(金) 18:58:24.68Exit Sub
Else
〜
End If
これで満足したか? >>508
0510デフォルトの名無しさん
2011/06/17(金) 19:07:39.420511デフォルトの名無しさん
2011/06/17(金) 19:08:38.130512デフォルトの名無しさん
2011/06/17(金) 20:14:46.42「あ」じゃないときだけ実行すれば、「あ」のとき終了と同じことになる。
0513デフォルトの名無しさん
2011/06/17(金) 20:23:36.82506レベルなら「では"あ"ではないってどうやって(ry」になるんじゃね
0514442
2011/06/17(金) 20:55:52.08出来ました、ありがとうございます
しかし原因がよく分からなかったのですが、今回のようにフィルターかけて可視領域だけを
コピーするような連続領域でないコピーみたいな特殊な処理はCopyは使わないほうがよいということですか?
0515デフォルトの名無しさん
2011/06/17(金) 21:08:10.51マジだったんだ。すまんかったな。
0516デフォルトの名無しさん
2011/06/17(金) 21:14:11.34リストボックスとボタンを置いて
ボタンに
Private Sub CommandButton1_Click()
Me.ListBox1.ListIndex = -1
End Sub
と書くと選択が解除されるのですが
リストボックスに
Private Sub ListBox1_Click()
Me.ListBox1.ListIndex = -1
End Sub
と書くと選択が解除されません。
これどうやったら選択解除出来ますか?
0517デフォルトの名無しさん
2011/06/17(金) 22:47:14.19何がしたいんだ?
0518デフォルトの名無しさん
2011/06/17(金) 23:06:55.55奇数行に線(---------------------)を入れてて
それをクリックした時に選択状態にしない様にしようと
思ってやってみたんですが解除出来なくて。
飾りじゃない行をクリックしたら値をシートにセットして
アンロードする様にしています。
見栄えの問題なので絶対必要って訳じゃないんですが。
0519デフォルトの名無しさん
2011/06/17(金) 23:43:23.810520デフォルトの名無しさん
2011/06/17(金) 23:49:59.23デフォルトがoff(押し込まれた状態)の状態
にする方法ってある?
0521デフォルトの名無しさん
2011/06/18(土) 00:12:12.06UserForm1.ToggleButton1.Value = True
UserForm1.show
かな?かな?
0522デフォルトの名無しさん
2011/06/18(土) 00:24:01.87フォームを使わず、
Sheet1にActiveXコントロールのToggleButtonをつかった場合です。
したがって、Sheet1にコードを書いた場合です。
0523520
2011/06/18(土) 00:27:21.90ToggleButtonで
デフォルトがon(押し込まれた状態)にする方法ってある?
フォームを使わず、
Sheet1にActiveXコントロールのToggleButtonをつかった場合です。
したがって、Sheet1にコードを書いた場合です。
0524デフォルトの名無しさん
2011/06/18(土) 01:03:15.72原因は「可視領域のコピー」にある
例えば、300件のデータがあって、そのうちフィルタを抜けて表示されたセル(行)が10件あったとしよう
あのコードでコピーされる行数は何行?
おそらく君は10行がコピーされると思ってるのだろう
しかしそれは間違いで、正しくは2003以前なら「65536-300+10 = 65246行」だ
だって、データが入ってない301〜65536行目も「可視領域」だろ
六万数千行もの膨大な範囲のコピーを数百回繰り返せば、流石にリソース不足にもなるさ
こんなのは、予備知識が無くてもデバッグ出来る奴ならすぐに気付くこと
だって、各処理の戻り値や変数の変化や内容を確認するという、一番初歩的なデバッグで気付けるから
「可視領域のコピー」ではなく「可視領域『かつデータが入っている領域』のコピー」あるいは
空セルを非表示にした上での「可視領域のコピー」なら、コピー処理でもエラーにはならないはず
まあ書式不要なら、Value = Valueの方が良いとは思うけどね
とりあえず、まともにデバッグが出来ないうちは、どんなに複雑なコードが書けても
「プログラムが組める」「VBAが使える」うちには入らないので、デバッグの仕方はきちんと身につけましょう
このくらいの単純で短い処理ならいいけど、もっと複雑で長い処理になると、
こういうスレで金を貰える訳でもない赤の他人らは、面倒がって相手にしてくれなくなるよ
0525デフォルトの名無しさん
2011/06/18(土) 01:25:47.00ググったんだけど
ClickイベントをMouseUpイベントにしたらできたよ
例えば、リストボックスのValueが"-----"ならListIndex=-1
とか
0526デフォルトの名無しさん
2011/06/18(土) 01:50:15.08出来ました!ありがとうございます
0527丸投げ請負マン
2011/06/18(土) 06:27:00.340528デフォルトの名無しさん
2011/06/18(土) 06:31:45.940529デフォルトの名無しさん
2011/06/18(土) 08:27:29.63右クリック→プロパティでTrueにしたら出来たけどさ
(excel2007)
0530デフォルトの名無しさん
2011/06/18(土) 10:12:21.87ExcelVer:Excel2003質問させてください。
処理の高速化が目的です。
ブックA1〜ブックAnまでに書かれた同一フォーマットのデータを
ブックBに集計しています。
Bに書かれたマクロで、現在Workbooks.openメソッドを使ってA1〜Anを参照しているのですが、
Workbookオブジェクトをopenせずに参照する方法はないでしょうか。
よろしくお願いします
0531デフォルトの名無しさん
2011/06/18(土) 10:33:01.550532デフォルトの名無しさん
2011/06/18(土) 11:00:44.250533デフォルトの名無しさん
2011/06/18(土) 11:19:23.50ある
0534デフォルトの名無しさん
2011/06/18(土) 20:07:18.88です。
遅レスすいません。
>>484
>>485
有難うございます。
if false then
と
GOTO文を組み合わせることで解決できました。
感謝です。
0535デフォルトの名無しさん
2011/06/18(土) 21:05:58.03それは駄目だ
GOTO文を使わなくていいように考え直せ
0536デフォルトの名無しさん
2011/06/18(土) 21:40:29.90プログラム言語は全くわかりません。エクセルのVBA以外は扱えます。
0537デフォルトの名無しさん
2011/06/18(土) 21:50:43.35Excel VBAデバッグ編 実践のツボ(九天社)
もう会社なくて絶版だけどまだ十分見つかると思う
自称初心者は是非買っとけ
0538デフォルトの名無しさん
2011/06/18(土) 23:13:07.250539デフォルトの名無しさん
2011/06/19(日) 00:04:43.31参考書?
参考書もいいけど、VBAに限らずMicroSoftの製品はまず見ておくべき所があるよ。
それはMicrosoft Developer Network、通称MSDNと呼ばれるページ。
たとえばEXCELのVBAならここ。
http://msdn.microsoft.com/ja-jp/library/ee814735.aspx#Y2000
最初は小難しい様に見えるかもしれないけど、よく読み解いて行くと
VBAがどんなものか、かなり手っ取り早く解るはず。
0540デフォルトの名無しさん
2011/06/19(日) 00:11:20.67ブラウザ起動してとかじゃなくて
0541デフォルトの名無しさん
2011/06/19(日) 00:21:32.48つXMLHTTPオブジェクト
0542デフォルトの名無しさん
2011/06/19(日) 00:37:45.61ありがとうございます
0543デフォルトの名無しさん
2011/06/19(日) 00:40:02.83出来る、>>541の言うようにXMLHTTP使えばVBSですら出来る。
但し、単純にSendすれば良いだけのところに書き込むよりちょっと難しい。
とりあえずCookieが解ってないと無理。まぁ、それ以前に、単純にSendすれば良いだけの
ところへの書き込み方すら解らないとかなら問題外だけどねw
でもCookie含めたHTTPの基礎知識があれば、CookieにしてもSendするデータにしても
仕様は公開されているから簡単に出来るだろう。
スレ違いなので、具体的な解説はここではできないけどね。
0544丸投げスルーマン
2011/06/19(日) 02:26:39.56>>531
できるぜ!、
変更したいサイズにフォームをセット→GetOpenFilename→LoadPicture→SavePicture
でいけると思う
駄目だったらapiのGetObjectとGetBitmapBitsでフォームの画像データの二次元配列がとれるから、後は気合で
>>536
すげーな
俺なんてなんとかテーブルもワークシート関数もろくに知らないぜ!
>>540
エクセルをブラウザがわりって昔誰かが作ってたぜ!
>>543
Cookieは仕組みがおかしいよなw
俺はFunction CookieWriteとかでググってどっかからコピペしたぜ!
0545デフォルトの名無しさん
2011/06/19(日) 12:59:18.76開発支援ツール(アドインなど)で便利なものがありましたら
教えてください。
0546デフォルトの名無しさん
2011/06/19(日) 14:11:07.100547デフォルトの名無しさん
2011/06/19(日) 14:13:37.68便利かどうかは個々が判断するものだ
君が何を便利と感じるかなんて知らん
自分で探して自分で便利かどうか試せ
0548デフォルトの名無しさん
2011/06/19(日) 15:17:59.112 エンターキー三回で三行分空ける
3
4 2
・ エンターキー四回で四行分空ける
・
・
・
3
エンターキー二回で二行空ける
4
「入力されてるセルを、エンターキー連打すれば連打するだけ空きセルを作る(改行する)」ってな感じの設定にするにはどうすればいいですか?
0549デフォルトの名無しさん
2011/06/19(日) 15:21:16.560550デフォルトの名無しさん
2011/06/19(日) 16:14:04.07そのワークシートに
押されたキーがエンターキーならば、セルを挿入する(縦にずらす)
というコードを書けば?
0551デフォルトの名無しさん
2011/06/19(日) 19:23:20.55マクロを利用して作ってみたんですが、エンターキーは無理そうなので、ctrlとxで空欄を作ることができました。
ですが、一つのセルだけにしか効果がないようなので、オートフィルする必要がありそうです。
そして、その方法が分かりません・・・・。>>551は現時点のマクロです。
訂正よろしくお願いします。
0552デフォルトの名無しさん
2011/06/19(日) 19:28:34.24'
' Macro7 Macro
'
' Keyboard Shortcut: Ctrl+x
'
Range("A1:B1").Select
Range("B1").Activate
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Select
End Sub
なお、熟練者の方々なら見てもらえれば分かるかも知れませんが、ctrlキーとxを押せば「そのとなりのセルも一緒に空欄にする」となっています。
どうかご教授おねがいします。
0553550
2011/06/19(日) 19:58:37.33キー押下げのイベントがないみたいですね。
なので>>550のようにはできませんでした。すみません。
ショートカット登録でよければ、
Selection.Insert
の一文だけでいいと思います。
登録キーはCTRL+xみたいによく使うのはやめた方がいいです。
例えばCTRL+Shift+Iとかにすればいいと思います。
0554デフォルトの名無しさん
2011/06/19(日) 19:58:46.10ある
0555デフォルトの名無しさん
2011/06/19(日) 20:00:02.90どこにあるの?
0556デフォルトの名無しさん
2011/06/19(日) 20:01:28.650557デフォルトの名無しさん
2011/06/19(日) 20:34:44.43>>553の人が言ってるのをパクってEnterキーでやるやつに挑戦してみたわさ。
VBEで
シート側に記述
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call hoge
End Sub
標準モジュール側に記述
Option Explicit
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Sub hoge()
On Error GoTo Err_Handler
If GetAsyncKeyState(vbKeyReturn) Then
ActiveCell.Insert
End If
Exit Sub
Err_Handler:
Call MsgBox("もう入れられません><")
End Sub
結構適当だから何か起こるかも知れないわさ・・・
0558デフォルトの名無しさん
2011/06/21(火) 00:18:05.28textboxのスタイルや
BackColorとかフォントとかどんなのが定番なんですか?
ネットにもなかなか参考になるレイアウトがなくて。
0559デフォルトの名無しさん
2011/06/21(火) 00:21:22.76利用者に任せる
0560デフォルトの名無しさん
2011/06/21(火) 00:42:41.20下手に小奇麗なデザインより、利用者を最優先する思い切った作りの方が
意外と喜ばれる事が多い。
0561デフォルトの名無しさん
2011/06/21(火) 23:53:28.36フォーム自体の色(背景色)って
グレー系のほうがいいのか迷う俺はどうしたらいいですかね?
どれが視認性いいんだろ。
突き詰めるとカラーコーディネーターとかになるんだろうけど。
テキストボックスは、昔ながらのへっこんだ感じがいいのか、(Falseのときは透過にする)
時代は、フラットな感じなのかわからない。
0562デフォルトの名無しさん
2011/06/22(水) 00:42:43.63身内で使うツールなんかだったら色は自分の好みとセンスでってところはあるけど、
銀行系の上流システムに取り込まれるファイルを出力する様な、上流のユーザーさんが使うツールとかだったら
思いっきり地味に作って無難にしておくかな。
ボタンの配置は作業手順に併せて、ボタンの大きさとフォントは統一するか、
特によく使うボタンは大き目に作っておくかってくらいだけど、
まぁあくまで自分だったらと言う話だけど、制約が無ければ折角のEXCELなんで
フォームは使わないでシートを駆使するかな。
バリデートは出来る限りシートの数式に仕込んで集約したセル1こ見ればいい様にしたいし、
ボタンもシェイプにしといてリボン型とかにしとくと大分イメージが変わるし。
0563デフォルトの名無しさん
2011/06/22(水) 01:15:37.41営業・売上日報や請求明細書関連です。
自分でつくって、せいぜい3人程度でしか使わないなら、シート使ったほうがいいのかな。
必死に勉強してフォームとかクラスとかできるようになってきたんだが。
シート駆使ってどんな感じなのですか?
0564デフォルトの名無しさん
2011/06/22(水) 01:24:24.97入力フォームを処理をシートで済ませるってことですか?
たしかにフォームで、テキストボックスを表状に並べたりしましたが
見にくいなって思ってました。
複数行ある上記のテキストボックスの表の各行の合計を自動で計算するのに
クラス勉強したり。
やればやるほどフォームの利点がわからなくなってきました。
エクセルVBAのユーザーフォームの利点ってなにかあるんでしょうか?
0565デフォルトの名無しさん
2011/06/22(水) 02:09:20.99フォームを使うことで他のフレームワークで作ったものと、統一性を図ることが出来る。
例えばアドインファイルにしておいて、立ち上がり時にEXCELのアプリケーションを非表示にしてフォームを表示すれば
見た目VBやC#で作ったのと体して変わらない様なものが作れる。
後はフォーム特有のイベントが有った様な無かった様な・・・
まぁ今までEXCELでフォーム使わないで困ったこと無かったけどね。
逆にファイルを閉じた場合、フォーム中心に考えていたら変数にファイルが閉じる前の値を
継続して使わせたい時、結局シートや外部ファイルに値を残したりそれなりの仕組みを作らなければならないことを考えると、
最初からシートでいいじゃんて事になったり、INIファイルもコントロール用のシートを作ることで
外部ファイルにしなくてもまかなえたりする。
まぁでもあくまで自分だったらということであまり拘らないでいいと思うよ。
0566デフォルトの名無しさん
2011/06/22(水) 02:20:56.810567デフォルトの名無しさん
2011/06/22(水) 17:54:06.24コピー挿入が終われば、次の行の数値を読んで、また同じ処理を繰り返したいです
0569デフォルトの名無しさん
2011/06/22(水) 21:02:39.15役割があるんですか?
参考書勧めてたらユーザーフォームの項目でも見慣れる形で出てきたのですが・・・
もうひとつですが、変数の宣言に関しての質問です
「Dim 変数名 As データ型」と宣言方法はなると参考書に書いてますがAs データ型以降は省略しても
大丈夫なんでしょうか?(´・ω・`)初学者で困っています
0570デフォルトの名無しさん
2011/06/22(水) 21:14:38.54value省略してたら、数字が文字列として転記されたりする。
as移行を省略したら、宣言する意味がない。
0571デフォルトの名無しさん
2011/06/22(水) 21:44:40.10その辺、その参考書には書いてないのか。
なんちゅう参考書だ。
まずValueは値。シートに限らず、また、文字列に関わらず値を司るプロパティ。
変数の型は省略すると、Variantと言う型が割り当てられるけど、これがメモリを16バイト以上食う。
例えばInteger型などは2バイトしか使わないが、この型で済む様な値しか扱わない様な場合、
型を設定しなければしない分だけ無駄なメモリ領域を消費し圧迫して処理速度にも影響を与える事もある。
とりあえずコードを書く際、先頭行にOption Explicitと書いて、使う変数は例えVariantであってもそれを
明示的に型指定する様に記述する事をお勧めする。
特に型の指定は後々Object指向言語を使う事になった場合、VBAとは比較にならないくらい
色々な制限や使い方があるので、そちら方面に進みたいならせめて型の宣言は常に行う癖を付けておいた方がいいと思う。
0572デフォルトの名無しさん
2011/06/22(水) 23:43:36.89Felicaカードリーダを用いて、VBAのユーザーフォームで、Felicaカードの読み込み機能を作成しています。
ユーザーフォームが表示されている場合のみ、カードの読み込みを受け付けたいのですが、
VBAってApplication.onTime以外に、イベントのような扱いはできないものでしょうか?
0573デフォルトの名無しさん
2011/06/23(木) 00:25:28.22APIでフォームのハンドル探せばいいんじゃないの?
0574デフォルトの名無しさん
2011/06/23(木) 06:06:50.62Excelとは関係ない部分なので、なんにしろスレ違いだな。
0575デフォルトの名無しさん
2011/06/23(木) 07:23:46.36ご返答ありがとうございます。フォームのハンドル関連からググッてみます。
>>574
たしかにWinAPI等詳しいと呼べるちしきはないですね。
ただ、Excelの機能で待ち受け状態が擬似的にできればよいので、
そのような方法がないかさがしておりました。
どちらにしろ、お二方ご返答ありがとうございました。
0576デフォルトの名無しさん
2011/06/23(木) 09:53:12.590577デフォルトの名無しさん
2011/06/23(木) 12:04:53.33インテリセンスがうまくきかなくなってしまったんだけど…どうしたら元に戻せますか?
0578デフォルトの名無しさん
2011/06/23(木) 16:27:12.09dimを消す
0579デフォルトの名無しさん
2011/06/23(木) 18:01:56.89消してあります。
なのにちゃんと機能してくれません…
クリーンがあればよかったとつくづく思います
0580デフォルトの名無しさん
2011/06/23(木) 18:41:41.79再度宣言し直す
例えばmsgboxと、変数を作ってしまったら
Dim MsgBoxと、VBEに書いてから
このDim〜を消す
0581デフォルトの名無しさん
2011/06/23(木) 18:58:24.320582デフォルトの名無しさん
2011/06/23(木) 19:06:12.15めちゃくちゃ薄い印字がしたいのです。
0584デフォルトの名無しさん
2011/06/23(木) 19:58:52.190585デフォルトの名無しさん
2011/06/23(木) 20:05:49.550586デフォルトの名無しさん
2011/06/23(木) 22:18:53.61できたっ…本当にありがとう…!
0587デフォルトの名無しさん
2011/06/23(木) 23:03:07.11できてもせいぜい3段階ぐらいだよね
制御方法も機種ごとに全然違うし
それよりも文字や罫線を明るい灰色に変更してグレースケールかカラーで印刷した方がよくない?
0588デフォルトの名無しさん
2011/06/24(金) 07:39:40.500589デフォルトの名無しさん
2011/06/24(金) 11:18:06.47vbaとは関係ないがw
0590デフォルトの名無しさん
2011/06/24(金) 11:24:48.25○ ドラッグ&ドロップを常に切り取り貼り付けにする方法
0591デフォルトの名無しさん
2011/06/24(金) 11:26:38.49Shiftを押しながらドラッグ&ドロップ
0592デフォルトの名無しさん
2011/06/24(金) 11:29:25.34どこかのチェックボックスをon/offすることでできない?
0593デフォルトの名無しさん
2011/06/24(金) 12:26:55.78幸せになれるぞ。
0594デフォルトの名無しさん
2011/06/24(金) 12:47:48.760595デフォルトの名無しさん
2011/06/24(金) 12:53:45.82Shiftキー連打しろ
0596デフォルトの名無しさん
2011/06/24(金) 13:25:20.40http://exceldna.codeplex.com/
VBAの代わりにC#やVB.NETが使えるようになる。
Visual studio(EXPRESSで十分)で開発できるだけでも効率が上がるし、
処理速度もC#>VBAだし、今のところ欠点が見あたらない。
Excel97でも動くそうだぞ。
0597デフォルトの名無しさん
2011/06/24(金) 13:51:41.45現在DBのような規則的に並んでいるデータからキー値を取得して、
そのデータをデザインしたフォーマットに基づきEXCELファイルに出力させようとしています。
※↑は説明用に作りました。(キー値は手入力の為、どうしても重複する事がしばしば)
上記のマクロ組んでいるのですが、キー値が被ってエラーが発生する事があります。
なので、キー値が被っていたら次のデータへいくように下記のようにエラー処理をいれてみました。
悩んでいるのは、エラー発生時に全て定義したGOTO文へ飛んでしまうのですが、回避策ありますでしょうか?
sub TEST()
On Error Goto NEXT
if CheckKeyData then 'キーチェックし重複であれば NEXTへ
Goto NEXT
end if
sheets("aaa").select 'もし、ここでありもしないシートを選択したとしても、NEXTへいってしまいます。
NEXT:
end sub
よろしくおねがいします。
0598デフォルトの名無しさん
2011/06/24(金) 13:53:32.53説明不足失礼しました。
キー値はEXCELに手入力で打ち、EXCELからマクロ実行するとDBのようなファイルへアクセスし、
データひっぱってくるよにしています。
0599デフォルトの名無しさん
2011/06/24(金) 14:04:28.530600デフォルトの名無しさん
2011/06/24(金) 14:09:02.59なん……だと……
エクセルをdotnetで動かせるわけじゃないよな?
0601デフォルトの名無しさん
2011/06/24(金) 14:09:07.52ラベル効果を無効にしてしまうような機能があればと思いましたが、
やっぱりラベル複数用意しないと回避はできないのですね・・・
ありがとうございました。
0602デフォルトの名無しさん
2011/06/24(金) 14:43:02.060603デフォルトの名無しさん
2011/06/24(金) 14:50:39.84http://goo.gl/RtO4B
ここ日本語だから順番に読めば感じが掴めると思う。
スレチすまん。
0604デフォルトの名無しさん
2011/06/24(金) 23:25:43.210605デフォルトの名無しさん
2011/06/24(金) 23:40:03.96データはどこからとってる?
0606デフォルトの名無しさん
2011/06/25(土) 00:34:59.95計算が終わったらxとyの目盛りの最大値を比べて高い方の値に両方を合わせたいのですがどうすればいいでしょうか
sheet1のグラフ2です
0607デフォルトの名無しさん
2011/06/25(土) 01:36:28.250608デフォルトの名無しさん
2011/06/25(土) 11:00:02.63例としてセルA1に"Sheet2!B2"と書いてあって、A1の通りSheet2!B2に"×"と記入する
0609デフォルトの名無しさん
2011/06/25(土) 11:02:58.48事故解決しました
0610デフォルトの名無しさん
2011/06/25(土) 12:06:31.50EXCELのVBE上で入力補完付きで編集出来る様になるなら期待するけど、
そうじゃなきゃVS上で作ってdllにして参照した方が早いからイラネ
0611デフォルトの名無しさん
2011/06/25(土) 12:50:21.80これはゴールシークを使ってどのようにすればいいのでしょうか?
よろしくお願いします。
0612デフォルトの名無しさん
2011/06/25(土) 13:25:09.72同じのを二つ作らないとだめなんですかね
0613デフォルトの名無しさん
2011/06/25(土) 18:16:00.74でも、同じのを2つ作れば完璧に解決することなんだから、それでいいじゃん
どんなに複雑なフォームだろうと、全く同じのを作るなら、ほとんど手間かからないし
0614デフォルトの名無しさん
2011/06/25(土) 18:29:54.160615デフォルトの名無しさん
2011/06/25(土) 21:57:41.25セルの中に変数名を含む式を記述する方法について質問です。
dim 数字 as integer
Workbook.Worksheets("Sheet1").Cells(1, 1).Formula = "=数字 * 100"
とやると、「=数字 * 100」とそのまま入ってしまい上手くいきません。
どのように記述すれば良いのでしょうか?
よろしくお願いします。
0617デフォルトの名無しさん
2011/06/25(土) 22:51:51.08month()と小文字になって、配列がありませんとエラーになります
どうしたら良いですか?
0618デフォルトの名無しさん
2011/06/25(土) 22:56:24.220619デフォルトの名無しさん
2011/06/25(土) 23:16:35.440620615
2011/06/25(土) 23:32:36.09答えてくれてありがとうございます。
助かります。
0621デフォルトの名無しさん
2011/06/25(土) 23:35:40.75文を書いてみろ
0622デフォルトの名無しさん
2011/06/26(日) 00:03:04.90A2にbbb.xls
と合った場合に
もしExcelファイルと同じフォルダにaaa.xlsやbbb.xlsがあった場合
それぞれリンクをつけてそのボタンを押下すると自動的に起動させたいのですが
可能でしょうか?
当然なかった場合にはリンクは張らない状態です
0623デフォルトの名無しさん
2011/06/26(日) 00:14:20.370624 忍法帖【Lv=1,xxxP】
2011/06/26(日) 00:26:36.65If c >= 1 Then 〜
「1」を別のワークシートのA3〜Z3までの値にする場合
どのように書いたらいいのでしょうか?
0625デフォルトの名無しさん
2011/06/26(日) 00:42:44.00気のせいか?
0626デフォルトの名無しさん
2011/06/26(日) 00:53:01.600627デフォルトの名無しさん
2011/06/26(日) 05:53:52.09ユーザーフォームの内容によってはエクスポートして、ユーザーフォーム名だけ変えてインポートした方が早い
>>624
論理演算かループで
0628デフォルトの名無しさん
2011/06/27(月) 01:22:08.21といったエラーが出ることについて質問があります。
Dim thisBook As Workbook
Set thisBook = ThisWorkbook
Set Workbook = Workbooks.Open(thisBook.Path & "\test.xlsx")
ThisWorkbook.Activate
中略
Workbook.Worksheets("Sheet1").Cells(1, 1).Value = ID
というようにこれだと1回目の書き込みは上手く行きますが
2回目以降が上記のエラーが出て上手くいきません。
http://www.excel.studio-kazu.jp/kw/20071007202040.html
ここを参考に
If flg = False Then の下にブックが開いていない場合の処理として開くように
Set Workbook = Workbooks.Open(thisBook.Path & "\test.xlsx")
と書いてみたのですが駄目でした。
どこが悪いのか教えて頂けると非常に助かります。よろしくお願いします。
0629デフォルトの名無しさん
2011/06/27(月) 05:57:42.37閉じずに開くばかりじゃ、エラーも当然だろw
2回目にまた開くなら、1回目が終わったところできちんと閉じる
1回目が終わっても閉じないなら、2回目は新たに開くのではなく
既に開かれているものを利用する
そんな当たり前のことをちゃんとやれば問題ないと思うが
0630デフォルトの名無しさん
2011/06/27(月) 11:24:28.95エクセルのバージョン(2010とか2000とか)を調べる方法を教えてください お願いします
0631デフォルトの名無しさん
2011/06/27(月) 11:43:07.350632631
2011/06/27(月) 11:46:34.092010は持ってないから知らん
sVer = Application.Version
Select Case sVer
Case "12.0"
MsgBox "Excel2007"
Case "11.0"
MsgBox "Excel2003"
Case "10.0"
MsgBox "Excel2002"
Case "9.0"
MsgBox "Excel2000"
Case "8.0a"
MsgBox "Excel97 SR-1"
Case "8.0"
MsgBox "Excel97"
Case "7.0"
MsgBox "Excel95"
Case Else
MsgBox "不明"
End Select
0633デフォルトの名無しさん
2011/06/27(月) 12:20:10.642chに書くのもGoogleの検索窓にキーワード書くのも手間は変わらんだろ?
0634デフォルトの名無しさん
2011/06/27(月) 12:22:19.720635デフォルトの名無しさん
2011/06/27(月) 19:46:29.94「'Visible' メソッドは失敗しました」と出るのですが、原因が判りません
表示したシートに対して Worksheet.Visible = False は動きます
環境はWin7、Excel2003です
よろしくお願いします
0636デフォルトの名無しさん
2011/06/27(月) 19:56:23.910637デフォルトの名無しさん
2011/06/27(月) 20:08:48.59Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("aaa")
ws.Visible = True
:
ws.Visible = False
0638デフォルトの名無しさん
2011/06/27(月) 20:36:20.98Excel2000だと、自動計算か何かの設定によってVisibleが失敗するってバグがあった気がする
2003はどうかなあ
変数wsがどっかで変更されてない?
とりあえずテスト用のプロシージャを作って最小限のコードで試してみ
Sub 表示テスト()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("aaa")
ws.Visible = False
ws.Visible = True
End Sub
0639デフォルトの名無しさん
2011/06/27(月) 21:05:56.79XP、Excel2000ではエラー出なかったです
今Excel触れないので後日テスト用コードを試してみようと思います
0640デフォルトの名無しさん
2011/06/27(月) 22:09:04.34と、上のような足し算等をCellsを使ってやりたいのですが
Cells(1, 1).Formula = "=SUM(Cells(1, 2):Cells(1, 3))"
と書いても駄目で、他にも試してみましたが上手くいきませんでした。
どのように書けばよろしいでしょうか?
よろしくお願いいたします。
0641デフォルトの名無しさん
2011/06/27(月) 23:24:08.01Cells(1, 1).Formula = "=SUM(" & Cells(1, 2).Address(0, 0) & ":" & Cells(1, 3).Address(0, 0) & ")"
0642デフォルトの名無しさん
2011/06/27(月) 23:25:42.26訂正。>>641だとSUM(B1:C1)になる
Cells(1, 1).Formula = "=SUM(" & Cells(2, 1).Address(0, 0) & ":" & Cells(3, 1).Address(0, 0) & ")"
0643640
2011/06/28(火) 00:20:40.00ありがとうございます。
Address(0, 0)と書くとは全くしりませんでした。
勉強しておきます。
ありがとうございました。
0644デフォルトの名無しさん
2011/07/02(土) 09:12:51.830645デフォルトの名無しさん
2011/07/02(土) 09:33:55.55階層を持つ様なものを生成させる場合でも、なるべく避けるな。
0646デフォルトの名無しさん
2011/07/02(土) 12:16:24.74For Each r In Range("A1").Value
Debug.Print r
Next
↑で1行目でエラーが発生するのは分かるのですが、
For Each r In Range("A1")
Debug.Print r
Next
↑のようにValueプロパティを省略した場合に、
エラーが発生しない理由が分かりません。
Rangeでプロパティを省略した場合は、
デフォルトであるValueプロパティが選択されると思っていたのですが、
何か別のプロパティが選択されているのでしょうか?
0647デフォルトの名無しさん
2011/07/02(土) 13:45:02.52の Range("A1")
は Valueプロパティ(又は他のプロパティ) が省略されたものではなく
Rangeオブジェクト(が返される)だから
0648デフォルトの名無しさん
2011/07/02(土) 14:52:05.30バージョンによってヘルプの記載もよくわからない状態になってるんだが
すくなくとも、2007のヘルプで Range.Cells プロパティ を見てみると
>Item プロパティは、Range オブジェクトに対する既定のプロパティであるため
と書いてある
オブジェクトブラウザで確認するとホントは_Defailtっていう隠しプロパティだったいする
で、こいつが場合によってItem(=Cells)のようにふるまったりValueのようにふるまったりする
なので、この場合は
For Each r In Range("A1").Cells と同じ意味
明示的にこう書く方が解りやすくて俺は好きだ
まあ、あんまりデフォルトプロパティを使うのはよくない
0649デフォルトの名無しさん
2011/07/02(土) 15:11:21.83VBAもやがて.NETに移行するのかも知れんし
0650デフォルトの名無しさん
2011/07/02(土) 16:09:28.63C#Aとかになって、今のモジュールやクラスモジュールごとにモジュールを分けるんじゃなくて、
名前空間ごとにファイルを分けたり、継承だけじゃなく、ポリモーフィズム効かせられたり、
ジェネリックやデリゲートやラムダ式とか使えれば最高なんだけどね。
もっとも、今までのVBAの資産があるから中々難しいだろうけどね。
0651デフォルトの名無しさん
2011/07/02(土) 18:56:05.91つ EXCEL-DNA
0652デフォルトの名無しさん
2011/07/02(土) 21:13:58.22だからファイルが分かれるなら余りうま味が無いって。
VSからdllファイル作った方が早い。入力補完も効くし。
0653デフォルトの名無しさん
2011/07/03(日) 00:26:18.34アドイン化した後のファイルの配布の管理が面倒だけど。
0654デフォルトの名無しさん
2011/07/03(日) 07:20:43.64>むしろデータとアルゴリズムの分離って意味ではファイルが分かれた方が良くね?
それはどんなシステムとして使うかによりけりだけど、
ファイルを分割して各機能を分けるくらい大掛かりなものなら
データはAccessやSqlServer、Olacleなどで持って、ロジック部は.NetFrameworkやJavaとかで作成して、
出力物としてExcelを使う様にした方がそれぞれの長所を活かせる。
そうなると、基本ロジック部は.NetFrameWorkやJavaとかで扱うことになるから、
益々Excel-DNAとやらの出番は無くなることになると思うよ。
0655デフォルトの名無しさん
2011/07/04(月) 10:30:14.23VBAに来てナンジャコリャーって思うのが
「コロンイコール(:=)」これ
イコールとどう違うの?
0656デフォルトの名無しさん
2011/07/04(月) 10:56:04.89dotnetでもあるだろ
0657デフォルトの名無しさん
2011/07/04(月) 11:36:15.90>益々Excel-DNAとやらの出番は無くなることになると思うよ。
試しもしないで必死に避難してるの?
まあ、それはさておき、
VSが使える > ファイルが分割される
.NETが使える > ファイルが分割される
って言う人もいるだろうよ。
俺はVBA資産が多いのでいきなりは移れないけど、面白い
アイデアだと思うよ。
0658デフォルトの名無しさん
2011/07/04(月) 12:18:41.51ソリューションファイルとかbinフォルダが生成されるとかだと、エクセルやアクセスが単体で動作出来なくなるじゃないですか、やだー!
いずれdotnetに移行するとは思うけど、VSからリリースされ、かつオフィスソフト単体で製造出来るVBA.NETになると思いたい
相互開発可能な形で、モジュールインポート見たいにプロジェクトに組み込まれる方式ににていただきたい
0659デフォルトの名無しさん
2011/07/04(月) 12:51:13.43避難してどうする。
ファイルが分かれるってメリット大じゃん。
あの糞使いにくいVisual Basic Editorわなくて済むんだから。
一旦Visualstudio使い始めるとVisual Basic Editorは苦痛でしかないよ。
0660デフォルトの名無しさん
2011/07/04(月) 13:07:11.96わざわざ手打ちしてるのに勝手にインテリセンスに修正したり、インテリセンスにあるのに別候補に書き換えたり
機能を個別に設定出来ないし
まじでストレス溜まる
0661デフォルトの名無しさん
2011/07/04(月) 19:01:41.43フォーム上に貼りつけたボタンに付いては例えば
xxbtn.Enabled=True
xxbtn.Enabled=False
みたい有効・無効を設定できるけど
シート上に貼りつけたボタンに付いては
有効・無効を設定できますか?それ以前にそのボタン名をどうやって
取得できるのかってのもあるんですけど。。。
0662デフォルトの名無しさん
2011/07/04(月) 20:44:12.54だからそうなるんなら、最初からVS使えって話。
VS上で.NetFrameWorkの言語から
EXCELを操作すればいい。
0663デフォルトの名無しさん
2011/07/05(火) 10:30:21.42もう一回だけ言うけど、試してから文句言ったら?
VisualstudioからEXCEL使おうとすると、普通はあのめんどくさいCOM経由で
アクセスする必要があるだろ?EXCEL-DNAなら.NETの機能を使用しつつ、
COM経由のアクセスの面倒さを回避できるんだよ。
豊富な.NETの機能もつまみ食いできるしな。
試してから気にくわなければ、使わなければ良いだけだと思うけど。
0664デフォルトの名無しさん
2011/07/05(火) 23:25:31.30どうみても試す価値なしだと思うので、俺には不要。
0665デフォルトの名無しさん
2011/07/06(水) 00:16:45.31C#はデフォルトプロパティの省略ができないだけでなく、パラメタの規定値の設定ができない
ExcelをCOMオブジェクト経由で呼び出すのは非常に面倒、というか冗長
Type.Missingの嵐になる
分からないなら、お前さんのExcelVBA上で、パラメタの省略を一切せずに全てカンマを入れてみろ
0666デフォルトの名無しさん
2011/07/06(水) 00:27:50.43大して人柱にも精査されていない
ひょっとしたらウイルスが仕込まれているかもしれない様なのを手放しで入れるのは嫌だな。
0667デフォルトの名無しさん
2011/07/06(水) 07:42:25.554.0以降ならそんなこともないんじゃなかったっけ?
0668665
2011/07/06(水) 07:56:59.76RCWのこと?4.x系で書いたことないからよく知らんのだけど
確かにオプションで引数、名前付き引数が追加されたようだね
COM資産は未だに影響が大きいようだ
でも大体Excelのバージョンは決めうちできないから遅延バインディングで
書くことになるだろうし、リフレクションを通さなくちゃいけなかったりと割と面倒
VBだともうちょい楽に書けるようだけど
0669デフォルトの名無しさん
2011/07/06(水) 11:46:25.28この御仁たぶんC#もまともに使ったこと無いでしょ。
相手するだけ無駄だと思うよ。
0670デフォルトの名無しさん
2011/07/06(水) 13:46:21.72まず、ここ読んでね。
http://supermab.com/wp/%E3%81%AA%E3%81%9C-excel-dna-%E3%81%AA%E3%81%AE%E3%81%8B%EF%BC%9F/
0671661
2011/07/06(水) 14:59:21.710672デフォルトの名無しさん
2011/07/06(水) 15:45:34.74押すたびに座標をずらして図を表示させたいのですがボタンの判定をifの条件式
に入れる方法ってありますか?
0673デフォルトの名無しさん
2011/07/06(水) 16:22:57.35質問ならならあげとけよ
Sheet1.Shapes("Button 1").ControlFormat.Enabled = False
Sheet1.CommandButton1.Enabled = False
とか
>>672
ボタンの判定をifの条件式に入れるってどういう意味だ?
普通はボタンを押してからコードで判定すると思うんだが
0674デフォルトの名無しさん
2011/07/06(水) 16:35:15.41ボタンを押すたびに座標に数値をプラスしていく感じかとおもって
if ボタンが押される then 座標に値を足す
みたいにできないかと思いまして
0675デフォルトの名無しさん
2011/07/06(水) 21:03:31.39だったらAPI使えば出来るよ。スレチだけど。
0676デフォルトの名無しさん
2011/07/06(水) 23:14:11.08ボタンを押したら、シェイプを(ずらして)表示させるんだろ?
つまり、ボタンを押した処理の中で判断すればいいのでは
イベントとかよくわかってないレベルの人か?
0677デフォルトの名無しさん
2011/07/06(水) 23:38:20.630678デフォルトの名無しさん
2011/07/06(水) 23:46:03.09その行の他の列のセル内容を転記するかどうかを決めさせたくて、FindやIfを使えば簡単に書けそうだと思って
朝からこの時間まで格闘してましたが、できませんでした・・・
A B C D
1○○
2○×
3×○
4××
5○○
6×○
7××
8○×
単純化するとこうなっていて(行の多さはファイルによって変動し、常に8行とは限らない。ただしA〜の横方向の入力内容は常に固定)。
そして、Cells(i, A) と Cells(i, B)の組み合わせが
AB=○○ → 何もしない
AB=○× → 何もしない
AB=×○ → その列の(C,D...)はコピー対象
AB=×× → 何もしない
そしてまずCells(i, A) と Cells(i, B)の組み合わせが○×の行が一つもないファイルは閉じて
一つでもあるファイルは、個々の行をコピーするようにしたいのですが・・・・簡単に見えて全くできませんでした
「○×」の行が一つもないかどうかをフラグで返す方法だけでも宜しいので、ヒントなり戴けないでしょうか?
0679デフォルトの名無しさん
2011/07/07(木) 00:07:49.13いまひとつ何がしたいのか分からないんだけど
普通にこんな感じで駄目ですか?
ファイルを開いて
フラグをOFFに
(行について繰り返し開始)
もしこの行が空白なら行についての繰り返しを抜ける
もしこの行のA列が○ かつ B列が×ならフラグをONにする
行をひとつ進める
(ここまで行についての繰り返し)
もしフラグがONならコピー処理をする
ファイルを閉じる
0680デフォルトの名無しさん
2011/07/07(木) 00:30:35.64'指定範囲で○×の行を探す あればTrue なければFalse
Function checkOX(CheckRange As Range) As Boolean
Dim i As Long
checkOX = False
If CheckRange.Columns.Count <> 2 Then
MsgBox "2列を指定してください"
Exit Function
End If
For i = 1 To CheckRange.Rows.Count
If CheckRange.Cells(i, 1).Value = "○" And CheckRange.Cells(i, 2).Value = "×" Then
checkOX = True
Exit Function
End If
Next
End Function
0681デフォルトの名無しさん
2011/07/07(木) 00:40:23.24ヒント:imp演算子
0682デフォルトの名無しさん
2011/07/07(木) 01:10:44.50長いことBASIC使ってるけど、そんな演算子初めて知ったわ
一つ勉強になった
ただ、.NETで廃止されてるらしいし、この先使うことない知識だろうけど
0683デフォルトの名無しさん
2011/07/07(木) 01:25:25.68あるフォルダにあるすべてのブックの各シートを一枚のシートに貼り付けなおすマクロを作っています。
ただExcel2003では問題無く動くのですが、
Excel2007で互換モードまたはxlsmで保存しなおして動かすと
最初は早く処理されているのですがだんだん処理が遅くなっていきます。
(Application.ScreenUpdatingはTrueのままですがFalseでも変わりありません)
また、処理が遅いときにExcelの画面外をクリックすると(Excelを非アクティブにすると)
途端に処理が高速に戻ります。
同じ経験をした方等、対処方法わかるかたはいらっしゃいますでしょうか?
0684デフォルトの名無しさん
2011/07/07(木) 03:48:59.52途中でApplication.WorksheetFunction.Sumなど使いたいとき
バリアントの特定領域をRange型に変換するスマートな方法教えてください。
0685デフォルトの名無しさん
2011/07/07(木) 05:22:58.04ホントにセルがバリアント型変数に入ってるなら、その変数はすでにRange型だが?
Rangeに対してオフセットとりたいならRange.OffsetプロパティとかRange.Rangeプロパティ使え
Set c1 = Range("B2:C11")
Set c2 = c1.Range("B1:B10")
これでc2はC2:C10のRange型だぞ
だがまあ多分そういうことじゃないんだろうけど
バリアントの変数に入ってるのが値の配列なら
実際のセル(Range)に代入するしかないんじゃね
VBAで配列の特定範囲を切り出すスマートな方法はしらね
先頭からならReDim Preserveってのもなくはないが、もともと配列は
途中でサイズ変更するような用途向けではない
まあ必要なら関数1個つくっとけば良いだけだし
0686デフォルトの名無しさん
2011/07/07(木) 05:56:44.44Set c1 = Range("B2:C11")
Set c2 = c1.Range("C2:C10")
↑これやってみましたけど出来ませんでした。
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets("Sheet1")
Dim cB As Variant
cB = sh.Range(sh.Cells(1, 1), sh.Cells(10000, 20))
Dim rng As Range
Set rng = cB.Range(cB.Cells(1, 10), cB.Cells(10000, 10)) ←イメージとしては、こんな風にRange型に入れたいです
0687デフォルトの名無しさん
2011/07/07(木) 06:18:14.88すいません出来ましたSetが付いてないだけでした
ありがとうございました!
0688デフォルトの名無しさん
2011/07/07(木) 07:07:50.04VBAを使わない。
全部Excel側でやる。
0689678
2011/07/07(木) 07:22:58.09助かりました
0690デフォルトの名無しさん
2011/07/07(木) 23:00:11.25> C#はデフォルトプロパティの省略ができないだけでなく、
> パラメタの規定値の設定ができない
C# 4.0 も知らない情弱か...、かわいそうになってきたよ。
>>668
よく知らないなら、ROM って1人で Excel-DNA とやらを使ってろよ。
また恥かくだけだぞ。
>>669
流石にこれは恥ずかしすぎ。
誰からも相手されてないんだろうな (w
0691デフォルトの名無しさん
2011/07/08(金) 00:08:11.900692デフォルトの名無しさん
2011/07/08(金) 00:18:16.680693デフォルトの名無しさん
2011/07/08(金) 10:24:44.57C列はそのまま放置したい
っていう時に
For s = 1 To 10
Sheet1.Range("A" & s) = 0 'A1からA10までを初期化
Sheet1.Range("B" & s) = 0 'B1からB10までを初期化
Sheet1.Range("D" & s) = 0 'D1からC10までを初期化
Next s
こうやってるんだけど、他に方法ある?
0694デフォルトの名無しさん
2011/07/08(金) 10:53:33.560695デフォルトの名無しさん
2011/07/08(金) 10:55:26.220696デフォルトの名無しさん
2011/07/08(金) 10:56:50.97ループで1行ずつ入れずに
(A1:B10) = 0
みたいなことをやりたい
0697デフォルトの名無しさん
2011/07/08(金) 11:17:43.63selection.formulaR1C1=゙0゙
0698デフォルトの名無しさん
2011/07/08(金) 11:49:43.55a:d列に0入れる
c列を戻す
とか
0699デフォルトの名無しさん
2011/07/08(金) 11:49:55.09Selection.FormulaR1C1 = 0
Sheet1.Range("D1:D10").Select
Selection.FormulaR1C1 = 0
で、できました
ありがとうございます。
どうでもいいけど
「で、できました」って
「こうするとできました」じゃなくて、
驚愕みたいな「う、うわっ」みたいに読めるよね
0700デフォルトの名無しさん
2011/07/08(金) 12:38:47.57693よりコード悪化してるぞ
まだ
Range("A1:B10").Value = 0
Range("D1:D10").Value = 0
のほうがマシ
0701デフォルトの名無しさん
2011/07/08(金) 12:54:36.030702デフォルトの名無しさん
2011/07/08(金) 14:45:52.41仕様に汎用性がないんだよ
>>693読んで自分でコード書いてみろ
0703デフォルトの名無しさん
2011/07/08(金) 15:29:19.08そういうことにしないと否定できないんだろ。察してやれ。
0704デフォルトの名無しさん
2011/07/08(金) 16:27:03.67本当だ、こっちの方が早い
実際のプログラムは4列x60行で
最初のループだと置換が終わる処理まで約6秒かかっていたのが
>>699で約2秒
そのコードにしたら約1秒で終わった。
0705デフォルトの名無しさん
2011/07/08(金) 16:49:15.410706デフォルトの名無しさん
2011/07/08(金) 16:52:40.89A:1に0 A:2に0 A:3に・・・って60までループするより
A:1からA:60まで全部0!!(どかーん)
のほうが圧倒的に速いのは確定的に明らか
0707デフォルトの名無しさん
2011/07/08(金) 19:52:44.00.NETのようなアウトプロセスでのアクセスだと顕著に差が出るよね
0708デフォルトの名無しさん
2011/07/09(土) 12:34:25.780709デフォルトの名無しさん
2011/07/09(土) 14:16:54.34よく見かけるのはこんな感じ
Dim Shape1 As Object
Set Shape1 = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 100)
Shape1.Select (True)
Selection.Characters.Text = "hello"
0710デフォルトの名無しさん
2011/07/09(土) 17:20:44.99Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Interior
Select Case Target.Left(Target.Text, 1) 'ここがわからない
Case "1"
.ColorIndex = 3
Case "2"
.ColorIndex = 5
Case Else
.ColorIndex = xlNone
End Select
End With
End Sub
あとできればRange("B2:Y35")の間だけこの色の変更が効くようにしたいのですがそこも教えて欲しいです
0711デフォルトの名無しさん
2011/07/09(土) 17:21:38.14Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Interior
Select Case Target.Left(Target.Text, 1) 'ここがわからない
Case "1"
.ColorIndex = 3
Case "2"
.ColorIndex = 5
Case Else
.ColorIndex = xlNone
End Select
End With
End Sub
0712デフォルトの名無しさん
2011/07/09(土) 18:22:08.14Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("B2:Y35")) Is Nothing Then Exit Sub
With Target.Interior
Select Case Left(Target.Value, 1)
Case "1"
.ColorIndex = 3
Case "2"
.ColorIndex = 5
Case Else
.ColorIndex = xlNone
End Select
End With
End Sub
0713デフォルトの名無しさん
2011/07/09(土) 20:33:06.03できましたありがとうございます
0714デフォルトの名無しさん
2011/07/09(土) 21:11:21.20xにaを返すためにはcを何にしたらいいんですか
0715デフォルトの名無しさん
2011/07/09(土) 21:19:51.450716デフォルトの名無しさん
2011/07/10(日) 09:00:57.77701じゃないけど、汎用性持たせるとこんな感じか?
Sub Test()
Call NumericalInitialize([A1:B10,D1:D10])
End Sub
Sub NumericalInitialize(IniRange As Range)
IniRange.Value = 0
End Sub
あるいは
Sub Test()
Call InputValue([A1:B10,D1:D10], 0)
End Sub
Sub InputValue(InputRange As Range, Optional Value As Variant = Empty)
InputRange.Value = Value
End Sub
とか。
でも、
[A1:B10,D1:D10].Value = 0
で良い気がする。
Range("A1:B10").Value = 0
Range("D1:D10").Value = 0
みたいに2行で書かざるを得ないものを、ParamArray使った自作関数で、
1行書き出来るようにするとかならまだしも、元から1行書き出来る上に、
関数化しない方が処理の明示性が高いくらいなので、関数化の旨味も少ない。
0717デフォルトの名無しさん
2011/07/10(日) 22:38:57.11データ収集と解析以外あんまり使い道内容に思うんだが
0718デフォルトの名無しさん
2011/07/10(日) 23:04:45.74分からずに困っています。
壁の吸音力の計算の下からが、全然分かりません。
どなたか、教えてください。
Excel file
ttp://www1.axfc.net/uploader/Sc/so/253823
マクロ
ttp://www1.axfc.net/uploader/Sc/so/253831
キーワードは「kadai」です。
よろしくおねがいします。
0719デフォルトの名無しさん
2011/07/10(日) 23:45:16.05帳票作成は?
昔さんざんやらされたけど w
0720デフォルトの名無しさん
2011/07/10(日) 23:48:51.00汎用的なものは作れんでしょうに
0721デフォルトの名無しさん
2011/07/11(月) 00:56:39.90スレ違い
学校の課題であるというのもスレ違い要素の一つだが、何よりExcelVBAとは関係ない質問だ
単に言語選択としてたまたまVBA使ってるだけで、C#でもVB6でも出来るような類の処理は
全てスレ違いなのでそこんところよろしく
ここはVBAでExcelのブックやシート、標準オブジェクト類を操作する話以外はスレ違いだから(>>2参照)
0722デフォルトの名無しさん
2011/07/11(月) 01:02:12.23御指摘ありがとうございます。
すみませんでした。
0723デフォルトの名無しさん
2011/07/11(月) 01:31:42.69やってみた
http://www1.axfc.net/uploader/File/so/65864
pass:kadai
式はググって使った 0.162*容積/-総面積*loge(1-平均吸音率)
で試してみたら満席のほうが長くなったぜ><
たぶん違うから自分で直してね!
wav生成のほうは離散フーリエがわからんからやってないぜ
0724デフォルトの名無しさん
2011/07/11(月) 07:40:26.84WEBクエリでページをシートに読み込んでるんですが、続けてるとアクセス出来なくなります。
WEBクエリのアクセスをブラウザからに見せる事は出来ますか?ユーザーエージェントを書き変えて送信とか。
別に攻撃しようとかじゃ無いんです。1秒に1回くらいアクセス出来ればいいです。
0725724
2011/07/11(月) 07:44:21.18WEBクエリにどう応用していいか分かりませんでした。
VBA始めてそんなに長くないので、あんまり詳しくないです。
0726デフォルトの名無しさん
2011/07/11(月) 09:57:44.86ありがとうございます!!
0727デフォルトの名無しさん
2011/07/12(火) 17:04:27.701秒に1回で逮捕された奴いるの知らないの?まじで気をつけた方が良いよ。
相手サーバがバグとも言える「仕様」でエラー頻発で逮捕。
岡崎図書館事件
http://librahack.jp/
0728デフォルトの名無しさん
2011/07/12(火) 19:04:09.39館長の基地外発言が話をヤヤこしくしたあれか
0729デフォルトの名無しさん
2011/07/12(火) 19:57:31.140730デフォルトの名無しさん
2011/07/12(火) 21:45:56.66前例があるからこそ、今後はあんなバカな逮捕劇は起こらんのじゃないか?
0731デフォルトの名無しさん
2011/07/13(水) 01:09:34.47楽観的だなぁ・・・日本という国は技術がある者ほど割を食うIT後進国なのに・・・
Winny作ったやつは逮捕されても当然としてもその罪状が幇助罪だったから、開発者はみんな明日は事故的に火の粉をかぶると怯えたもんだ
0732デフォルトの名無しさん
2011/07/13(水) 01:52:55.34実際には、ふ〜んて感じだった。
blogでDQN行為を自慢して炎上するようなもんだ。
0733デフォルトの名無しさん
2011/07/13(水) 02:47:15.39職業プログラマやってる友人やその仲間の話なんだけど
0734デフォルトの名無しさん
2011/07/13(水) 07:22:33.01巻き添え逮捕に怯えていたとかそんなところだったりしてw
0735724
2011/07/13(水) 08:50:40.24そんな事件あったって知りませんでした。やっぱ相手サーバが拒否してる事はやっちゃダメか・・・
春ごろまではOKだったのに、リニューアルされたら急にアクセス規制がきつくなりました。
ソニーエンタメの影響かなあ
とりあえず串とwait関数で気長にやります。
0736デフォルトの名無しさん
2011/07/13(水) 22:23:06.60注文書も納品書もできるし、棚卸しだって効率的にできる。
極論すれば工場の経営や管理ができるんだから汎用的
だと思うよ。
0737デフォルトの名無しさん
2011/07/14(木) 01:07:25.51だーかーらー
プログラマとして物作りを阻害する警察の動きに不安を感じたんだってば
>>727のリンク先読んでから出直せよ
そんなことじゃ見せかけの民主主義かつ、中国共産党による言論統制、政府を守るためなら国民は死んでもいいって社会が日本でも永遠に続く
原子力発電のためなら国民やその子供が死んでもお構いなし、旧ソ連以下の日本のまんまだ
0738デフォルトの名無しさん
2011/07/14(木) 07:22:12.930739デフォルトの名無しさん
2011/07/14(木) 08:17:14.43二個の図を同時に生成する時に、その二つをグループ化させた状態で生成する事ってできるでしょうか?
0740デフォルトの名無しさん
2011/07/14(木) 18:34:58.060741デフォルトの名無しさん
2011/07/14(木) 19:07:26.212つ作成してからグループ化?
0742デフォルトの名無しさん
2011/07/15(金) 09:57:06.25図1個目作成
図2個目作成
図1と図2をグループ化
終わり
これで同時生成かつグループ化した状態で出現したように見える
0743デフォルトの名無しさん
2011/07/15(金) 11:56:58.050744デフォルトの名無しさん
2011/07/15(金) 12:10:18.830745デフォルトの名無しさん
2011/07/15(金) 23:10:53.46折れ線グラフを見るときに便利なんだが。
0746デフォルトの名無しさん
2011/07/16(土) 00:09:54.01自分でここまで調べたけけど、ここからが分からない
と言った感じが全く見受けられない。
0747デフォルトの名無しさん
2011/07/16(土) 06:36:34.900748デフォルトの名無しさん
2011/07/16(土) 07:52:38.71ブックを閉じられないようにするにはWorkbook_BeforeCloseでCancel=Trueですよな?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim res As Variant
MsgBox "閉じる?", vbYesNo
If res = vbNo Then
Cancel = True
End If
End Sub
として、閉じるときに「閉じる?」のメッセージボックスは出てくるんだけど"いいえ"を選択しても閉じられてしまうんですけど。
0749デフォルトの名無しさん
2011/07/16(土) 08:46:05.63> 指定したテキストファイルの行数を返してくれる1行のステキ関数ってない?
split まあ帰ってくるのは数字ではないが・・・
0750デフォルトの名無しさん
2011/07/16(土) 09:15:48.78res に何も入ってないんでは?
以下サンプル
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If vbNo = MsgBox("閉じる?", vbYesNo) Then
Cancel = True
End If
End Sub
0751デフォルトの名無しさん
2011/07/16(土) 09:39:25.07あっ〜そうだ!w
すんませんでしたぁm(_ _)m
0752デフォルトの名無しさん
2011/07/16(土) 10:20:47.55ステキ関数はないけど1行で書くのは可能
Debug.Print CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\test.txt", 8).Line - 1
ただしファイルの末尾が改行コードじゃなかった場合は1行少ない数値が取得されるんで、
そのあたりをちゃんと処理するには面倒なコードが必要
0753デフォルトの名無しさん
2011/07/16(土) 20:07:47.720754初心者
2011/07/17(日) 08:09:27.83sheet1 に A1から
A B C
1 1 C b
2 3 A a
3 1 B a
4行目以降も各列にランダムに数字、文字がつづきます。
以前VBAプログラムをおしえていただいたのですが、途中、
a=range("A1").CurrentRegion.resize(,3).select とありました。
これの resize(,3) の意味が解りません。
上のプログラムの意味を教えてください。お願いします。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
resize(,3) は resize(1,3) と同じ意味のはずだから、>754の結果は
A1:C1の範囲(1行×3列)が選択されるはず
0756初心者
2011/07/17(日) 09:34:21.06resize(1,3)とおなじ意味だったのですか。ありがとうございます。
もう1つ聞きたいことがあるのですがすみません、よろしくおねがいします。
さっきの
a=range("A1").CurrentRegion.resize(,3).select
の下に、
for z= 1 to ubound(a,1)-1
とあるのですが ubound(a,1)-1 の意味がわかりません。
下記サイトでuboundを調べたのですが、、、よくわかりません。
http://msdn.microsoft.com/ja-jp/library/cc437658(v=vs.71).aspx
すみませんが少し教えてください。お願いします。
0757755
2011/07/17(日) 10:03:01.80試してみたら違ってました。ゴメンナサイ
当該範囲の行×3列 ということでした。(1行ではありません!)
range("A1").CurrentRegion. っていうのは>755で示したページの説明にもあるように
A1セルで [Ctrl]を押しながら[*}(ノートPCなら[Shift]を押しながら[* : け])を押した範囲
なので、このときに5行×5列が選択されたとしたら、5行×3列に選択し直される、ということです。
ちゃんと試してから書き込まないとダメですね、反省
0758デフォルトの名無しさん
2011/07/17(日) 10:29:49.96a=range("A1").CurrentRegion.resize(,3).select って、ほんとですか?
a=range("A1").CurrentRegion.resize(,3) までならわかるけど(選択したセル範囲を配列に入れる)
ためしに
a = Range("A1").CurrentRegion.Resize(, 3).Select
MsgBox (UBound(a, 1))
だとエラー(実行時エラー13:型が一致しません)になりました。
a = Range("A1").CurrentRegion.Resize(, 3)
MsgBox (UBound(a, 1))
ならば選択セル範囲の行数が表示されました。
差し支えなければ当該マクロの関係する部分を示してくれませんか?
0759デフォルトの名無しさん
2011/07/17(日) 10:37:52.96ある莫大なテキスト文があります。これをコピーしExcelのシートsheet1にはりつけました。
いくつかの行にある文字 例えば 「金額は、~円」という文字か含まれていたとします。
質問ですが、~に書かれている数字をすべて拾い上げSHEET2にはりつけていく方法
おしえていただきたいのですが。長文てすみません。
宜しくお願いします。
val関数で可能です。
http://officetanaka.net/excel/vba/function/Val.htm
0761デフォルトの名無しさん
2011/07/17(日) 10:54:21.90ありがとうございます。
サンプルの678は、表示できないですか?
0762760
2011/07/17(日) 11:01:38.11Sub Sample()
Dim str As String
str = " 123.45+678"
MsgBox Val(str) '123.45を表示します ←
str = "1,000"
MsgBox Val(str) '1を表示します
End Sub
のことですね。 +記号 で一連の数字が途切れているためです。
小数点や3桁毎の区切りはつながった数字とみなします。
0763760
2011/07/17(日) 11:04:29.42アレ?
str = "1,000"
MsgBox Val(str) '1を表示します
3桁毎のカンマはダメなのか。
0764初心者
2011/07/17(日) 11:36:32.72すみません、a=range("A1").CurrentRegion.resize(,3).select ではなく
a=range("A1").CurrentRegion.resize(,3).value でした。 ほんとうにすみません。
msgboxをつかってこんな確認もできるのですね。勉強になりました。
0765デフォルトの名無しさん
2011/07/17(日) 11:55:49.30findで検索し、findnextで次を検索します。
最後まで行ってから最初にもどらない方法おしえてもらいませんか
0766デフォルトの名無しさん
2011/07/17(日) 12:03:44.55"金額は、"でSplit、For 〜 Uboundで回してVal
Forは1からにすること
0767デフォルトの名無しさん
2011/07/17(日) 12:04:20.66教科書通りに書けば戻りません
むしろ最初に戻す方が手間がかかる
0768デフォルトの名無しさん
2011/07/17(日) 12:04:26.27http://officetanaka.net/excel/vba/tips/tips123b.htm
0769デフォルトの名無しさん
2011/07/17(日) 15:22:55.770770デフォルトの名無しさん
2011/07/18(月) 08:19:31.06これの、行列入れ替えたテキストファイル作りたいのですが、ExcelVBAではやはり不可能でしょうか?
0771デフォルトの名無しさん
2011/07/18(月) 08:26:58.63あるセルに長い文字列があります。
数字と文字が含まれています。数字のみを取得する方法はないですか。
valだと最初の数字のみの取得になります。
数字すべてを取得したい。
0772デフォルトの名無しさん
2011/07/18(月) 08:48:46.31一列取り込んで一行出力を繰り返すだけ。
>>771
RegExp使うのが一番手っ取り早い。でなければ、一文字ずつ走査していくしかないな。
数字以外の文字を空白に変換→Splitで分割→数字の入っている要素のみ取り出す、とか
0773デフォルトの名無しさん
2011/07/18(月) 09:39:32.71ありがとうございます
でも文字列のみどうやって空白にできるのですか。
0774デフォルトの名無しさん
2011/07/18(月) 10:02:59.80For off = 1 To Len(s)
If Not Mid$(s, off, 1) Like "#" Then Mid$(s, off, 1) = " "
Next
大体こんな感じ?
0775デフォルトの名無しさん
2011/07/18(月) 12:30:26.91$がつくのとつかないのでは意味はどう変わるのでしょうか?
0776デフォルトの名無しさん
2011/07/18(月) 12:49:05.21受け側がString以外の時はVBAが型変換してくれるのだから、
$が付かない方を選んで不要なコストを追加する理由は無い、
って話が前に出ていた気がする。
ステートメントの方は忘れた。わざわざVariantで受け付けるとかあるのかなあ。
0777デフォルトの名無しさん
2011/07/18(月) 14:23:51.570778デフォルトの名無しさん
2011/07/18(月) 14:39:31.93http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html
任意の1文字の数字(0-9)を示します
0779778
2011/07/18(月) 14:42:17.11123.45 が 123 と 45 という別々の数字と見なされる。
0780デフォルトの名無しさん
2011/07/18(月) 14:53:44.81指数表記は流石に無いとしても、コンマ表記や符号等も考えられるし。
0781デフォルトの名無しさん
2011/07/18(月) 15:01:07.05もしそうだとしたら、前提条件をはっきり示してもらわないと。
「実は小数点やマイナス値もあるから〜」ってこと(条件後出し)だと回答をもらえませんよ。
0783デフォルトの名無しさん
2011/07/18(月) 15:12:38.15Midステートメントで$を付けるのは無意味。
0784デフォルトの名無しさん
2011/07/18(月) 15:17:20.83このときに自動で処理をしたいのですが、これに対応するイベントはあるんでしょうか?
無いとしたらイベント以外になにか方法はありますでしょうか?
0785デフォルトの名無しさん
2011/07/18(月) 15:24:28.86言われる通り、少数、負符号は考慮します。それ以外は無いです。
三桁おきのカンマもないです。文字列から数字のみを抽出したいです。
苦肉策として区切りコマンドを実行しマクロ記録する方針でかんがえてます。
もっとスマートにできないかなと思っで書き込みました。
0786デフォルトの名無しさん
2011/07/18(月) 17:02:56.463桁毎のカンマにも対応するには '← のところを変更してください。
Option Explicit
Dim sh_i As Excel.Worksheet, sh_o As Excel.Worksheet
Dim tate As Long, i As Integer, retsu As Integer
Dim str_i As String, flg As Boolean, flg_sv As Boolean
Dim wk As String, str_o As String, num_o As Double
Sub test()
Set sh_i = ActiveSheet: Set sh_o = Worksheets("Sheet2")
tate = 1: str_i = sh_i.Cells(tate, 1).Value
Do While (str_i <> "")
retsu = 1: flg = False
続く
0787デフォルトの名無しさん
2011/07/18(月) 17:05:05.34wk = Mid(str_i, i, 1): flg = (InStr(1, "0123456789.-", wk) > 0) '←
If i = 1 Then
str_o = wk: flg_sv = flg
Else
If flg = flg_sv Then
str_o = str_o & wk
Else
If flg_sv Then
sh_o.Cells(tate, retsu).Value = str_o
retsu = retsu + 1
End If
続く
End If
End If
Next i
If flg_sv Then
sh_o.Cells(tate, retsu).Value = str_o
End If
tate = tate + 1: str_i = sh_i.Cells(tate, 1).Value
Loop
Set sh_i = Nothing: Set sh_o = Nothing
End Sub 以上
0789786
2011/07/18(月) 17:11:38.07If flg_sv Then と、これに対応する End If をコメント化してみてください。
0790デフォルトの名無しさん
2011/07/18(月) 17:18:17.06http://www.dotup.org/uploda/www.dotup.org1802759.zip.html
解凍パス Excel 中身 testtest.xls
テキストボックスに入っている文字列に対して検索する処理を考えています
sample1では複数の検索対象文字列があっても選択されるのは見つかった最初の
語句のみなんで続けて次の対象文字列も選択させたいの(sample2)、ですが、、
ここで行き詰っています。
---------------------------------------------------------------------
検索用のボタンを押すことによって続けて検索させたいのですが、
Instr関数の部分でエラーになっています。
findpos = 1にすればエラーにはならないものの当たり前のことながらsample1
と変わらない動作になってしまいますし。
sample2においてどうすればいいか教えてください。m(_ _)m
0791デフォルトの名無しさん
2011/07/18(月) 17:36:01.39771です。ありがとうございました。
いただいたプログラムをサブルーチンに組込み、試してみようと思います。
文字列はどの変数に割り当てるのでしょうか。
結果はどの変数になるのでしょうか
0792786
2011/07/18(月) 17:50:15.73入力側の文字列は str_i に入れて先頭から一文字ずつ調べてます。
出力側は str_o に一文字ずつ連結していき、数字かどうかの判定結果が
変わる都度、それまでの str_o を出力側シートに書き込んでいます。
>790
findpos の値をどこかのセルに書き込んでおくのがわかりやすいと思う。
Private Sub UserForm_Initialize() の処理の中に「当該セルに 1 を設定」を
組み込んでおくだけでいいし。
0793786
2011/07/18(月) 18:12:26.12>786の num_o As double は不要でした。文字列の str_o をこれに
転記してから出力シートに書き込もうかと思って定義してたけど、
str_o を直接書き込んでも問題なかった。
0794デフォルトの名無しさん
2011/07/18(月) 19:28:31.68790です。もう少し考えてみます
後でまたするかもしれませんが、よろしくです。
0795デフォルトの名無しさん
2011/07/19(火) 12:33:37.91771です
何度もすみません
例えば、CELL(1.1)に数字を3つ含む文字列かあったとします。
CELL(1.10)CELL(1.11)CELL(1.12)に出力するにはどうすべきですか
0796デフォルトの名無しさん
2011/07/19(火) 12:40:20.97>>2
> ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
> コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
> ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
>
0797デフォルトの名無しさん
2011/07/19(火) 21:54:50.550798デフォルトの名無しさん
2011/07/19(火) 22:06:28.670799デフォルトの名無しさん
2011/07/19(火) 23:15:30.78この程度のことがわからない役立たずはレス付けるな
0800デフォルトの名無しさん
2011/07/19(火) 23:39:26.580801デフォルトの名無しさん
2011/07/19(火) 23:56:35.170802デフォルトの名無しさん
2011/07/20(水) 00:11:28.41そこじゃねえよ
>>771から続いてる流れが、結局どこを目指してるのかを聞かせてくれ
何をしたがっててどういう状況で果たしてどのような処理をしたいのだろうか
この程度のことがわからない役立たずはレス付けるな
0803デフォルトの名無しさん
2011/07/20(水) 02:40:21.350804デフォルトの名無しさん
2011/07/20(水) 05:24:13.30____
/ \
/ ⌒ ⌒ \ 何言ってんだこいつ
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ml j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
0805デフォルトの名無しさん
2011/07/20(水) 06:18:03.19とりあえず>>795は正規表現覚えたほうがいいんじゃね
CELL(1.1)はCells(1,1)だとして、マイナス記号と小数点も考慮すると
(俺も正規表現あんまり自信ないんだが)
Sub test()
Dim regEx, Matches, Match
Dim col As Integer
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "-?\d*\.?\d+"
regEx.Global = True
Set Matches = regEx.Execute(Cells(1, 1).Text)
For Each Match In Matches
Cells(1, 10 + col).Value = Match.Value
col = col + 1
Next
End Sub
でいけるんじゃね
とりあえずこれ理解するまで勉強してくれ
0806デフォルトの名無しさん
2011/07/20(水) 09:54:25.54各ページ内のメタタグを抽出したいです。
C列には「description」D列には「keywords」
を抽出するにはどうすれいいでしょうか?
初歩的な質問かもしれませんが、よろしくお願いします。
0807デフォルトの名無しさん
2011/07/20(水) 10:34:31.99お礼くらい言っとけよ
0808デフォルトの名無しさん
2011/07/20(水) 11:48:43.490809デフォルトの名無しさん
2011/07/20(水) 12:04:26.560810デフォルトの名無しさん
2011/07/20(水) 13:25:03.280811デフォルトの名無しさん
2011/07/20(水) 14:21:51.37希望とかいらないから
0812デフォルトの名無しさん
2011/07/20(水) 14:52:57.700813デフォルトの名無しさん
2011/07/20(水) 17:21:04.880814デフォルトの名無しさん
2011/07/20(水) 20:45:13.30771です。プログラム実行しました。
たいへん役に立ちそうです。ありがとうございました。
一つだけ気になった点。sheet1に、もし空白行があったらそこで
アウトプットがとまってしまうようです。この辺も改善できればお願いします。
0815デフォルトの名無しさん
2011/07/20(水) 20:49:10.63★1 OS:xppro Excelのバージョン:2003
任意の選択したセル(複数可)の行番号をコピー、その後、コピーした行番号をペースト
というのをショートカットキーを使う形でつくりたいと考えています。
詰まってるところは、�@行番号のコピー方法。(ROW関数を上手いこと使えばいいのかなと思っています)
�Aペーストの方法。(普通にCtrl+Vでも可能なのでしょうか?)
なにぶん初めてなもので、書き方もよくわかっていません。よろしければ初心者向けの参考サイトなども教えていただけないでしょうか?
0816デフォルトの名無しさん
2011/07/20(水) 20:55:12.00771です
見る暇もなく返信遅れたようです。
0817デフォルトの名無しさん
2011/07/20(水) 21:03:33.82ひとつの方法として
1. IEオブジェクトを生成し B列にあるURLでページを開く
2. ページを開いたIEオブジェクトからメタタグの情報を取得する
って感じかな?
0818デフォルトの名無しさん
2011/07/20(水) 23:45:22.40コピー、ペーストってのは、基本的にはクリップボードに対する情報のやりとりなので
�@コピー処理でクリップボードに値をセットしてあげれば、�A貼り付けは普通に行える
クリップボードに対する処理はググれば出てくる。簡単なサンプル書いてみた
Sub rownumberCopy()
Dim r, c
Dim s As String
Dim cb As New DataObject
Set r = Selection
If TypeName(r) <> "Range" Then
Exit Sub
End If
For Each c In r
s = s & CStr(c.Row) & vbCrLf
Next
cb.SetText s
cb.PutInClipboard
End Sub
選択範囲が複数列だったらどうするとかは考慮してない
VBA初心者なら、サイトよりなんか入門書を買う方がいいと思うが
ある程度使えるようになれば後はググれば大概なんとかなる
0819デフォルトの名無しさん
2011/07/21(木) 00:14:40.610820デフォルトの名無しさん
2011/07/21(木) 13:56:52.70>>817さん、そのやり方だと、ちょっと時間が掛りすぎてしまいませんか?
できれば、スマートに出来ればありがたいのですが・・・。
どなたか教えてください!お願いします!
0821デフォルトの名無しさん
2011/07/21(木) 15:02:36.08スマートで速い方法なんて無い。
0822817
2011/07/21(木) 15:15:50.64スマートにですか.....ふむ
スマートかどうか?だけど
実際自分が過去にやった事がある方法を紹介してみる
該当URLのHTMLファイルをダウンロード(APIの"URLDownload"なんかで)した後
VBAでテキストファイルとして読み込ませてしまう
あとは文字列検索(InStr関数とかMid関数とかとか駆使して)目的の情報をさがす
・HTMLファイルがShiftJIS以外で書かれていたら文字コード変換しないとダメだったりする
・実行時の見た目はスッキリするけど コードは複雑になるかも
0823817
2011/07/21(木) 15:24:32.28正 APIの"URLDownloadToFile"なんかで
0824デフォルトの名無しさん
2011/07/21(木) 16:59:13.56スマートと言うなら、Excelではなく、javascript使ったら?
コード変換もいらない
で、その結果Tableにでも出力してExcelに張り付ける
jquery メタタグ で検索かければ参考にはなると思う
板違いはゴメンだけど
0825817
2011/07/21(木) 18:29:49.12この種のWebページの情報取得 自動化は
相手サーパに負担をかける恐れがある事を承知しておいてね
実際 >>822 の開発時 コードがループしてしまい
相手サーバーから IPブロックされた事があるんで
(そん時は、たしか1週間ぐらいアクセスできなかった)
0826デフォルトの名無しさん
2011/07/21(木) 19:17:52.460827817
2011/07/21(木) 19:23:41.93自分の場合は、とある"海外のHサイト"を巡回する為に 作成した時のことなので
0828デフォルトの名無しさん
2011/07/21(木) 22:10:24.79accessで、DataGridを使ってデータを表示したいんですがやり方がわかりません。
DataGrid.value や DataGrid.Textにデータを入れようとすると行番号が不正ですというようなエラーが出ます。
何か設定が足りないようなんですが、なんかサンプルないでしょうか?
0829デフォルトの名無しさん
2011/07/21(木) 22:57:20.680830デフォルトの名無しさん
2011/07/21(木) 22:59:09.42>>2
0831デフォルトの名無しさん
2011/07/22(金) 13:12:49.86ちょっとくぐったら
件のお方 他質問サイトへも投稿してるみたいね
ttp://okwave.jp/qa/q6890739.html
これ自体 悪い事とは思わないけど
CreateObject("MSXML2.XMLHTTP")を使った
タイトルを抽出するコードは、教えてもらった事あるみたいだから
それの応用だけなんだけどなー
自分でなんとかしようとする気ナッシングだね
0832デフォルトの名無しさん
2011/07/22(金) 15:12:38.29セルに入力された値が「-1のとき…追加する」「1のとき…使用する」「2のとき…削除する」になるように、
RangeのNumberFormatへ表示形式を設定したいのですがうまくいきません。
もしわかるのであれば、その部分だけのコード教えていただけるとありがたいです。
また、条件が2個の状態の場合設定できるのですが、条件が3個になったとたんエラーになります。
NumberFormatへの登録数上限があるのでしょうか?
0833デフォルトの名無しさん
2011/07/22(金) 16:54:05.66他のサイトで教えていただき解決しました。
大変お騒がせしました。
0834デフォルトの名無しさん
2011/07/22(金) 20:20:39.52NumberFormatはセルの表示形式を指定するものなのに
条件が2個、3個って一体何の話なんだ?
0835デフォルトの名無しさん
2011/07/22(金) 21:35:56.15公式なドキュメントになぜかあまり具体的な記述がないけど、
仕様は以下のとおりで、最初の2つまでしか条件は書けない
http://excel.life.coocan.jp/index/indexcell_disp_skoron_j.html
あえてやりたいならVBAを使って
Worksheet_Change
で現在のセルの値を見て、動的に NumberFormatLocal で設定するとか、ちょっと無理をする必要がありそう
0836デフォルトの名無しさん
2011/07/22(金) 23:16:25.370837デフォルトの名無しさん
2011/07/23(土) 01:09:34.530838デフォルトの名無しさん
2011/07/23(土) 01:14:52.59スレ違いだし、腐るほどサンプル転がってるから詳細は省くが
0839デフォルトの名無しさん
2011/07/23(土) 01:28:26.99大体理解できました。ありがとうございます
もう一つ質問したいのですが
板のURL(例えばhttp://hibari.2ch.net/tech/)を入力したら
現行のスレッドタイトルをA列に、そのスレッドのURLをB列に取得したいのですがどのようにすればいいでしょうか
0840デフォルトの名無しさん
2011/07/23(土) 06:37:06.02そいつを取得して解析して、解析結果をセルに代入すれば良いだけだよ
でも、URLの変換やsubject.txtの解析は
Excelとはなんら関係のないスレ違いな話なので詳細は省くが
とにかく、>>2★3,★4に該当するスレ違い、ルール違反な質問なので
もうこの件ではここで質問しないでね
0841デフォルトの名無しさん
2011/07/23(土) 07:56:54.260842デフォルトの名無しさん
2011/07/23(土) 12:07:22.66知識自慢したいお子様と違って俺はスレのマナーをちゃんと守る大人
0843デフォルトの名無しさん
2011/07/23(土) 12:31:02.64わかります
0844デフォルトの名無しさん
2011/07/23(土) 13:25:43.120845デフォルトの名無しさん
2011/07/23(土) 13:48:19.15★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
0846デフォルトの名無しさん
2011/07/23(土) 14:08:23.79Range("A1")に
あ
い
う
え
お
ってあるとして、それを
A1 あ
A2 い
A3 う
A4 え
A5 お
としたいのです
0847デフォルトの名無しさん
2011/07/23(土) 14:34:17.56Sub test()
a = Split(Range("A1").Value, Chr(10))
For i = 0 To UBound(a)
Range("B1").Offset(i, 0).Value = a(i)
Next i
End Sub
0848847
2011/07/23(土) 14:38:51.250849デフォルトの名無しさん
2011/07/23(土) 14:41:59.660850デフォルトの名無しさん
2011/07/23(土) 22:39:55.27やってみた
Sub Sample()
a = Split(Range("A1").Value, Chr(10))
Cells(1, 1).Resize(UBound(a), 1).Value = WorksheetFunction.Transpose(a)
End Sub
0851デフォルトの名無しさん
2011/07/24(日) 05:08:46.45ぶいびーえーででかい面するスレなんだから
スレチな話は僕チンのわかる範囲にしてください><
0852デフォルトの名無しさん
2011/07/24(日) 08:20:32.670853847
2011/07/24(日) 09:20:59.93ワークシートファンクションはほとんど使ったことがありませんでした。ありがとうございます。
0854デフォルトの名無しさん
2011/07/24(日) 23:05:54.80A2=0.3 B2=B
A3=0.1 B3=C
と記入してあって、
A列の通り60%の確立でB列の"A"を、30%の確立で"B"を選ぶ
というのをさせたいのですが、どうしたらいいでしょうか?
知恵を貸してください。
0855デフォルトの名無しさん
2011/07/24(日) 23:19:18.400856デフォルトの名無しさん
2011/07/24(日) 23:29:34.74A1〜A3を配列にいれる(仮に変数AA)
100倍する
AA(1):60、AA(2):30、AA(3):10
AA(1)にはそのまま、AA(2)にはA1-A2の合計、AA(3)にはA1-A3の合計のように数字を足しこんだ値とする
AA(1):60、AA(2):90、AA(3):100
合計を求める(この場合は100)
ここまでが準備
値の選択では、RND関数を使ってまず合計値まで(0から99まで)の乱数 N を生成し、
N <AA(1) (0から59までの値) なら1番目
AA(1)<= N <AA(2) (60から89まで) なら2番目
AA((2)<= N (90以上) なら3番目
が選択されたとみなす
もっとうまいやり方がありそうだけど、ぱっと思いつくのはこんな感じ
…考えたら整数にする必要もないし、配列AAを用意する必要すらないかもしれんが
0857デフォルトの名無しさん
2011/07/24(日) 23:57:37.00ありがとうございます
0858デフォルトの名無しさん
2011/07/25(月) 00:47:35.09Sub aaa()
r = Rnd(1) '乱数を発生
s = 0
i = 1
Do
s = s + Cells(i, 1)
If r < s Then b = Cells(i, 2) '確率に従ってB列のデータを選ぶ
i = i + 1
Loop Until b <> "" Or i > 3 'ここにデータの個数を書く
Debug.Print b '結果の表示
End Sub
0859デフォルトの名無しさん
2011/07/25(月) 04:31:07.13=IF(RAND()<A1,B1,IF(RAND()<(A2/(1-A1)),B2,B3))
0860デフォルトの名無しさん
2011/07/25(月) 06:42:01.600.6 A 1 ←=A1+C2
0.3 B 0.4 以下同様
0.1 C 0.1
という表を作って=INDEX(B1:B3,MATCH(RAND(),C1:C3,-1))でいいんじゃね?
普通は下のような昇順の表を作って=LOOKUP(RAND(),A1:B3)
0 C
0.1 B
0.4 A
0861デフォルトの名無しさん
2011/07/25(月) 06:44:53.820862デフォルトの名無しさん
2011/07/25(月) 09:16:03.35それ違う
0863デフォルトの名無しさん
2011/07/25(月) 09:26:24.70832です。
ご回答ありがとうございました。やっぱり2つまでしか設定できないんですね。
もうちょっと試行錯誤してみます。
ありがとうございました。
0864デフォルトの名無しさん
2011/07/25(月) 09:38:57.28答えは合うよ?
条件が多いとLOOKUPの方が簡単だと思うが。
0865デフォルトの名無しさん
2011/07/25(月) 11:31:27.63ワークシート関数を一から勉強し直せ
0866質問させてください�@
2011/07/25(月) 12:15:03.97EXCEL上にそのまま出力されてしまい、思うように動作してくれません。
(入力する数式をVBE上でDebug.printを用いて見てみたところ、変数の値は想定通りに変化していました)
どのあたりにミスがあるのか、教えていただけませんか?よろしくお願いいたします。
0867質問させてください�A
2011/07/25(月) 12:53:55.39�@:入力したい数式を別に用意
Dim CalcStr As String
CalcStr = "=IF(ISERROR(SetSh & ""!"" & ""CN"" & HikGyo),"""",IF(SetSh & ""!"" & ""CN"" & HikGyo = """","""",SetSh & ""!"" & ""CN"" & HikGyo))"
(EXCEL上では、上記式の右辺の内容がそのまま出力されてしまう。変数SetSh、HikGyoはその名前のまま、『&』もそのまま)
�A:設定した数式を、任意のセルに設定
ActiveSheet.Range("DD" & MyGyo).Formula = CalcStr
0868デフォルトの名無しさん
2011/07/25(月) 13:35:41.82実際は、こんな数式をセルにセットしたいのかなぁ?
=IF(ISERROR(テストシート!CN100),"""",IF(テストシート!CN100 = """","""",テストシート!CN100))
0869デフォルトの名無しさん
2011/07/25(月) 13:45:55.41CalcStr = "=IF(ISERROR(" & SetSh & "!" & CN & HikGyo & "),"""",IF(" & SetSh & "!" & CN & HikGyo "="""",""""," & SetSh & "!" & CN & HikGyo & "))"
0870867,868
2011/07/25(月) 14:31:38.34セットしたい数式は、まさにおっしゃる通りのものです。
SetShがシート名(String型配列から取り出す)、CNは列指定のための文字列(固定)、SetShは行数(処理の進行に応じて加算)です。
�Aの式だけだと、セルに数式を設定したことにはならないのでしょうか。
というよりも、�@の段階でセルを設定する必要がある、という解釈が正しいのでしょうか。
0871867,868
2011/07/25(月) 14:52:54.11修正版の提示、ありがとうございます!
�@:ISERRORの後の括弧も文字であるため、&で連結する必要があった
�A:変数の部分に関しては""で括る必要がない(=文字列のみ2重のダブルクォートで囲めばよい)と考えていた
であるということでしょうか。
ひとまず、家の環境で試してみます。
※スレのルールを無視して申し訳ありませんでした。
この問題で悩んでいる環境は、WindowsXP・Excel2003という環境です。
これから試してみる環境は、Windows7・Excel2010です。
0872デフォルトの名無しさん
2011/07/25(月) 16:17:39.99大抵連結で繋ぎすぎとか入れ子を重ねすぎとかやらかしてるよね
能力もないのにベテランぶって一括一発で処理を書こうとするから解らなくなる
CellAddress = "CN" & HikGyo
CellPath = SetSh & "!" & CellAddress
とかやって、3ヶ所有る「SetSh 〜〜〜 HikGyo」を「CellPath」に変えるだけでも
かなり解りやすいコードになるはず
CalcStr = "=IF(ISERROR(" & CellPath & "),"""",IF(" & CellPath & "="""",""""," & CellPath & "))"
0873デフォルトの名無しさん
2011/07/25(月) 18:22:48.81これがベテランのコードですか。
0874デフォルトの名無しさん
2011/07/25(月) 20:56:28.400875デフォルトの名無しさん
2011/07/25(月) 22:19:07.48ワークシートの数式なんて元々泥臭くなりがちだし。
0876デフォルトの名無しさん
2011/07/26(火) 00:24:25.71それが最良の正解って事ではなく、方法論の一つとして
CalcStr = "=IF(ISERROR(SetSh & ""!"" & ""CN"" & HikGyo),"""",IF(SetSh & ""!"" & ""CN"" & HikGyo = """","""",SetSh & ""!"" & ""CN"" & HikGyo))
よりは
CellAddress = "CN" & HikGyo
CellPath = SetSh & "!" & CellAddress
CalcStr = "=IF(ISERROR(" & CellPath & "),"""",IF(" & CellPath & "="""",""""," & CellPath & "))"
の方が良いだろってだけの話じゃねーの?
0877超ベテラン
2011/07/26(火) 03:53:04.470878デフォルトの名無しさん
2011/07/26(火) 10:37:38.10俺は859じゃなく860なんだが、お前がワークシート関数に詳しいとは思えんなぁ。
0879デフォルトの名無しさん
2011/07/26(火) 10:56:48.740.6 A 0
0.3 B 0.6 ←=C1+A1
0.1 C 0.9 ←=C2+A2
こんな表作って=LOOKUP(RAND(),C1:C3,B1:B3)でもよかったな。
INDEXとMATCHを使うまでもなかったわ
0880デフォルトの名無しさん
2011/07/26(火) 12:14:57.861つの式の中ではRAND()は1回にしないとまずいんじゃない?
0881デフォルトの名無しさん
2011/07/26(火) 12:27:26.64求まる。
10万個くらい式を入力して数えたら?
=IF(RAND()<A$1,B$1,IF(RAND()<(A$2/(1-A$1)),B$2,B$3))
0882デフォルトの名無しさん
2011/07/26(火) 12:42:10.77頭の固いやつは理解出来ないのかなぁ。
865=880なのか?
0883デフォルトの名無しさん
2011/07/26(火) 21:04:50.59回答よろしくお願いします。
反応速度式が次式で表される二次反応がある。
t=0におけるAの濃度が[A0]である時、[A]の時間変化を数値計算を用いて求めるプログラムを作成せよ(エクセルVBA)。尚、kは下表を用い、A0は任意に入力できるようにする。
−d[A]/dt=k[A]^2
反応 k/L mol^-1s^-1
2NOBr→2NO+Br2 0.80
2NO2→2NO+O2 0.54
H2+I2→2HI 2.42×10^-2
D2+HCl→DH+DCl 0.141
2I→I2 7×10^9
H++OH-→H2O 1.5×10^11
質問はここであっていたでしょうか・・??
0884デフォルトの名無しさん
2011/07/26(火) 21:06:57.31帰れ
0885デフォルトの名無しさん
2011/07/26(火) 22:27:43.290886デフォルトの名無しさん
2011/07/26(火) 22:39:33.050887デフォルトの名無しさん
2011/07/27(水) 06:36:00.31そういうのは大学で聞けよ
何のために大学行ってるんだよ?
自分の知らないことを教えて貰うためだろ
今、大学以外で教えを乞うて、大学では自力で課題をこなしたかのように見栄を張ってもなんにもならない
解らないことは解らないと正直に言って、きちんと教わってこい
0888デフォルトの名無しさん
2011/07/27(水) 07:38:10.69そのファイルのパスを取得したいのですがどうしたらできますか?
0889デフォルトの名無しさん
2011/07/27(水) 07:47:14.33Excel2003のVBAにて、ファイルのドラッグ&ドロップでファイルパスとファイル名の...
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1317565268
やりたいのはこれ?
0890デフォルトの名無しさん
2011/07/27(水) 07:49:29.40おぉありがとうございました
調べてから質問するようにします
0891デフォルトの名無しさん
2011/07/27(水) 07:53:00.680892デフォルトの名無しさん
2011/07/27(水) 08:07:18.650893デフォルトの名無しさん
2011/07/27(水) 10:50:13.38答えが出ることも理解できない馬鹿なんだから、あまり偉そうなこと言わん方がいいね。
0894デフォルトの名無しさん
2011/07/27(水) 11:34:02.42オススメの本とかある?
0895デフォルトの名無しさん
2011/07/27(水) 12:38:50.05素直にExcel使った方がいいんじゃないかな?
ダウンロードして2ヶ月お試しして、身につかなかったらあきらめる、でいいのでは?
(さらに使いたければ内部カレンダを巻き戻す、と)
0897デフォルトの名無しさん
2011/07/27(水) 13:38:24.36OpenOfficeはいい参考書が少ない
素直に本物のExcelの期間限定版を無料ダウンロードした方がいい
あと、本を買うときはちゃんと2010に対応したやつを選ぶこと
バージョンが違うとメニューのデザインなんかが変わるから、初心者はそこでつまづく
0898デフォルトの名無しさん
2011/07/27(水) 15:43:46.71フォームコントロールで印刷ボタンを作りました。
ただ、その顧客情報によってファイルの名前を変えて一つ一つ保存している為、
ファイル名が変わると印刷マクロが機能しません。
他の方法を調べた結果、アドインとして登録しようと思い、早速実行してみました。
が、「実行時エラー424 オブジェクトが必要です」と表示され動きません。
ネットで調べながらやってはいるのですが、どこを修正すべきなのか分かりません……
申し訳ありませんが、お知恵を貸して頂けないでしょうか?
以下がそれぞれの式になります。
1:アドイン(ファイル名=印刷アドイン)
Sub印刷マクロ()
'
If (vbYes <> MsgBox("印刷します。よろしいですか?", vbYesNo)) Then
Exit Sub
End If
Range("A1:Z41").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$Z$41"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveSheet.PageSetup.PrintArea = ""
End Sub
2:実行用マクロ
Sub テスト()
‘
Application.run macro:=”印刷アドイン!印刷マクロ”
End Sub
0899デフォルトの名無しさん
2011/07/28(木) 09:16:56.73そのメッセージボックスで中断だかってボタンあるでしょ?
それでわかるはず
0900デフォルトの名無しさん
2011/07/28(木) 11:33:24.46テキストファイルをOpen Input で読み込んで、例えば
===== hello =====
の行を半角空白でsplitしてhelloの文字列を抜き取りたいのですが
splitするときに、先頭に=があるとアプリケーション定義またはオブジェクト定義のエラーです。と怒られるのですが、なぜエラーになるのでしょうか。また回避するベストな方法は何でしうか。
宜しくお願い致します。
0901デフォルトの名無しさん
2011/07/28(木) 11:36:20.990902デフォルトの名無しさん
2011/07/28(木) 12:06:34.200903デフォルトの名無しさん
2011/07/28(木) 23:20:45.41そのプロシージャ内でComboBox1の内容を判断して
果物だったら"いちご" "みかん"等をComboBox2から選びたいのですが
一番したの行からどのように記述すれば良いか悩んでいます。
分かる方どのようにすれば良いのかアドバイス頂けると助かります。
よろしくお願いします。
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "果物"
.AddItem "野菜"
End With
End Sub
Sub ComboBox1_change()
Dim a As String
Call test(a)
End Sub
Sub test(ByVal a As String)
0904デフォルトの名無しさん
2011/07/29(金) 00:20:48.480905デフォルトの名無しさん
2011/07/29(金) 00:41:37.10testの引数のaはどうする予定なんだ?
多分こんな感じだろ
Sub ComboBox1_change()
Call make_combo2(ComboBox1.Text)
End Sub
Sub make_combo2(s As String)
ComboBox2.Clear
Select Case s
Case "果物"
ComboBox2.AddItem "いちご"
ComboBox2.AddItem "みかん"
End Select
End Sub
0906デフォルトの名無しさん
2011/07/29(金) 00:53:26.74Sub test(ByVal a As String)
Select Case a
Case "果物": ComboBox2.List = Array("いちご", "みかん", "ぶどう")
Case "野菜": ComboBox2.List = Array("だいこん", "とまと", "こぼう")
End Select
End Sub
とか
あとは.RowSource 使ってシートからもってくるとか
0907デフォルトの名無しさん
2011/07/29(金) 06:21:42.56AddItemで一つずつ入れたり、逐一Arrayで配列作ったりしてもいいけど
ComboBox1を何度も選択変更するならこうだな
Private buf As Collection
Private Sub UserForm_Initialize()
Set buf = New Collection
ComboBox1.AddItem "野菜"
buf.Add Array("にんじん", "たまねぎ", "じゃがいも"), "野菜"
ComboBox1.AddItem "果物"
buf.Add Array("りんご", "みかん", "かき"), "果物"
End Sub
Private Sub ComboBox1_Click()
ComboBox2.Clear
ComboBox2.List = buf(ComboBox1.Text)
End Sub
一度しか実行されない UserForm_Initialize は多少複雑になってもいいから
何度も実行される ComboBox1_Click の処理量を減らす
0908デフォルトの名無しさん
2011/07/29(金) 08:10:34.66返信遅れました、すみません
メッセージボックスの表示は「はい」か「いいえ」しか表示されていません……
範囲指定〜印刷までの式か、アドイン登録の方法か、どちらかが間違っているんでしょうか?
0909903
2011/07/29(金) 14:28:59.51答えてくださってありがとうございます。
一つのプログラムに対してもいくつも方法があるんですね。
ホントありがとうです。
0910デフォルトの名無しさん
2011/07/29(金) 14:54:44.44実行時エラーのでたコードを特定しないと前に進まないと思うよ
EXCELのバージョンによるかもだけど
エラーメッセージが出たとき「デバック」が選べるはず
実行時エラーのでたコードが特定されてないので
違ってるかもだけど ちょっと気になった点を
アドインは開いていないと 通常使えないハズだけど開いている?
(Excel本体では見えないけど VBEからだと確認できる)
あと
アドイン・ファイル名は 印刷アドイン.xla とかじゃない?
Application.run macro:="印刷アドイン.xla!印刷マクロ"
だと思うんだけど
0911デフォルトの名無しさん
2011/07/29(金) 16:02:21.24アドバイスありがとうございます。
仰る通り、アドイン名.マクロ名で打ち込んだらファイル名を変えても問題なく動作しました。
無知な質問にお答え頂き本当にありがとうございました。
0912デフォルトの名無しさん
2011/07/30(土) 01:36:12.16VBAでpersonal.xlsbを作る方法は、マクロの記録でダミーのを作ってから、以外にありますか?
0913デフォルトの名無しさん
2011/07/31(日) 02:35:41.660914デフォルトの名無しさん
2011/07/31(日) 02:54:23.95クロールする範囲にもよるけどVBAじゃ効率悪いと思う
0915デフォルトの名無しさん
2011/07/31(日) 03:05:37.35考えているのはsubjectから板一覧を取得してそこからdatを一つ一つ見ていくというものなんですがやっぱVBAじゃやめたほうがいいですか
0916デフォルトの名無しさん
2011/07/31(日) 03:40:36.89たしか連続で読み込みを続けるとアクセス規制されるんじゃなかったっけ?
0917デフォルトの名無しさん
2011/07/31(日) 04:58:38.36VBで作ってからvbaで実現する方法考えたほうが絶対に早い
読み込みだけなら割とすぐに作れる。書き込みはかなり面倒だけど
vbaはクラス作るのもややこしい上、面倒
0918デフォルトの名無しさん
2011/07/31(日) 13:11:01.72馬鹿かどうかは判らんが友達にはなりたくないタイプ
0919デフォルトの名無しさん
2011/07/31(日) 13:37:59.87SheetやThisWorkbookにコードを書く是非や長所・短所について教えてください
0920デフォルトの名無しさん
2011/07/31(日) 13:52:44.08同じ特性でも、人によって長所に感じることも有れば短所に感じることもある
自分のプログラミングスタイルの変化によって、以前は短所に思えていた特性が
長所に思えるようになることもあるし、その逆も然り
なので、長所や短所という視点ではなく、それぞれの特性という視点で情報を集め
それらが長所か短所かは、自分の作る物やプログラミングスタイルに照らし合わせて
自分で判断しな
で、標準モジュール、クラスモジュール、ブックやシートの付随モジュールそれぞれの特性は
ググればいくらでも出てくるから自分で調べな
0921919
2011/07/31(日) 14:06:01.390922デフォルトの名無しさん
2011/07/31(日) 14:15:20.78何に使うの
0923デフォルトの名無しさん
2011/07/31(日) 14:41:25.06真っ当に使うならラップして似非オーバーロードするくらいしか思いつかん
一人で作る分にはあまり恩恵に預かれない
複数人が関わって、標準モジュールだと問題ありの場合に出番だと思う
今時そんな事してるところがあるのかは知らんけど(メンテ除く)
0924デフォルトの名無しさん
2011/07/31(日) 16:01:23.27変数やプロシージャのスコープのことがさっぱりわからないんです。
分り易く理解するコツや
こう考えたりこうイメージしたら分りやすいよ
みたいなアドバイスはありますか?
0925デフォルトの名無しさん
2011/07/31(日) 16:17:25.96initialize
show
の違いは何かと聞いておるのだ
0926デフォルトの名無しさん
2011/07/31(日) 17:01:02.89エクセルのセルが優秀すぎて、VBAだとほとんど出番が無い
0927デフォルトの名無しさん
2011/07/31(日) 18:50:28.13真っ当な意見に、論で言い返せない故の悔し紛れ?
0928デフォルトの名無しさん
2011/07/31(日) 19:24:57.20下手に手を出すと地獄を見そうだから
触らぬ神に祟り無しっていう態度
0929デフォルトの名無しさん
2011/07/31(日) 22:35:48.28単に cells(1,1).value とすると、どこのbookのどのシートを指しますか?
これに関連して、
activeとかselectの概念って、
ある時において、bookもsheetもcellのそれぞれについて、activeなものとselectされてるものが存在してるのでしょうか?
0930デフォルトの名無しさん
2011/07/31(日) 22:56:10.072.yes
0931デフォルトの名無しさん
2011/07/31(日) 22:56:58.54ええとね、まずアプリケーションが一番上にいて、
その中にActiveなBookがいて、更にその中にActiveなSheet、SelectされたSheetがいて、
更にその中にSelectされたRangeやActiveなCellがいるんじゃない?
だから何も考えずに複数のBookを扱って対象のBookを選ばずにActiveなBookに対して処理を行うと、
本当は違うBookに処理を行いたかったのに、最後に開いたBookを処理しちゃったり
する様なことが起きるんだと思うよ。
0932デフォルトの名無しさん
2011/07/31(日) 23:06:23.23SingleとDoubleは、どっち使ったほうが使いやすいですか?
場合によるだろうけど一般的な話で。
0933デフォルトの名無しさん
2011/07/31(日) 23:11:21.01標準モジュールの場合はアクティブなブックのアクティブなシート、
シートモジュールの場合は、そのモジュールの属するシート、
ブックモジュールの場合、Cellsは標準モジュールと同じでアクティブなブックのアクティブなシートだが、
Worksheetsは、アクティブなブックのものではなくモジュールの属するブックのものになる。
activeとselectは、単一のセルやシートに対して有効な操作の対象となっているものがactive、
複数のセルやシートに対して有効な操作の対象となっているものがselect、因みにbookにselectは無い。
文字入力はCtrlキーを押しながら確定しない限り、基本的に単一セルが対象だが、Deleteキーによる消去は複数セルに有効。
シートでも削除や移動は複数シートに対して行えるが、名前の変更は複数選択していても表示状態の単一のシートに対してしか行えない。
このように、セルやシートでは複数に対して有効な操作と、単一のもののみに有効な操作があるのでactiveとselectが存在している。
0934デフォルトの名無しさん
2011/07/31(日) 23:14:03.26例えばですよ、CTRLを押しながらSHEETをクリックすれば
たくさんsheetが選べますよね
これがたぶん複数のsheetがselectされた状態だと思うんですよ
で、目の前に見えてるsheetがactiveなシート。
複数のsheetを選んでたら[作業グループ]と出るので分かります。
この状態で、「あ」と入力すると、なんとすべてのシートで「あ」が入力されるんです。
ということは、その状態ではactiveセルは各シートごとに複数存在するってこと?
0935デフォルトの名無しさん
2011/07/31(日) 23:19:22.74Select>Activeってだけだろ
もしかして四則演算ができない人?優先順位って概念は分かる?
0936デフォルトの名無しさん
2011/07/31(日) 23:20:57.88それぞれで別のセルを複数選択すると、
なんと各シートで別々の場所のセルが複数選択されてるのと単一のセルがactivateになってるのが各シートで記憶されてるんですよ。
これはどういうこと?
activecellは、常にsheetの数だけ存在する?
0937デフォルトの名無しさん
2011/07/31(日) 23:23:50.65もしsheetを複数選択すればその瞬間にすべてのシートにおいて同じセル住所が選択された状態になり、同じセル住所がactivateされた状態になるんですよ。
0938デフォルトの名無しさん
2011/07/31(日) 23:32:54.70sheetを複数selectして
マクロでselectionに文字を書き込んだら
その選択したすべてのシートの同じcell番地がすべて文字列で埋まりますわ
0939デフォルトの名無しさん
2011/07/31(日) 23:35:53.182つシートをselectしてて
マクロでcells(1,1).value="うんこ"を実行したら
どのシートに「うんこ」と表示されると思う?
(1) 2つのシートのA1
(2) 1つのシートのA1
(3) どちらでもない
0940デフォルトの名無しさん
2011/07/31(日) 23:37:22.08むしろ、選択して違う処理が走ったら問題じゃないかと思うんだけど。
0941デフォルトの名無しさん
2011/07/31(日) 23:39:47.30あなたの回答は(1)ですね
残念、はずれ
政界は(2)でした
0942デフォルトの名無しさん
2011/07/31(日) 23:40:49.720943デフォルトの名無しさん
2011/07/31(日) 23:43:00.88一つと言うよりActiveなシートの方に反映されるでしょ?
SelectとActiveはその辺ちょっと違うし。
0944デフォルトの名無しさん
2011/07/31(日) 23:44:31.342つシートをselectしてて
マクロでactivecell="まんこ"を実行したら
どこに「まんこ」と表示されると思う?
(1) 2つのシートの2つのactivecell
(2) 1つのシートの1つのactivecell
(3) どちらでもない
0945デフォルトの名無しさん
2011/07/31(日) 23:53:51.74へぇ、両方のシートに反映されるんだ。
これは意外。内部的に一つ目とどう違う処理が走ってるの?
0946デフォルトの名無しさん
2011/07/31(日) 23:54:23.80SingleとDoubleは、どっち使ったほうが使いやすい?
0947デフォルトの名無しさん
2011/07/31(日) 23:54:42.43下の様にコードを書いているのですが
※P2_StartPage,P2_EndPage はComboBoxです
★の所でChangeイベントが出てしまい正しい初期値が設定できません
UserForm_Initialize実行後は
P2_StartPage.Value = 1
P2_EndPage.Value = 1
となって欲しいのですが実際には
P2_StartPage.Value = "" '空白
P2_EndPage.Value = 1
となってしまいます
Changeイベントが出てるのでこうなるのは分かるで
取り合えず今はコードを工夫してなんとか しのいでいますが
そもそもとしてイベントを一時的にでも禁止する方法はないでしょうか?
※Application.EnableEvents = False
を入れてみても止まらなかった
改行が多すぎます!! といわれたので分けます
0948947
2011/07/31(日) 23:55:20.74Private Sub UserForm_Initialize()
With P2_StartPage
.ListRows = 10
For i = 1 To 99
.AddItem
.List(.ListCount - 1) = i
Next
.Value = .List(0) '★
End With
With P2_EndPage
.ListRows = 10
For i = 1 To 99
.AddItem
.List(.ListCount - 1) = i
Next
.Value = .List(0) '★
End With
End Sub
Private Sub P1_StartPage_Change()
If Val(P1_StartPage.Value) > Val(P1_EndPage.Value) Then
P1_EndPage.Value = P1_StartPage.Value
End If
End Sub
Private Sub P1_EndPage_Change()
If Val(P1_StartPage.Value) > Val(P1_EndPage.Value) Then
P1_StartPage.Value = P1_EndPage.Value
End If
End Sub
0949デフォルトの名無しさん
2011/07/31(日) 23:55:33.89それは複乳さんが答えてくれるよ。
お〜い、いるかな?
0950デフォルトの名無しさん
2011/08/01(月) 00:02:04.04Call ○○○
と
○○○
と単に書くのと
どっちが望ましい?
0951デフォルトの名無しさん
2011/08/01(月) 00:12:29.19戻りが欲しいとかでない限り、明示的にcallで呼んだ方が
第三者から見ても後から自分で見てもいいと思うぞ
0952デフォルトの名無しさん
2011/08/01(月) 00:20:44.24Callを使わないなら括弧で括らない。
何かそんな話をこのスレでずっと前に言ってた様な・・・
まぁ>>951の通りでいいと思う
0953デフォルトの名無しさん
2011/08/01(月) 00:24:39.54ttp://home.att.ne.jp/zeta/gen/excel/c04p11.htm
こことか読んでみるといいと思うぞ
0954デフォルトの名無しさん
2011/08/01(月) 07:40:27.86明示的にCallを書くことがある位だなあ。
識別子だけで浮いているのが気持ち悪いので。
0955デフォルトの名無しさん
2011/08/01(月) 12:21:00.71場合による
「一般的」は存在しない
0956デフォルトの名無しさん
2011/08/01(月) 12:48:21.550957デフォルトの名無しさん
2011/08/01(月) 13:35:13.05Double=計算が遅い、メモリ食う、有効桁数が多い(精度が高い)
ちゃんと考えて使い分けろ
0958デフォルトの名無しさん
2011/08/01(月) 16:51:12.990959デフォルトの名無しさん
2011/08/01(月) 19:41:56.46その後プログラミングは全くやってませんが、VBAを始めました。
どの入門書・初心者向けの本を見ても、
「変数のスコープ」だとか、「サブルーチン」をバンバン使う書き方とか、モジュールの概念(標準モジュール・フォームモジュール・シートモジュールの使い分けなど)とか、
一番知りたい情報がないんです。
これらはどのように学べばいいですか?
昔BASICやってたので、プログラムとはどういうものかという知識はあります。
まだ大型書店には行ってませんが、もしそういう本があれば行ってみるつもりです。
0960デフォルトの名無しさん
2011/08/01(月) 20:00:37.21今は本ではなくネットで勉強する時代に変わりました
本は物理的に大きさが限られているため、現代の複雑なプログラムをすべて説明するのは
場所が足りなくて不可能だからです
「VBA スコープ」などのキーワードで検索してください
0961デフォルトの名無しさん
2011/08/01(月) 20:25:34.73時代が経過して、今では構造化言語、オブジェクト指向型言語、関数型言語とどんどん様変わりし、
貴方の時代のPGとは考え方も組み方もまるで変わっています。
その中でもVBAは構造化言語とオブジェクト指向言語の中間に位置する、
今の貴方の立場としては比較的覚え易い言語と言えますが、
今後の事を考えると最新のVBやC#などを最初から全て覚え直すつもりで勉強した方が、
周り道の様ですが結局速くいろんな言語に対応出来る様に思います。
特にC#などは、今までやっていたであろうBASICの知識と混合する事なく覚える事が出来るでしょう。
一つの世代が変わった言語でPGを組むと言うのは、それ程までに容易では無いと言えます。
0962デフォルトの名無しさん
2011/08/01(月) 22:58:56.01後回しにするといろいろ面倒
知識レベルならともかく、いざ実装しようとすると面倒臭くて死にそうになる
0963デフォルトの名無しさん
2011/08/02(火) 02:41:23.34x = tes1 & "abc" & qr & "tes2"
ってあったとして(tes1,tes2,は長さ不明の文字列)(qrは長さ不明の数字の文字列)
xの中から"abc"の後ろの数字の部分を抜き取るにはどうしたらいいでしょうか
例えばxが
goiwhabc123oajfa だったら123を返す
とか
fabc1512few だったら1512を返す
こんな感じです
0964デフォルトの名無しさん
2011/08/02(火) 02:41:54.080965デフォルトの名無しさん
2011/08/02(火) 07:27:49.71超不真面目にやるならこんな感じだな。
0966デフォルトの名無しさん
2011/08/02(火) 08:20:06.57せいきひょうげんを使う!
0967デフォルトの名無しさん
2011/08/02(火) 08:43:33.73露出狂になるんですか?
0968デフォルトの名無しさん
2011/08/02(火) 09:20:58.280969デフォルトの名無しさん
2011/08/02(火) 09:28:41.230970デフォルトの名無しさん
2011/08/02(火) 09:33:04.34VBAではRand()
どうにかならんか?
0971デフォルトの名無しさん
2011/08/02(火) 09:37:11.15asc("○")ってVBではアスキーコード番号を教えてくれる関数だったと思ったが
VBAでは全角を半角に変える関数になってないか?
0972デフォルトの名無しさん
2011/08/02(火) 09:48:42.84シート3つあれば、それぞれについてアクティブセルが記憶されてるんです
例えば3つの各シートで全く別のセル住所をアクティブにしておいて
下のマクロを実行するとよく分ります。
Sub てすと()
Sheets(1).Activate
ActiveCell = "うんこ"
Sheets(2).Activate
ActiveCell = "まんこ"
Sheets(3).Activate
ActiveCell = "ちんこ"
End Sub
0973デフォルトの名無しさん
2011/08/02(火) 10:20:06.410974デフォルトの名無しさん
2011/08/02(火) 10:20:29.360975デフォルトの名無しさん
2011/08/02(火) 10:22:45.23ワークシート上に、スクロールバーを置いて、それにより、セルの値を増減させたいです。
しかし、うまくいきません。
・スクロールバーを右clickして、そのプロパティを出します。
・LinkedCell の値に、Sheet1!B10などと、表示したい目的地のセルを書き込みます。
・しかし、プロパティの枠の中のLinkedCellの枠に「Sheet1!B10」と打ち込んで、
リターンをすると、そのプロパティの枠の中が消えてしまい、
真っ白になってしまいます。何度やっても書き込めません。
・スライドバーやスピンボタン、どちらもできませんでした。
スライドバーやスピンボタンで、指定したセルの値を変化させる方法は、
上記では間違っているでしょうか?
どうやってやれば実現するでしょうか?
宜しくお願いします。
0976デフォルトの名無しさん
2011/08/02(火) 10:57:39.30できるけどSendMessageとかAPI使うしボタンのハンドル取得するまでが大変
UWSとか他アプリを操作するソフトをShellで起動した方が簡単
0977デフォルトの名無しさん
2011/08/02(火) 11:13:10.620978デフォルトの名無しさん
2011/08/02(火) 13:04:35.54VBAにRand()なんてあったか?
0979デフォルトの名無しさん
2011/08/02(火) 13:28:48.97無いと思っているのか?
0980デフォルトの名無しさん
2011/08/02(火) 19:57:26.26VBAにはRandは無いと思うぞ
Randはワークシート関数
そしてVBAにもRndはあるんだが
0981979
2011/08/02(火) 20:08:59.880982デフォルトの名無しさん
2011/08/02(火) 20:27:15.49誤魔化しとしてつぶやく言葉・・・・・それは
釣れた(ワラ
0983979
2011/08/02(火) 20:32:55.480984デフォルトの名無しさん
2011/08/02(火) 20:39:50.450985979
2011/08/02(火) 20:45:58.420986デフォルトの名無しさん
2011/08/02(火) 21:20:07.880987デフォルトの名無しさん
2011/08/02(火) 21:37:33.45http://www.vbforums.com/showthread.php?t=399395
0988デフォルトの名無しさん
2011/08/02(火) 21:49:59.321つもなかったら0を返す
Sub aaa()
r = 50
Do While r >= 1 And cat1(r) = 0
r = r - 1
Loop
c = 5
Do While c >= 1 And cat2(c) = 0
c = c - 1
Loop
Debug.Print r, c
End Sub
Function cat1(r)
If r >= 1 Then s = WorksheetFunction.CountA(Range(Cells(r, 1), Cells(r, 5)))
cat1 = s
End Function
Function cat2(c)
If c >= 1 Then s = WorksheetFunction.CountA(Range(Cells(1, c), Cells(50, c)))
cat2 = s
End Function
0989977
2011/08/02(火) 21:52:00.99I'm afraid I do not speak English, nor do I read it.
It would be really, truly, absolutely helpful, if you could provide me with some information regarding 'Form methods' in Japanese.
0990デフォルトの名無しさん
2011/08/02(火) 22:10:45.94とても役立ちました
ありがとうございます!
0991デフォルトの名無しさん
2011/08/02(火) 22:11:59.47なんとなく これに近いような印象なので紹介してみる
Excel総合相談所 97
http://hibari.2ch.net/test/read.cgi/bsoft/1304307841/708
http://hibari.2ch.net/test/read.cgi/bsoft/1304307841/710
回答
http://hibari.2ch.net/test/read.cgi/bsoft/1304307841/714
http://hibari.2ch.net/test/read.cgi/bsoft/1304307841/733-735
0992デフォルトの名無しさん
2011/08/02(火) 22:35:42.98"abc<koko>def<kokomo>ghi"
置換後は
"abc" & vbCrLf & "def" & vbCrLf & "ghi"
このようにしたいです
<>内またその外の文字数は不明です
お願いします
0993デフォルトの名無しさん
2011/08/02(火) 22:53:27.76ワークシートに"123"とあり、2だけ赤字
これをラベルに反映されるにはどうしたらよいでしょうか?
forecolorではNullとなりエラーとなったので質問します。
0994デフォルトの名無しさん
2011/08/03(水) 00:02:15.55桁ごとにラベル用意するかピクチャボックススに書く
0995デフォルトの名無しさん
2011/08/03(水) 01:34:36.97Sub AAA()
Dim A As String
A = "abc<koko>def<kokomo>ghi"
A = Replace(Replace(A, "<koko>", vbCrLf), "<kokomo>", vbCrLf)
MsgBox A
End Sub
0996デフォルトの名無しさん
2011/08/03(水) 02:00:41.18For le = c To 5
For te = 5 To le - 1
If Cells(i, le).Value = Cells(i, te).Value _
Then Cells(i, le).Clear
Next te
Next le
Next i
rは要素がある最大行,cは要素がある最大列
これで重複を消そうとしたのですがうまくいきません
どうしたらいいでしょうか
0997デフォルトの名無しさん
2011/08/03(水) 02:07:48.95forを逆からやるときってstepでマイナスつけないといけないんですね・・・
0998デフォルトの名無しさん
2011/08/03(水) 20:14:45.490999デフォルトの名無しさん
2011/08/03(水) 21:05:41.49V
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?黙ってろデブw
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
1000デフォルトの名無しさん
2011/08/03(水) 21:06:45.3910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。