>>927 Dim rng As Range
For Each rng In Selection
rng.Value="Hoge"
Next rng
929 :
927:04/12/13 22:21:04
>>928 解決することができました。
大変助かりました。ありがとうございます。
930 :
925:04/12/13 23:18:45
>>926 ありがとうございました。できました。
実は値を再び別のセルに挿入するプログラムだったのですが、
挿入時にも数値型に変換されてしまいました。
こちらは挿入時に"'"と文字列連結してから代入することによって解決しました。
あわせてご報告します。
>>930 そういう場合は下のコード使ったほうがいいんじゃないですか?
A1セルの値をA2セルへ入れる場合。
Range("A1").Copy Destination:=Range("A2") 'コピー
Range("A1").Cut Destination:=Range("A2") '移動
932 :
918:04/12/14 13:12:02
Sub Vba()
Set en = Range("C2:C6")
Set hit = Range("B2:B6")
Const z As Double = 3.14159265358
X = 5
For j = 0 To X
hit = 0
For i = 1 To 10 ^ j
If (Sqr((Rnd * 2 - 1) ^ 2 + (Rnd * 2 - 1) ^ 2)) < 1 Then
hit = hit + 1
End If
Next i
en(j) = 10 ^ j
en(j) = hit / 10 ^ j * 4
Next j
End Sub
このプログラムで円周率の値はでるのですが、このプログラムから
ヒット数をRange("B2:B6")につくりたいとおもいます。
どのようなプログラムが必要なのでしょうか?
力をお貸しください。
cells( j + 1, 2 ) = hit
934 :
918:04/12/14 19:41:49
>>933 あ、ありがとうございます。
あともう一個質問させてください。
各シミュレーションが終了する度に(10回100回と)、
Msgboxを表示してシュミレーションを続けるかどうかを問い合わせる
ためにはどうすればいいでしょうか?
質問ばっかですいません
配列の受け渡しなんですが
Dim X(42) As Variant
Range(Sheet1.Cells(EGYO, 12), Sheet4.Cells(EGYO, 43)).Value = X(11 to 43)
43個の配列変数があって
そのうちの11〜42をセルに入れようと思って
X(11 to 42)
と、書いてみたんだけど無理なようです
やっぱり
Do LoopとかFor Nextで
一個一個入れないといけないんでしょうか?
訂正です
Dim X(42) As Variant
EGYO As Integer
中略
Range(Sheet1.Cells(EGYO, 12), Sheet1.Cells(EGYO, 43)).Value = X(11 to 42)
こんな感じになってます
938 :
デフォルトの名無しさん:04/12/16 00:22:35
エクセルのグラフの散布図等で、あるデータラベルが他のデータラベルと
重なっているかどうかを判定するような関数を書くにはどうやったら良いのでしょうか?
大量に値をプロットしてラベルを付けるとラベル同士重なって読めなくなってしまって…
適当に間引きしたいのです。
ラベルの topとleftと文字数で地道に計算する方法しか思いつかないのですが
なんか良いやり方ないでしょうか?
939 :
デフォルトの名無しさん:04/12/17 13:37:02
A,B二つのブックがあったとして
BのブックからAに作成してあるUserFormを操作する方法ってあるのでしょうか?
あればヒントだけでもよいので教えていただけないでしょうか。
940 :
デフォルトの名無しさん:04/12/17 20:49:42
VBAで変数の型変換(キャスト)ってできますか?
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CVar(expression)
CStr(expression)
ユーザー定義関数の戻り値として配列を返すのはどうやればいいでしょうか?
普通にできるぞ
>>939 Bのブックから、Aのブックを参照設定する。
945 :
デフォルトの名無しさん:04/12/18 23:59:09
エクセル97のVBAなんですが、たとえば以下のクラスがあったとして
<<Class Foo>>
Public Field_A as Long
Public Field_B as String
Public Field_C as Date
このインスタンスが詰まったコレクション Foos があったとします。
このコレクションをField_B, Field_C 等の好きなメンバでソートしたいのですが
どうやったらよいのでしょうか?
946 :
デフォルトの名無しさん:04/12/19 00:40:52
なんかググってみたら
こういうのはADOとかにリンクさせて処理するもんなんでしょうか?
(確かにそのほうがラクそうだ)
947 :
デフォルトの名無しさん:04/12/19 06:29:10
エクセル2000を使っています。
表示しているシートを、VBAを使って
画像として保存することできますか?
>>947 ウインドウハンドルからデバイスコンテキストを取得してそれの中身をビットマップファイルとして保存すればよいですよ。
>948
ありがとうございます。早速やってみます。
'質問 1 Word VBA
Option Base 1
Sub Q1()
Selection.WholeStory
Selection.Delete
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=4, NumColumns:=6
For K = 1 To 4
For J = 1 To 6
Selection.TypeText Text:="(" & K & "," & J & ")"
Selection.MoveRight Unit:=wdCharacter, Count:=1
Next J
Next K
End Sub
'上記によって4行6列のテーブルを Word2000 の Book1 に作表しました。
'この後、テーブルの2行目と3行目の欄は全て高さを30ミリに、また4列目と5列目の欄は全て横幅を15ミリに変更しようと思います。
'End Subの前に何を追加すべきでしょうか。どなたかご教示いただけると有難いです。
A1とC1のセルを選択していたとして。コードでA1のセルの選択だけを解除したいときはどうやったらいいのでしょうか?
C1を選択で出来ない?
>>952 出来ましたがA1,C1,E1と3つあってA1だけ解除したいときE1も選択解除されてしまいます。
こういった場合はどうすればいいのでしょうか?何度もすいません。。
仕様かわってんじゃん…
>>953 Range("C1,E1").Select
956 :
デフォルトの名無しさん:04/12/22 16:07:57
教えてください。
Excel2000でクリップボードのクリアをするVBAがわかりません。
マクロの記録をしても記録されないようです。
よろしくお願いします。
>>956 Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long 'クリップボードをオープン
'クリップボードを空にし、クリップボード内のデータのハンドルを解放
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function CloseClipboard Lib "User32" () As Long 'クリップボードをクローズ
'クリップボードクリア関数呼び出し 別にこれを呼び出さなくても直接CLR_ClipBoard "" でかまいません
Sub ClipCLR()
CLR_ClipBoard ""
End Sub
Function CLR_ClipBoard(myString As String)
Dim ret As Long
'クリップボードオープン
If OpenClipboard(0&) = 0 Then
GoTo ERR1
End If
'クリップボードクリア
ret = EmptyClipboard()
'クリップボードクローズ
If CloseClipboard() = 0 Then
GoTo ERR2
End If
Exit Function
ERR1:
MsgBox "クリップボードが開けません(エラー)"
Exit Function
ERR2:
MsgBox "クリップボードが閉じれません(エラー)"
Exit Function
End Function
>>956 ひょっとして、VBAでブックを閉じる時に「クリップボードに大きな情報があります」
ってエラーを出さないようにしたいからですか?
変数にセルの情報として条件付書式設定で設定した色を
入れることはできないんですか?
「.Text」だと書式のみになってしまいます。
961 :
デフォルトの名無しさん:04/12/26 08:37:23
>>960 このあたりの事?
.Interior.ColorIndex = 6
.Interior.Pattern = xlSolid
>>961 それは色をあらかじめ指定しておかないといけない、ということですか?
964 :
デフォルトの名無しさん:04/12/27 04:02:31
If Selection = SpecialCells(xlCellTypeBlanks)
といった、もしアクティブセルが空白だったら Exit Sub する
といったのを書きたいのですがどうしてもわからないので教えてくれませんか。
まだまだ初心者ですが
If Cells(*,*)<>""Then
じゃだめかな?
966 :
デフォルトの名無しさん:04/12/27 19:08:38
vba3週間目さん、解答してもらいありがとうございます。
Cells(*,*)といった形ではなく、SelectionかActiveCellを使いたかったんですが
一応、
If Selection.Value = " " Then でできました。
If ActiveCell.Value = "" Then でもいけるし。
>>960 アクティブセルが対象だとして、条件書式の1番の色を拾うには
myColorIndex = ActiveCell.FormatConditions(1).Interior.ColorIndex
969 :
デフォルトの名無しさん:04/12/28 10:25:59
VBエディタで、nameNumberという変数を作ったとします。
naまで入力したら、何かキーを押すと補完してくれる、
という機能があったら教えて下さい。
A列の1行目から10行目の中で太字になっている数字を合計しA11に表示したい
のですが、「太字のみ」という処理がうまく出来ません。
教えていただけないでしょうか?
971 :
デフォルトの名無しさん:04/12/28 13:29:00
>>970 Public Sub test()
Dim intSUM As Integer
Dim I As Integer
intSUM = 0
For I = 1 To 10
If Range("A" & I).Font.Bold = True Then
intSUM = intSUM + Int(Range("A" & I).Text)
End If
Next I
Range("A11") = intSUM
End Sub
すみません、馬鹿な質問かもしれません・・・が、教えてください。
JISコードをSJISに変換する関数とかってありますでしょうか?
975 :
デフォルトの名無しさん:05/01/01 14:14:05
∧_∧ ┌────────────
◯( ´∀` )◯ < あけおめ!
\ / └────────────
_/ __ \_
(_/ \_)
lll
976 :
デフォルトの名無しさん:05/01/03 00:35:05
VBAのuserform上に線とか四角形など
描くことってできるのでしょうか?
書ける